示例#1
0
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;
}
示例#2
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;
}