//This stream module demands alternating characters from the two sides. #include #include "pushy.h" typedef struct {dnode dn; unode* un;} altS; static void interleave(char c, dnode * n, unode* p){ altS* pa = (altS*)n; unode* swp = pa->un; pa->un = p; (n->nsn->code)(c, n->nsn, swp);} dnode* cinterleave(dnode* dn, unode* un){ altS* an = (altS*)malloc(sizeof(altS)); *an = (altS){(dnode){interleave, dn}, un}; return &an->dn;}