STATIC_ROUTINE void check_nid(PINO_DATABASE *dblist, NID *nid, int *count) { int bitnum = nid->node; if (!getbit(bitnum)) { NODE *node; NODE *descendent; nid_to_node(dblist, nid, node); if (count) (*count)++; setbit(bitnum); for (descendent = member_of(node); descendent; descendent = brother_of(descendent)) { NID nid; node_to_nid(dblist, descendent, (&nid)); check_nid(dblist, &nid, count); } for (descendent = child_of(node); descendent; descendent = brother_of(descendent)) { NID nid; node_to_nid(dblist, descendent, (&nid)); check_nid(dblist, &nid, count); } if (swapshort((char *)&node->conglomerate_elt)) { NID elt_nid; NODE *elt_node; unsigned short elt_num = 1; elt_nid.node = nid->node - swapshort((char *)&node->conglomerate_elt) + 1; elt_nid.tree = nid->tree; nid_to_node(dblist, (&elt_nid), elt_node); for (; swapshort((char *)&elt_node->conglomerate_elt) == elt_num; elt_nid.node++, elt_num++, elt_node++) check_nid(dblist, &elt_nid, count); } } }
int _TreeDeleteNodeInitialize(void *dbid, int nidin, int *count, int reset) { PINO_DATABASE *dblist = (PINO_DATABASE *)dbid; NID *nid = (NID *)&nidin; static int list_vm = 0; int vm_needed; if (!IS_OPEN_FOR_EDIT(dblist)) return TreeNOEDIT; vm_needed = dblist->tree_info->header->nodes / 8 + 4; if (vm_needed != list_vm) { unsigned char *old_list = TREE_DELETE_LIST; TREE_DELETE_LIST = malloc(vm_needed); if (!TREE_DELETE_LIST) return TreeFAILURE; if (reset) { memset(TREE_DELETE_LIST,0,vm_needed); if (count) *count = 0; } else { memcpy(TREE_DELETE_LIST,old_list,(list_vm < vm_needed) ? list_vm : vm_needed); if (vm_needed > list_vm) memset(TREE_DELETE_LIST+list_vm,0,vm_needed-list_vm); } if (list_vm) free(old_list); list_vm = vm_needed; } else if (reset) { memset(TREE_DELETE_LIST,0,list_vm); if (count) *count = 0; } if (nidin) check_nid(dblist, nid, count); return TreeNORMAL; }
int main(void) { int init_res; puts("\nRIOT netdev test"); dev = NETDEV_DEFAULT; if (dev == NULL) { puts("Default device was NULL"); return 1; } printf("Initialized dev "); switch (dev->type) { case NETDEV_TYPE_UNKNOWN: printf("of unknown type\n"); break; case NETDEV_TYPE_BASE: printf("as basic device\n"); break; default: printf("of undefined type\n"); break; } if (dev->driver == NULL) { puts("Default driver is defined as NULL!"); return 1; } dev->driver->init(dev); if (!(init_res = init_channel())) { return 1; } if (check_channel() == 0) { printf("Channel is not as expected. "); if (init_res == 2) { printf("But initialization is not supported. Continuing.\n"); } else { printf("Aborting\n"); return 1; } } if (!(init_res = init_address())) { return 1; } if (check_address() == 0) { printf("Address is not as expected. "); if (init_res == 2) { printf("But initialization is not supported. Continuing.\n"); } else { printf("Aborting\n"); return 1; } } if (!(init_res = init_long_address())) { return 1; } if (check_long_address() == 0) { printf("Long address is not as expected. "); if (init_res == 2) { printf("But initialization is not supported. Continuing.\n"); } else { printf("Aborting\n"); return 1; } } if (!(init_res = init_nid())) { return 1; } if (check_nid() == 0) { printf("Network ID is not as expected. "); if (init_res == 2) { printf("But initialization is not supported. Continuing.\n"); } else { printf("Aborting\n"); return 1; } } if (check_max_packet_size() == 0) { return 1; } if (check_protocol() == 0) { return 1; } if (!init_state()) { return 1; } if (!check_state()) { return 1; } #ifdef SENDER if (!send_packet()) { return 1; } #elif RECEIVER if (!init_receiver_callback()) { return 1; } #endif return 0; }