1struct data {
2    int prio;
3    signed char status;
4};
5
6struct base {
7    unsigned _num;
8    struct data vec[10];
9};
10
11static struct data *ix(struct base *base, unsigned i)
12{
13    return &base->vec[i];
14}
15
16struct heap {
17    struct base base;
18};
19
20struct heap *heap;
21
22void increase_insn_priority (int *fld, int amount)
23{
24    if (ix(heap ? &heap->base : 0, *fld)->status > 0)
25	ix(heap ? &heap->base : 0, *fld)->prio += amount;
26}
27