int dllist_test() { struct mynode *mn[NUM_NODES]; LPDL_NODE node; struct mynode *data; /* *insert */ int i = 0; Debug_Message(LOG_FULL, "insert node from 1 to NUM_NODES(32): \n"); for (; i < NUM_NODES; i++) { mn[i] = (struct mynode *)malloc(sizeof(struct mynode)); mn[i]->string = (char *)malloc(sizeof(char) * 4); sprintf(mn[i]->string, "%d", i); dll_insert(&mytree, mn[i]); } /* *search */ Debug_Message(LOG_FULL, "search all nodes: \n"); for (node = dl_first(&mytree); node; node = dl_next(node)) { struct mynode *data; container_of(data, node, struct mynode, node); Debug_Message(LOG_TEST, "key = %s\n", data->string); } /* *delete */ Debug_Message(LOG_FULL, "delete node 0: \n"); data = dll_search(&mytree, "0"); if (data) { dl_remove_node(&data->node, &mytree); dll_free(data); } /* *delete again*/ Debug_Message(LOG_FULL, "delete node 10: \n"); data = dll_search(&mytree, "10"); if (data) { dl_remove_node(&data->node, &mytree); dll_free(data); } /* *delete once again*/ Debug_Message(LOG_FULL, "delete node 31: \n"); data = dll_search(&mytree, "31"); if (data) { dl_remove_node(&data->node, &mytree); dll_free(data); } /* *search again*/ Debug_Message(LOG_FULL, "search again:\n"); for (node = dl_first(&mytree); node; node = dl_next(node)) { struct mynode *data; container_of(data, node, struct mynode, node); Debug_Message(LOG_TEST,"key = %s\n", data->string); } return 0; }
struct mynode * dll_search(LPDL_ROOT root, char *string) { LPDL_NODE node = dl_first(root); while (node) { struct mynode *data; int result; container_of(data, node, struct mynode, node); result = strcmp(string, data->string); if (result != 0) { node = node->dl_next; } else { return data; } } return NULL; }
int ReleaseCache(INT h) { LPCACHE_NODE pNode = GNull; LPCACHE_NODE pFree = GNull; LPCACHE_HANDLE handle = (LPCACHE_HANDLE)h; LPDL_NODE node; int ret = 0; if (handle == GNull) { return -1; } node = dl_first(&(handle->mDLRoot)); while (node) { container_of(pNode, node, CACHE_NODE, mDLNode); node = dl_next(node); cache_data_release(&(pNode->mData)); GMemFree(pNode); } GMemFree(handle); return ret; }
void lshift() { struct datum *res, *a, *b; if (stack == stack->next || stack == stack->next->next) { printf("stack empty\n"); return; } res = (struct datum *)malloc(sizeof(struct datum)); if (!res) { printf("no memory\n"); return; } a = (struct datum *)stack->next->next->item; b = (struct datum *)stack->next->item; implicit_conversion(&res->type, &res->base, a->type, a->base, b->type, b->base); switch (res->type) { case i: if (a->type == c && b->type == c) res->t.i = a->t.c << b->t.c; else if (a->type == c && b->type == sc) res->t.i = a->t.c << b->t.sc; else if (a->type == c && b->type == uc) res->t.i = a->t.c << b->t.uc; else if (a->type == c && b->type == s) res->t.i = a->t.c << b->t.s; else if (a->type == c && b->type == i) res->t.i = a->t.c << b->t.i; else if (a->type == c && b->type == l) res->t.i = a->t.c << b->t.l; else if (a->type == c && b->type == us) res->t.i = a->t.c << b->t.us; else if (a->type == c && b->type == u) res->t.i = a->t.c << b->t.u; else if (a->type == c && b->type == ul) res->t.i = a->t.c << b->t.ul; else if (a->type == sc && b->type == c) res->t.i = a->t.sc << b->t.c; else if (a->type == sc && b->type == sc) res->t.i = a->t.sc << b->t.sc; else if (a->type == sc && b->type == uc) res->t.i = a->t.sc << b->t.uc; else if (a->type == sc && b->type == s) res->t.i = a->t.sc << b->t.s; else if (a->type == sc && b->type == i) res->t.i = a->t.sc << b->t.i; else if (a->type == sc && b->type == l) res->t.i = a->t.sc << b->t.l; else if (a->type == sc && b->type == us) res->t.i = a->t.sc << b->t.us; else if (a->type == sc && b->type == u) res->t.i = a->t.sc << b->t.u; else if (a->type == sc && b->type == ul) res->t.i = a->t.sc << b->t.ul; else if (a->type == uc && b->type == c) res->t.i = a->t.uc << b->t.c; else if (a->type == uc && b->type == sc) res->t.i = a->t.uc << b->t.sc; else if (a->type == uc && b->type == uc) res->t.i = a->t.uc << b->t.uc; else if (a->type == uc && b->type == s) res->t.i = a->t.uc << b->t.s; else if (a->type == uc && b->type == i) res->t.i = a->t.uc << b->t.i; else if (a->type == uc && b->type == l) res->t.i = a->t.uc << b->t.l; else if (a->type == uc && b->type == us) res->t.i = a->t.uc << b->t.us; else if (a->type == uc && b->type == u) res->t.i = a->t.uc << b->t.u; else if (a->type == uc && b->type == ul) res->t.i = a->t.uc << b->t.ul; else if (a->type == s && b->type == c) res->t.i = a->t.s << b->t.c; else if (a->type == s && b->type == sc) res->t.i = a->t.s << b->t.sc; else if (a->type == s && b->type == uc) res->t.i = a->t.s << b->t.uc; else if (a->type == s && b->type == s) res->t.i = a->t.s << b->t.s; else if (a->type == s && b->type == i) res->t.i = a->t.s << b->t.i; else if (a->type == s && b->type == l) res->t.i = a->t.s << b->t.l; else if (a->type == s && b->type == us) res->t.i = a->t.s << b->t.us; else if (a->type == s && b->type == u) res->t.i = a->t.s << b->t.u; else if (a->type == s && b->type == ul) res->t.i = a->t.s << b->t.ul; else if (a->type == i && b->type == c) res->t.i = a->t.i << b->t.c; else if (a->type == i && b->type == sc) res->t.i = a->t.i << b->t.sc; else if (a->type == i && b->type == uc) res->t.i = a->t.i << b->t.uc; else if (a->type == i && b->type == s) res->t.i = a->t.i << b->t.s; else if (a->type == i && b->type == i) res->t.i = a->t.i << b->t.i; else if (a->type == i && b->type == l) res->t.i = a->t.i << b->t.l; else if (a->type == i && b->type == us) res->t.i = a->t.i << b->t.us; else if (a->type == i && b->type == u) res->t.i = a->t.i << b->t.u; else if (a->type == i && b->type == ul) res->t.i = a->t.i << b->t.ul; else if (a->type == l && b->type == c) res->t.i = a->t.l << b->t.c; else if (a->type == l && b->type == sc) res->t.i = a->t.l << b->t.sc; else if (a->type == l && b->type == uc) res->t.i = a->t.l << b->t.uc; else if (a->type == l && b->type == s) res->t.i = a->t.l << b->t.s; else if (a->type == l && b->type == i) res->t.i = a->t.l << b->t.i; else if (a->type == l && b->type == l) res->t.i = a->t.l << b->t.l; else if (a->type == l && b->type == us) res->t.i = a->t.l << b->t.us; else if (a->type == l && b->type == u) res->t.i = a->t.l << b->t.u; else if (a->type == l && b->type == ul) res->t.i = a->t.l << b->t.ul; else if (a->type == us && b->type == c) res->t.i = a->t.us << b->t.c; else if (a->type == us && b->type == sc) res->t.i = a->t.us << b->t.sc; else if (a->type == us && b->type == uc) res->t.i = a->t.us << b->t.uc; else if (a->type == us && b->type == s) res->t.i = a->t.us << b->t.s; else if (a->type == us && b->type == i) res->t.i = a->t.us << b->t.i; else if (a->type == us && b->type == l) res->t.i = a->t.us << b->t.l; else if (a->type == us && b->type == us) res->t.i = a->t.us << b->t.us; else if (a->type == us && b->type == u) res->t.i = a->t.us << b->t.u; else if (a->type == us && b->type == ul) res->t.i = a->t.us << b->t.ul; else if (a->type == u && b->type == c) res->t.i = a->t.u << b->t.c; else if (a->type == u && b->type == sc) res->t.i = a->t.u << b->t.sc; else if (a->type == u && b->type == uc) res->t.i = a->t.u << b->t.uc; else if (a->type == u && b->type == s) res->t.i = a->t.u << b->t.s; else if (a->type == u && b->type == i) res->t.i = a->t.u << b->t.i; else if (a->type == u && b->type == l) res->t.i = a->t.u << b->t.l; else if (a->type == u && b->type == us) res->t.i = a->t.u << b->t.us; else if (a->type == u && b->type == u) res->t.i = a->t.u << b->t.u; else if (a->type == u && b->type == ul) res->t.i = a->t.u << b->t.ul; else if (a->type == ul && b->type == c) res->t.i = a->t.ul << b->t.c; else if (a->type == ul && b->type == sc) res->t.i = a->t.ul << b->t.sc; else if (a->type == ul && b->type == uc) res->t.i = a->t.ul << b->t.uc; else if (a->type == ul && b->type == s) res->t.i = a->t.ul << b->t.s; else if (a->type == ul && b->type == i) res->t.i = a->t.ul << b->t.i; else if (a->type == ul && b->type == l) res->t.i = a->t.ul << b->t.l; else if (a->type == ul && b->type == us) res->t.i = a->t.ul << b->t.us; else if (a->type == ul && b->type == u) res->t.i = a->t.ul << b->t.u; else if (a->type == ul && b->type == ul) res->t.i = a->t.ul << b->t.ul; break; case l: if (a->type == c && b->type == c) res->t.l = a->t.c << b->t.c; else if (a->type == c && b->type == sc) res->t.l = a->t.c << b->t.sc; else if (a->type == c && b->type == uc) res->t.l = a->t.c << b->t.uc; else if (a->type == c && b->type == s) res->t.l = a->t.c << b->t.s; else if (a->type == c && b->type == i) res->t.l = a->t.c << b->t.i; else if (a->type == c && b->type == l) res->t.l = a->t.c << b->t.l; else if (a->type == c && b->type == us) res->t.l = a->t.c << b->t.us; else if (a->type == c && b->type == u) res->t.l = a->t.c << b->t.u; else if (a->type == c && b->type == ul) res->t.l = a->t.c << b->t.ul; else if (a->type == sc && b->type == c) res->t.l = a->t.sc << b->t.c; else if (a->type == sc && b->type == sc) res->t.l = a->t.sc << b->t.sc; else if (a->type == sc && b->type == uc) res->t.l = a->t.sc << b->t.uc; else if (a->type == sc && b->type == s) res->t.l = a->t.sc << b->t.s; else if (a->type == sc && b->type == i) res->t.l = a->t.sc << b->t.i; else if (a->type == sc && b->type == l) res->t.l = a->t.sc << b->t.l; else if (a->type == sc && b->type == us) res->t.l = a->t.sc << b->t.us; else if (a->type == sc && b->type == u) res->t.l = a->t.sc << b->t.u; else if (a->type == sc && b->type == ul) res->t.l = a->t.sc << b->t.ul; else if (a->type == uc && b->type == c) res->t.l = a->t.uc << b->t.c; else if (a->type == uc && b->type == sc) res->t.l = a->t.uc << b->t.sc; else if (a->type == uc && b->type == uc) res->t.l = a->t.uc << b->t.uc; else if (a->type == uc && b->type == s) res->t.l = a->t.uc << b->t.s; else if (a->type == uc && b->type == i) res->t.l = a->t.uc << b->t.i; else if (a->type == uc && b->type == l) res->t.l = a->t.uc << b->t.l; else if (a->type == uc && b->type == us) res->t.l = a->t.uc << b->t.us; else if (a->type == uc && b->type == u) res->t.l = a->t.uc << b->t.u; else if (a->type == uc && b->type == ul) res->t.l = a->t.uc << b->t.ul; else if (a->type == s && b->type == c) res->t.l = a->t.s << b->t.c; else if (a->type == s && b->type == sc) res->t.l = a->t.s << b->t.sc; else if (a->type == s && b->type == uc) res->t.l = a->t.s << b->t.uc; else if (a->type == s && b->type == s) res->t.l = a->t.s << b->t.s; else if (a->type == s && b->type == i) res->t.l = a->t.s << b->t.i; else if (a->type == s && b->type == l) res->t.l = a->t.s << b->t.l; else if (a->type == s && b->type == us) res->t.l = a->t.s << b->t.us; else if (a->type == s && b->type == u) res->t.l = a->t.s << b->t.u; else if (a->type == s && b->type == ul) res->t.l = a->t.s << b->t.ul; else if (a->type == i && b->type == c) res->t.l = a->t.i << b->t.c; else if (a->type == i && b->type == sc) res->t.l = a->t.i << b->t.sc; else if (a->type == i && b->type == uc) res->t.l = a->t.i << b->t.uc; else if (a->type == i && b->type == s) res->t.l = a->t.i << b->t.s; else if (a->type == i && b->type == i) res->t.l = a->t.i << b->t.i; else if (a->type == i && b->type == l) res->t.l = a->t.i << b->t.l; else if (a->type == i && b->type == us) res->t.l = a->t.i << b->t.us; else if (a->type == i && b->type == u) res->t.l = a->t.i << b->t.u; else if (a->type == i && b->type == ul) res->t.l = a->t.i << b->t.ul; else if (a->type == l && b->type == c) res->t.l = a->t.l << b->t.c; else if (a->type == l && b->type == sc) res->t.l = a->t.l << b->t.sc; else if (a->type == l && b->type == uc) res->t.l = a->t.l << b->t.uc; else if (a->type == l && b->type == s) res->t.l = a->t.l << b->t.s; else if (a->type == l && b->type == i) res->t.l = a->t.l << b->t.i; else if (a->type == l && b->type == l) res->t.l = a->t.l << b->t.l; else if (a->type == l && b->type == us) res->t.l = a->t.l << b->t.us; else if (a->type == l && b->type == u) res->t.l = a->t.l << b->t.u; else if (a->type == l && b->type == ul) res->t.l = a->t.l << b->t.ul; else if (a->type == us && b->type == c) res->t.l = a->t.us << b->t.c; else if (a->type == us && b->type == sc) res->t.l = a->t.us << b->t.sc; else if (a->type == us && b->type == uc) res->t.l = a->t.us << b->t.uc; else if (a->type == us && b->type == s) res->t.l = a->t.us << b->t.s; else if (a->type == us && b->type == i) res->t.l = a->t.us << b->t.i; else if (a->type == us && b->type == l) res->t.l = a->t.us << b->t.l; else if (a->type == us && b->type == us) res->t.l = a->t.us << b->t.us; else if (a->type == us && b->type == u) res->t.l = a->t.us << b->t.u; else if (a->type == us && b->type == ul) res->t.l = a->t.us << b->t.ul; else if (a->type == u && b->type == c) res->t.l = a->t.u << b->t.c; else if (a->type == u && b->type == sc) res->t.l = a->t.u << b->t.sc; else if (a->type == u && b->type == uc) res->t.l = a->t.u << b->t.uc; else if (a->type == u && b->type == s) res->t.l = a->t.u << b->t.s; else if (a->type == u && b->type == i) res->t.l = a->t.u << b->t.i; else if (a->type == u && b->type == l) res->t.l = a->t.u << b->t.l; else if (a->type == u && b->type == us) res->t.l = a->t.u << b->t.us; else if (a->type == u && b->type == u) res->t.l = a->t.u << b->t.u; else if (a->type == u && b->type == ul) res->t.l = a->t.u << b->t.ul; else if (a->type == ul && b->type == c) res->t.l = a->t.ul << b->t.c; else if (a->type == ul && b->type == sc) res->t.l = a->t.ul << b->t.sc; else if (a->type == ul && b->type == uc) res->t.l = a->t.ul << b->t.uc; else if (a->type == ul && b->type == s) res->t.l = a->t.ul << b->t.s; else if (a->type == ul && b->type == i) res->t.l = a->t.ul << b->t.i; else if (a->type == ul && b->type == l) res->t.l = a->t.ul << b->t.l; else if (a->type == ul && b->type == us) res->t.l = a->t.ul << b->t.us; else if (a->type == ul && b->type == u) res->t.l = a->t.ul << b->t.u; else if (a->type == ul && b->type == ul) res->t.l = a->t.ul << b->t.ul; break; case u: if (a->type == c && b->type == c) res->t.u = a->t.c << b->t.c; else if (a->type == c && b->type == sc) res->t.u = a->t.c << b->t.sc; else if (a->type == c && b->type == uc) res->t.u = a->t.c << b->t.uc; else if (a->type == c && b->type == s) res->t.u = a->t.c << b->t.s; else if (a->type == c && b->type == i) res->t.u = a->t.c << b->t.i; else if (a->type == c && b->type == l) res->t.u = a->t.c << b->t.l; else if (a->type == c && b->type == us) res->t.u = a->t.c << b->t.us; else if (a->type == c && b->type == u) res->t.u = a->t.c << b->t.u; else if (a->type == c && b->type == ul) res->t.u = a->t.c << b->t.ul; else if (a->type == sc && b->type == c) res->t.u = a->t.sc << b->t.c; else if (a->type == sc && b->type == sc) res->t.u = a->t.sc << b->t.sc; else if (a->type == sc && b->type == uc) res->t.u = a->t.sc << b->t.uc; else if (a->type == sc && b->type == s) res->t.u = a->t.sc << b->t.s; else if (a->type == sc && b->type == i) res->t.u = a->t.sc << b->t.i; else if (a->type == sc && b->type == l) res->t.u = a->t.sc << b->t.l; else if (a->type == sc && b->type == us) res->t.u = a->t.sc << b->t.us; else if (a->type == sc && b->type == u) res->t.u = a->t.sc << b->t.u; else if (a->type == sc && b->type == ul) res->t.u = a->t.sc << b->t.ul; else if (a->type == uc && b->type == c) res->t.u = a->t.uc << b->t.c; else if (a->type == uc && b->type == sc) res->t.u = a->t.uc << b->t.sc; else if (a->type == uc && b->type == uc) res->t.u = a->t.uc << b->t.uc; else if (a->type == uc && b->type == s) res->t.u = a->t.uc << b->t.s; else if (a->type == uc && b->type == i) res->t.u = a->t.uc << b->t.i; else if (a->type == uc && b->type == l) res->t.u = a->t.uc << b->t.l; else if (a->type == uc && b->type == us) res->t.u = a->t.uc << b->t.us; else if (a->type == uc && b->type == u) res->t.u = a->t.uc << b->t.u; else if (a->type == uc && b->type == ul) res->t.u = a->t.uc << b->t.ul; else if (a->type == s && b->type == c) res->t.u = a->t.s << b->t.c; else if (a->type == s && b->type == sc) res->t.u = a->t.s << b->t.sc; else if (a->type == s && b->type == uc) res->t.u = a->t.s << b->t.uc; else if (a->type == s && b->type == s) res->t.u = a->t.s << b->t.s; else if (a->type == s && b->type == i) res->t.u = a->t.s << b->t.i; else if (a->type == s && b->type == l) res->t.u = a->t.s << b->t.l; else if (a->type == s && b->type == us) res->t.u = a->t.s << b->t.us; else if (a->type == s && b->type == u) res->t.u = a->t.s << b->t.u; else if (a->type == s && b->type == ul) res->t.u = a->t.s << b->t.ul; else if (a->type == i && b->type == c) res->t.u = a->t.i << b->t.c; else if (a->type == i && b->type == sc) res->t.u = a->t.i << b->t.sc; else if (a->type == i && b->type == uc) res->t.u = a->t.i << b->t.uc; else if (a->type == i && b->type == s) res->t.u = a->t.i << b->t.s; else if (a->type == i && b->type == i) res->t.u = a->t.i << b->t.i; else if (a->type == i && b->type == l) res->t.u = a->t.i << b->t.l; else if (a->type == i && b->type == us) res->t.u = a->t.i << b->t.us; else if (a->type == i && b->type == u) res->t.u = a->t.i << b->t.u; else if (a->type == i && b->type == ul) res->t.u = a->t.i << b->t.ul; else if (a->type == l && b->type == c) res->t.u = a->t.l << b->t.c; else if (a->type == l && b->type == sc) res->t.u = a->t.l << b->t.sc; else if (a->type == l && b->type == uc) res->t.u = a->t.l << b->t.uc; else if (a->type == l && b->type == s) res->t.u = a->t.l << b->t.s; else if (a->type == l && b->type == i) res->t.u = a->t.l << b->t.i; else if (a->type == l && b->type == l) res->t.u = a->t.l << b->t.l; else if (a->type == l && b->type == us) res->t.u = a->t.l << b->t.us; else if (a->type == l && b->type == u) res->t.u = a->t.l << b->t.u; else if (a->type == l && b->type == ul) res->t.u = a->t.l << b->t.ul; else if (a->type == us && b->type == c) res->t.u = a->t.us << b->t.c; else if (a->type == us && b->type == sc) res->t.u = a->t.us << b->t.sc; else if (a->type == us && b->type == uc) res->t.u = a->t.us << b->t.uc; else if (a->type == us && b->type == s) res->t.u = a->t.us << b->t.s; else if (a->type == us && b->type == i) res->t.u = a->t.us << b->t.i; else if (a->type == us && b->type == l) res->t.u = a->t.us << b->t.l; else if (a->type == us && b->type == us) res->t.u = a->t.us << b->t.us; else if (a->type == us && b->type == u) res->t.u = a->t.us << b->t.u; else if (a->type == us && b->type == ul) res->t.u = a->t.us << b->t.ul; else if (a->type == u && b->type == c) res->t.u = a->t.u << b->t.c; else if (a->type == u && b->type == sc) res->t.u = a->t.u << b->t.sc; else if (a->type == u && b->type == uc) res->t.u = a->t.u << b->t.uc; else if (a->type == u && b->type == s) res->t.u = a->t.u << b->t.s; else if (a->type == u && b->type == i) res->t.u = a->t.u << b->t.i; else if (a->type == u && b->type == l) res->t.u = a->t.u << b->t.l; else if (a->type == u && b->type == us) res->t.u = a->t.u << b->t.us; else if (a->type == u && b->type == u) res->t.u = a->t.u << b->t.u; else if (a->type == u && b->type == ul) res->t.u = a->t.u << b->t.ul; else if (a->type == ul && b->type == c) res->t.u = a->t.ul << b->t.c; else if (a->type == ul && b->type == sc) res->t.u = a->t.ul << b->t.sc; else if (a->type == ul && b->type == uc) res->t.u = a->t.ul << b->t.uc; else if (a->type == ul && b->type == s) res->t.u = a->t.ul << b->t.s; else if (a->type == ul && b->type == i) res->t.u = a->t.ul << b->t.i; else if (a->type == ul && b->type == l) res->t.u = a->t.ul << b->t.l; else if (a->type == ul && b->type == us) res->t.u = a->t.ul << b->t.us; else if (a->type == ul && b->type == u) res->t.u = a->t.ul << b->t.u; else if (a->type == ul && b->type == ul) res->t.u = a->t.ul << b->t.ul; break; case ul: if (a->type == c && b->type == c) res->t.ul = a->t.c << b->t.c; else if (a->type == c && b->type == sc) res->t.ul = a->t.c << b->t.sc; else if (a->type == c && b->type == uc) res->t.ul = a->t.c << b->t.uc; else if (a->type == c && b->type == s) res->t.ul = a->t.c << b->t.s; else if (a->type == c && b->type == i) res->t.ul = a->t.c << b->t.i; else if (a->type == c && b->type == l) res->t.ul = a->t.c << b->t.l; else if (a->type == c && b->type == us) res->t.ul = a->t.c << b->t.us; else if (a->type == c && b->type == u) res->t.ul = a->t.c << b->t.u; else if (a->type == c && b->type == ul) res->t.ul = a->t.c << b->t.ul; else if (a->type == sc && b->type == c) res->t.ul = a->t.sc << b->t.c; else if (a->type == sc && b->type == sc) res->t.ul = a->t.sc << b->t.sc; else if (a->type == sc && b->type == uc) res->t.ul = a->t.sc << b->t.uc; else if (a->type == sc && b->type == s) res->t.ul = a->t.sc << b->t.s; else if (a->type == sc && b->type == i) res->t.ul = a->t.sc << b->t.i; else if (a->type == sc && b->type == l) res->t.ul = a->t.sc << b->t.l; else if (a->type == sc && b->type == us) res->t.ul = a->t.sc << b->t.us; else if (a->type == sc && b->type == u) res->t.ul = a->t.sc << b->t.u; else if (a->type == sc && b->type == ul) res->t.ul = a->t.sc << b->t.ul; else if (a->type == uc && b->type == c) res->t.ul = a->t.uc << b->t.c; else if (a->type == uc && b->type == sc) res->t.ul = a->t.uc << b->t.sc; else if (a->type == uc && b->type == uc) res->t.ul = a->t.uc << b->t.uc; else if (a->type == uc && b->type == s) res->t.ul = a->t.uc << b->t.s; else if (a->type == uc && b->type == i) res->t.ul = a->t.uc << b->t.i; else if (a->type == uc && b->type == l) res->t.ul = a->t.uc << b->t.l; else if (a->type == uc && b->type == us) res->t.ul = a->t.uc << b->t.us; else if (a->type == uc && b->type == u) res->t.ul = a->t.uc << b->t.u; else if (a->type == uc && b->type == ul) res->t.ul = a->t.uc << b->t.ul; else if (a->type == s && b->type == c) res->t.ul = a->t.s << b->t.c; else if (a->type == s && b->type == sc) res->t.ul = a->t.s << b->t.sc; else if (a->type == s && b->type == uc) res->t.ul = a->t.s << b->t.uc; else if (a->type == s && b->type == s) res->t.ul = a->t.s << b->t.s; else if (a->type == s && b->type == i) res->t.ul = a->t.s << b->t.i; else if (a->type == s && b->type == l) res->t.ul = a->t.s << b->t.l; else if (a->type == s && b->type == us) res->t.ul = a->t.s << b->t.us; else if (a->type == s && b->type == u) res->t.ul = a->t.s << b->t.u; else if (a->type == s && b->type == ul) res->t.ul = a->t.s << b->t.ul; else if (a->type == i && b->type == c) res->t.ul = a->t.i << b->t.c; else if (a->type == i && b->type == sc) res->t.ul = a->t.i << b->t.sc; else if (a->type == i && b->type == uc) res->t.ul = a->t.i << b->t.uc; else if (a->type == i && b->type == s) res->t.ul = a->t.i << b->t.s; else if (a->type == i && b->type == i) res->t.ul = a->t.i << b->t.i; else if (a->type == i && b->type == l) res->t.ul = a->t.i << b->t.l; else if (a->type == i && b->type == us) res->t.ul = a->t.i << b->t.us; else if (a->type == i && b->type == u) res->t.ul = a->t.i << b->t.u; else if (a->type == i && b->type == ul) res->t.ul = a->t.i << b->t.ul; else if (a->type == l && b->type == c) res->t.ul = a->t.l << b->t.c; else if (a->type == l && b->type == sc) res->t.ul = a->t.l << b->t.sc; else if (a->type == l && b->type == uc) res->t.ul = a->t.l << b->t.uc; else if (a->type == l && b->type == s) res->t.ul = a->t.l << b->t.s; else if (a->type == l && b->type == i) res->t.ul = a->t.l << b->t.i; else if (a->type == l && b->type == l) res->t.ul = a->t.l << b->t.l; else if (a->type == l && b->type == us) res->t.ul = a->t.l << b->t.us; else if (a->type == l && b->type == u) res->t.ul = a->t.l << b->t.u; else if (a->type == l && b->type == ul) res->t.ul = a->t.l << b->t.ul; else if (a->type == us && b->type == c) res->t.ul = a->t.us << b->t.c; else if (a->type == us && b->type == sc) res->t.ul = a->t.us << b->t.sc; else if (a->type == us && b->type == uc) res->t.ul = a->t.us << b->t.uc; else if (a->type == us && b->type == s) res->t.ul = a->t.us << b->t.s; else if (a->type == us && b->type == i) res->t.ul = a->t.us << b->t.i; else if (a->type == us && b->type == l) res->t.ul = a->t.us << b->t.l; else if (a->type == us && b->type == us) res->t.ul = a->t.us << b->t.us; else if (a->type == us && b->type == u) res->t.ul = a->t.us << b->t.u; else if (a->type == us && b->type == ul) res->t.ul = a->t.us << b->t.ul; else if (a->type == u && b->type == c) res->t.ul = a->t.u << b->t.c; else if (a->type == u && b->type == sc) res->t.ul = a->t.u << b->t.sc; else if (a->type == u && b->type == uc) res->t.ul = a->t.u << b->t.uc; else if (a->type == u && b->type == s) res->t.ul = a->t.u << b->t.s; else if (a->type == u && b->type == i) res->t.ul = a->t.u << b->t.i; else if (a->type == u && b->type == l) res->t.ul = a->t.u << b->t.l; else if (a->type == u && b->type == us) res->t.ul = a->t.u << b->t.us; else if (a->type == u && b->type == u) res->t.ul = a->t.u << b->t.u; else if (a->type == u && b->type == ul) res->t.ul = a->t.u << b->t.ul; else if (a->type == ul && b->type == c) res->t.ul = a->t.ul << b->t.c; else if (a->type == ul && b->type == sc) res->t.ul = a->t.ul << b->t.sc; else if (a->type == ul && b->type == uc) res->t.ul = a->t.ul << b->t.uc; else if (a->type == ul && b->type == s) res->t.ul = a->t.ul << b->t.s; else if (a->type == ul && b->type == i) res->t.ul = a->t.ul << b->t.i; else if (a->type == ul && b->type == l) res->t.ul = a->t.ul << b->t.l; else if (a->type == ul && b->type == us) res->t.ul = a->t.ul << b->t.us; else if (a->type == ul && b->type == u) res->t.ul = a->t.ul << b->t.u; else if (a->type == ul && b->type == ul) res->t.ul = a->t.ul << b->t.ul; break; default: abort(); } dl_delete_item(dl_first(stack)); dl_delete_item(dl_first(stack)); dl_insert_a(stack, res); }
/* bitwise complement */ void bit_comp() { struct datum *res, *a; if (stack == stack->next) { printf("stack empty\n"); return; } res = (struct datum *)malloc(sizeof(struct datum)); if (!res) { printf("no memory\n"); return; } a = (struct datum *)stack->next->item; res->type = a->type; res->base = a->base; switch (res->type) { case i: if (a->type == c) res->t.i = ~a->t.c; else if (a->type == sc) res->t.i = ~a->t.sc; else if (a->type == uc) res->t.i = ~a->t.uc; else if (a->type == s) res->t.i = ~a->t.s; else if (a->type == i) res->t.i = ~a->t.i; else if (a->type == l) res->t.i = ~a->t.l; else if (a->type == us) res->t.i = ~a->t.us; else if (a->type == u) res->t.i = ~a->t.u; else if (a->type == ul) res->t.i = ~a->t.ul; break; case l: if (a->type == c) res->t.l = ~a->t.c; else if (a->type == sc) res->t.l = ~a->t.sc; else if (a->type == uc) res->t.l = ~a->t.uc; else if (a->type == s) res->t.l = ~a->t.s; else if (a->type == i) res->t.l = ~a->t.i; else if (a->type == l) res->t.l = ~a->t.l; else if (a->type == us) res->t.l = ~a->t.us; else if (a->type == u) res->t.l = ~a->t.u; else if (a->type == ul) res->t.l = ~a->t.ul; break; case u: if (a->type == c) res->t.u = ~a->t.c; else if (a->type == sc) res->t.u = ~a->t.sc; else if (a->type == uc) res->t.u = ~a->t.uc; else if (a->type == s) res->t.u = ~a->t.s; else if (a->type == i) res->t.u = ~a->t.i; else if (a->type == l) res->t.u = ~a->t.l; else if (a->type == us) res->t.u = ~a->t.us; else if (a->type == u) res->t.u = ~a->t.u; else if (a->type == ul) res->t.u = ~a->t.ul; break; case ul: if (a->type == c) res->t.ul = ~a->t.c; else if (a->type == sc) res->t.ul = ~a->t.sc; else if (a->type == uc) res->t.ul = ~a->t.uc; else if (a->type == s) res->t.ul = ~a->t.s; else if (a->type == i) res->t.ul = ~a->t.i; else if (a->type == l) res->t.ul = ~a->t.l; else if (a->type == us) res->t.ul = ~a->t.us; else if (a->type == u) res->t.ul = ~a->t.u; else if (a->type == ul) res->t.ul = ~a->t.ul; break; default: fprintf(stderr, "aborting...\n"); abort(); } dl_delete_item(dl_first(stack)); dl_insert_a(stack, res); }
int main(int argc, char *argv[]) { struct dlist *node, list, *trav; struct list list2; cat_time_t ct; int arr1[] = { 10, 15, 5, 7, 12, 2, 7 }, arr2[] = { 9, 1, 6, 10, 6 }, s1 = sizeof(arr1) / sizeof(arr1[0]), s2 = sizeof(arr2) / sizeof(arr1[0]), i, j = 0; printf("Initial: "); for ( i = 0 ; i < s1 ; ++i ) printf("%u/%u ", ++j, arr1[i]); printf(" | "); for ( i = 0 ; i < s2 ; ++i ) printf("%u/%u ", ++j, arr2[i]); printf("\n"); j=0; dl_init(&list, tm_zero); for ( i = 0 ; i < s1 ; ++i ) { ++j; node = cdl_new(tm_lset(arr1[i], 0), int2ptr(j)); dl_ins(&list, node); } dl_first(&list, &ct); printf("The first is at %u\n", (uint)tm_sec(ct)); node = dl_deq(&list); printf("The first was %u at %u\n\n", (uint)ptr2uint(cdl_data(node)), (uint)tm_sec(node->ttl)); cdl_free(node); printf("Nodes from advance 10: "); l_init(&list2); dl_adv(&list, tm_lset(10, 0), &list2); while ( ! l_isempty(&list2) ) { trav = container(l_head(&list2), struct dlist, entry); printf("%u/%u ", (uint)ptr2uint(cdl_data(trav)), (uint)tm_sec(trav->ttl)); l_rem(&trav->entry); cdl_free(trav); } printf("\n\n"); for ( i = 0 ; i < s2 ; ++i ) { ++j; node = cdl_new(tm_lset(arr2[i], 0), int2ptr(j)); dl_ins(&list, node); } printf("After inserting arr2 array is :\n\t"); while ( node = dl_deq(&list) ) { printf("%u/", (uint)ptr2uint(cdl_data(node))); printf("%u ", (uint)tm_sec(node->ttl)); cdl_free(node); } printf("\n"); return 0; }