static int load_dictionary(config_desc * config) { if (config->dicts_count == 0) return 0; qsort ( config->dicts, config->dicts_count, sizeof(config->dicts[0]), qsort_dictionary_buffer_cmp ); size_t i, last_index = 0; dictionary_group_t group = dictionary_set_new_group(config->dictionary_set); for (i = 0; i < config->dicts_count; i ++) { if (config->dicts[i].index > last_index) { last_index = config->dicts[i].index; group = dictionary_set_new_group(config->dictionary_set); } dictionary_group_load(group, config->dicts[i].file_name, config->home_dir,config->dicts[i].dict_type); } return 0; }
int opencc_dict_load(opencc_t t_opencc, const char * dict_filename, opencc_dictionary_type dict_type) { if (!lib_initialized) lib_initialize(); opencc_desc * opencc = (opencc_desc *) t_opencc; dictionary_group_t dictionary_group; if (opencc->dictionary_set == NULL) { opencc->dictionary_set = dictionary_set_open(); dictionary_group = dictionary_set_new_group(opencc->dictionary_set); } else { dictionary_group = dictionary_set_get_group(opencc->dictionary_set, 0); } int retval; retval = dictionary_group_load(dictionary_group, dict_filename, dict_type); if (retval == -1) { errnum = OPENCC_ERROR_DICTLOAD; return -1; } converter_assign_dictionary(opencc->converter, opencc->dictionary_set); return retval; }