/** * lt_script_db_new: * * Create a new instance of a #lt_script_db_t. * * Returns: (transfer full): a new instance of #lt_script_db_t. */ lt_script_db_t * lt_script_db_new(void) { lt_script_db_t *retval = lt_mem_alloc_object(sizeof (lt_script_db_t)); if (retval) { lt_error_t *err = NULL; lt_script_t *le; LT_ITER_TMPL_INIT (&retval->parent, _lt_script_db); retval->script_entries = lt_trie_new(); lt_mem_add_ref((lt_mem_t *)retval, retval->script_entries, (lt_destroy_func_t)lt_trie_unref); le = lt_script_create(); lt_script_set_tag(le, "*"); lt_script_set_name(le, "Wildcard entry"); lt_trie_replace(retval->script_entries, lt_script_get_tag(le), le, (lt_destroy_func_t)lt_script_unref); le = lt_script_create(); lt_script_set_tag(le, ""); lt_script_set_name(le, "Empty entry"); lt_trie_replace(retval->script_entries, lt_script_get_tag(le), le, (lt_destroy_func_t)lt_script_unref); retval->xml = lt_xml_new(); if (!retval->xml) { lt_script_db_unref(retval); retval = NULL; goto bail; } lt_mem_add_ref((lt_mem_t *)retval, retval->xml, (lt_destroy_func_t)lt_xml_unref); lt_script_db_parse(retval, &err); if (lt_error_is_set(err, LT_ERR_ANY)) { lt_error_print(err, LT_ERR_ANY); lt_script_db_unref(retval); retval = NULL; lt_error_unref(err); } } bail: return retval; }
/** * lt_db_finalize: * * Decreases the reference count of the language tags database, which was * increased with lt_db_initialize(). */ void lt_db_finalize(void) { lt_lang_db_unref(__db_lang); lt_extlang_db_unref(__db_extlang); lt_script_db_unref(__db_script); lt_region_db_unref(__db_region); lt_variant_db_unref(__db_variant); lt_grandfathered_db_unref(__db_grandfathered); lt_redundant_db_unref(__db_redundant); lt_ext_modules_unload(); }