FCITX_EXPORT_API void fcitx_addon_manager_set_override(FcitxAddonManager* manager, const char* enabled, const char* disabled) { fcitx_string_hashset_free(manager->enabledAddons); fcitx_string_hashset_free(manager->disabledAddons); manager->enabledAddons = enabled ? fcitx_string_hashset_parse(enabled, ',') : NULL; manager->disabledAddons = disabled ? fcitx_string_hashset_parse(disabled, ',') : NULL; manager->disabledAllAddons = manager->disabledAddons ? fcitx_string_hashset_contains(manager->disabledAddons, "all") : false; }
FCITX_EXPORT_API void fcitx_description_free(FcitxDescription* desc) { if (!desc) { return; } free(desc->errorMessage); fcitx_string_hashset_free(desc->structs); fcitx_string_hashset_free(desc->topLevelStructs); fcitx_configuration_unref(desc->rootConfig); free(desc); }
void fcitx_addon_manager_free(FcitxAddonManager* manager) { if (manager->loaded) { fcitx_addon_manager_unload(manager); } fcitx_dict_free(manager->properties); fcitx_ptr_array_free(manager->loadedAddons); fcitx_standard_path_unref(manager->standardPath); fcitx_dict_free(manager->addons); fcitx_dict_free(manager->resolvers); fcitx_string_hashset_free(manager->enabledAddons); fcitx_string_hashset_free(manager->disabledAddons); free(manager); }
void test_string_hash_set() { FcitxStringHashSet* sset = fcitx_string_hashset_parse("a,b,c,d", ','); assert(fcitx_dict_size(sset) == 4); assert(fcitx_string_hashset_contains(sset, "c")); assert(!fcitx_string_hashset_contains(sset, "e")); fcitx_string_hashset_remove(sset, "c"); assert(!fcitx_string_hashset_contains(sset, "c")); fcitx_string_hashset_insert(sset, "e"); assert(fcitx_string_hashset_contains(sset, "e")); /* uthash guarantee order, so we can sure about this */ char* joined = fcitx_string_hashset_join(sset, ','); assert(strcmp(joined, "a,b,d,e") == 0); free(joined); fcitx_string_hashset_free(sset); }
void fcitx_addon_free(FcitxAddon* addon) { fcitx_addon_config_free(addon->config); fcitx_string_hashset_free(addon->dependencies); free(addon); }