コード例 #1
0
ファイル: cstl_map_private.c プロジェクト: coderXing/libcstl
/**
 * Create map container auxiliary function.
 */
bool_t _create_map_auxiliary(map_t* pmap_map, const char* s_typename)
{
    char   s_typenameex[_TYPE_NAME_SIZE + 1];
    bool_t b_result = false;

    assert(pmap_map != NULL);
    assert(s_typename != NULL);

    b_result = _create_pair_auxiliary(&pmap_map->_pair_temp, s_typename);
    if(!b_result)
    {
        return false;
    }

    memset(s_typenameex, '\0', _TYPE_NAME_SIZE + 1);
    strncpy(s_typenameex, "pair_t", _TYPE_NAME_SIZE);
    strncat(s_typenameex, "<", _TYPE_NAME_SIZE);
    strncat(s_typenameex, s_typename, _TYPE_NAME_SIZE - 8); /* 8 is length of "pair_t<>" */
    strncat(s_typenameex, ">", _TYPE_NAME_SIZE);

#ifdef CSTL_MAP_AVL_TREE
    b_result = _create_avl_tree_auxiliary(&pmap_map->_t_tree, s_typenameex);
#else
    b_result = _create_rb_tree_auxiliary(&pmap_map->_t_tree, s_typenameex);
#endif

    pmap_map->_bfun_keycompare = NULL;
    pmap_map->_bfun_valuecompare = NULL;

    return b_result;
}
コード例 #2
0
ファイル: cstl_set_private.c プロジェクト: Aluonna/libcstl
/**
 * Create set container auxiliary function.
 */
bool_t _create_set_auxiliary(set_t* pset_set, const char* s_typename)
{
    assert(pset_set != NULL);
    assert(s_typename != NULL);

#ifdef CSTL_SET_AVL_TREE
    return _create_avl_tree_auxiliary(&pset_set->_t_tree, s_typename);
#else
    return _create_rb_tree_auxiliary(&pset_set->_t_tree, s_typename);
#endif
}
コード例 #3
0
ファイル: cstl_avl_tree.c プロジェクト: ChenHui109/libcstl
/**
 * Create avl tree container.
 */
_avl_tree_t* _create_avl_tree(const char* s_typename)
{
    _avl_tree_t* pt_avl_tree = NULL;

    if ((pt_avl_tree = (_avl_tree_t*)malloc(sizeof(_avl_tree_t))) == NULL) {
        return NULL;
    }

    if (!_create_avl_tree_auxiliary(pt_avl_tree, s_typename)) {
        free(pt_avl_tree);
        return NULL;
    }

    return pt_avl_tree;
}