static sched_kw_gruptree_type * sched_kw_gruptree_copyc(const sched_kw_gruptree_type * src) { sched_kw_gruptree_type * target = sched_kw_gruptree_alloc_empty(); hash_iter_type * iter = hash_iter_alloc(src->gruptree_hash); const char * kw = hash_iter_get_next_key(iter); while (kw != NULL) { char * parent_name = hash_get_string(src->gruptree_hash , kw); hash_insert_string( target->gruptree_hash , kw , parent_name); kw = hash_iter_get_next_key(iter); } hash_iter_free(iter); return target; }
void test_define(config_parser_type * config , const char * config_file) { hash_type * pre_defined_kw_map = hash_alloc(); hash_insert_string(pre_defined_kw_map, "<CONFIG_FILE>", "TEST_VALUE"); config_content_type * content = config_parse( config , config_file , NULL , NULL , "DEFINE" , pre_defined_kw_map , CONFIG_UNRECOGNIZED_IGNORE , true ); hash_free(pre_defined_kw_map); test_assert_true( config_content_is_instance( content )); test_assert_true(config_content_is_valid( content )); { const subst_list_type * define_list = config_content_get_define_list( content ); test_assert_true( subst_list_has_key( define_list , "VAR1")); test_assert_true( subst_list_has_key( define_list , "VAR2")); test_assert_true( subst_list_has_key( define_list , "VARX")); test_assert_true( subst_list_has_key( define_list , "<CONFIG_FILE>")); test_assert_false( subst_list_has_key( define_list , "VARY")); test_assert_string_equal( subst_list_get_value( define_list , "VAR1") , "100"); test_assert_string_equal( subst_list_get_value( define_list , "VAR2") , "10"); test_assert_string_equal( subst_list_get_value( define_list , "VARX") , "1"); test_assert_string_equal( subst_list_get_value( define_list , "<CONFIG_FILE>") , "TEST_VALUE"); } config_content_free( content ); }
pktmeta_type_t pktmeta_type_from_name(const char *name) { pktmeta_type_t t; void *o; if (s_registered_types == NULL) { s_registered_types = hash_new(allocator_shared(), HASHKEYS_STRING, NULL, NULL); } o = hash_lookup_string(s_registered_types, name); if (o == NULL) { /* create new type */ s_type_counter++; /* after incr s_type_counter is the new type id */ t = s_type_counter; hash_insert_string(s_registered_types, name, (void *) (uint32_t) t); } else { t = (pktmeta_type_t) (uint32_t) o; } return t; }
static void sched_kw_gruptree_add_well(sched_kw_gruptree_type * kw , const char * child_group , const char * parent_group) { hash_insert_string(kw->gruptree_hash, child_group , parent_group); }