📄 languages.c
字号:
/* Copyright (C) 2002 Mikael Ylikoski * See the accompanying file "README" for the full copyright notice *//** * @file * Handle multiple languages. * * @author Mikael Ylikoski * @date 2002 */#include <stdlib.h>#include <string.h>#include "languages.h"#include "stemmer.h"#include "stopword.h"#include "utility.h"/** * Multiple language handler. */struct languages_ { language *langs; /**< languages */ language *unknown; /**< default language */ int size; /**< number of languages */};/** * Create multi language handler. */languages *languages_create (void) { languages *langs; langs = my_malloc (sizeof(languages)); langs->size = 0; langs->langs = NULL; langs->unknown = NULL; return langs;}/** * Free memory of multi language handler. */voidlanguages_free (languages *langs) { // FIXME free rest too free (langs->langs); free (langs);}/** * Add language to multi language handler. */intlanguages_add (languages *langs, const char *lang, const char *locale, word_stopper *stop, stemmer_functions *stem) { language *newlang; newlang = my_realloc (langs->langs, sizeof(language) * (langs->size + 1)); langs->langs = newlang; newlang = &langs->langs[langs->size]; newlang->language = lang; newlang->locale = locale; newlang->stopper = stop; newlang->stemmer = stem; langs->size++; return 0;}/** * Set default language. */intlanguages_set_unknown (languages *langs, const char *lang) { int i; for (i = 0; i < langs->size; i++) if (!strcmp (langs->langs[i].language, lang)) { langs->unknown = &langs->langs[i]; return 0; } return -1;}/** * Find language struct for language. */language *languages_find_language (languages *langs, const char *lang) { int i; if (!lang) return NULL; if (!strcmp (LANGUAGE_UNKNOWN, lang)) return langs->unknown; for (i = 0; i < langs->size; i++) if (!strcmp (langs->langs[i].language, lang)) return &langs->langs[i]; return NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -