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;
}
示例#2
0
文件: extstruct.c 项目: drpicox/mcxx
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;
    }
}