rb_red_blk_node * rb_tree_insert(rb_red_blk_tree* tree, const void* key, void* info) { rb_red_blk_node* node = NULL; if ((node = rb_tree_query(tree, key))) { // Update node->info = info; } else { // Add node = rb_tree_add(tree, key, info); } return node; }
void* extensible_struct_get_field(extensible_struct_t* extensible_struct, const char* field_name) { if (extensible_struct->hash == NULL) return NULL; rb_red_blk_node* n = rb_tree_query(extensible_struct->hash, uniquestr(field_name)); if (n != NULL) { return rb_node_get_info(n); } else { return NULL; } }