/* make instructions for handling a single crossing */ static void o_one_make(word *n, dllink **boundary, word *going_in, crossing *k, word which, Instruct *answer) { word i, done; /* Move one crossing into the solved region */ o_add(n, boundary, going_in, k, which, answer); /* Join as many adjacent boundary pairs as possible */ for (done = 0; !done;) { for (i = *n, done = 1; done && (--i >= 0);) { if (*n == 2) break; /* do not shrink to nothing */ o_delete(n, boundary, going_in, answer, &done, i); } } answer->newn = *n; }
int o_add_u8(struct options *o, u8 type, u8 val) { return o_add(o,type,1,&val); }
int o_add_u16(struct options *o, u8 type, u16 val) { return o_add(o,type,2,&val); }
int o_add_u32(struct options *o, u8 type, u32 val) { return o_add(o,type,4,&val); }
int o_add_u64(struct options *o, u8 type, u64 val) { return o_add(o,type,8,&val); }