123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /*
- * "streamable kanji code filter and converter"
- * Copyright (c) 1998-2002 HappySize, Inc. All rights reserved.
- *
- * LICENSE NOTICES
- *
- * This file is part of "streamable kanji code filter and converter",
- * which is distributed under the terms of GNU Lesser General Public
- * License (version 2) as published by the Free Software Foundation.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with "streamable kanji code filter and converter";
- * if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * The author of this file:
- *
- */
- /*
- * The source code included in this files was separated from mbfilter.c
- * by Moriyoshi Koizumi <moriyoshi@php.net> on 20 Dec 2002. The file
- * mbfilter.c is included in this package .
- *
- */
- #include "libmbfl/config.h"
- #include <stddef.h>
- #include <string.h>
- #ifdef HAVE_STRINGS_H
- #include <strings.h>
- #endif
- #include "mbfl_encoding.h"
- #include "mbfl_language.h"
- #include "nls/nls_ja.h"
- #include "nls/nls_kr.h"
- #include "nls/nls_zh.h"
- #include "nls/nls_uni.h"
- #include "nls/nls_de.h"
- #include "nls/nls_ru.h"
- #include "nls/nls_ua.h"
- #include "nls/nls_en.h"
- #include "nls/nls_hy.h"
- #include "nls/nls_tr.h"
- #include "nls/nls_neutral.h"
- #ifndef HAVE_STRCASECMP
- #ifdef HAVE_STRICMP
- #define strcasecmp stricmp
- #endif
- #endif
- static const mbfl_language *mbfl_language_ptr_table[] = {
- &mbfl_language_uni,
- &mbfl_language_japanese,
- &mbfl_language_korean,
- &mbfl_language_simplified_chinese,
- &mbfl_language_traditional_chinese,
- &mbfl_language_english,
- &mbfl_language_german,
- &mbfl_language_russian,
- &mbfl_language_ukrainian,
- &mbfl_language_armenian,
- &mbfl_language_turkish,
- &mbfl_language_neutral,
- NULL
- };
- /* language resolver */
- const mbfl_language *
- mbfl_name2language(const char *name)
- {
- const mbfl_language *language;
- int i, j;
- if (name == NULL) {
- return NULL;
- }
- i = 0;
- while ((language = mbfl_language_ptr_table[i++]) != NULL){
- if (strcasecmp(language->name, name) == 0) {
- return language;
- }
- }
- i = 0;
- while ((language = mbfl_language_ptr_table[i++]) != NULL){
- if (strcasecmp(language->short_name, name) == 0) {
- return language;
- }
- }
- /* serch aliases */
- i = 0;
- while ((language = mbfl_language_ptr_table[i++]) != NULL) {
- if (language->aliases != NULL) {
- j = 0;
- while ((*language->aliases)[j] != NULL) {
- if (strcasecmp((*language->aliases)[j], name) == 0) {
- return language;
- }
- j++;
- }
- }
- }
- return NULL;
- }
- const mbfl_language *
- mbfl_no2language(enum mbfl_no_language no_language)
- {
- const mbfl_language *language;
- int i;
- i = 0;
- while ((language = mbfl_language_ptr_table[i++]) != NULL){
- if (language->no_language == no_language) {
- return language;
- }
- }
- return NULL;
- }
- enum mbfl_no_language
- mbfl_name2no_language(const char *name)
- {
- const mbfl_language *language;
- language = mbfl_name2language(name);
- if (language == NULL) {
- return mbfl_no_language_invalid;
- } else {
- return language->no_language;
- }
- }
- const char *
- mbfl_no_language2name(enum mbfl_no_language no_language)
- {
- const mbfl_language *language;
- language = mbfl_no2language(no_language);
- if (language == NULL) {
- return "";
- } else {
- return language->name;
- }
- }
|