diff options
author | Bruno Haible <bruno@clisp.org> | 2020-01-03 22:34:07 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2020-01-03 22:55:26 +0100 |
commit | 3df90147719110350d9a674cc37e99cbd27a9c3e (patch) | |
tree | eeda393f14a00e7301e0ebece02547af2737cc6c /lib/lc-charset-dispatch.h | |
parent | 190f337b7d997625682666ce7964a8c38b88ae83 (diff) | |
download | gnulib-3df90147719110350d9a674cc37e99cbd27a9c3e.tar.gz |
mbrtowc: Refactor locale charset dispatching.
* lib/lc-charset-dispatch.h: New file, extracted from lib/mbrtowc.c.
* lib/lc-charset-dispatch.c: New file, extracted from lib/mbrtowc.c.
* lib/mbrtowc.c: Include lc-charset-dispatch.h. Don't include
localcharset.h, streq.h.
(enc_t): Remove type.
(locale_enc): Remove function.
(cached_locale_enc): Remove variable.
(locale_enc_cached): Remove function.
(mbrtowc): Invoke locale_encoding_classification.
* m4/mbrtowc.m4 (gl_PREREQ_MBRTOWC): Update comment.
* modules/mbrtowc (Files): Add lc-charset-dispatch.h,
lc-charset-dispatch.c.
(configure.ac): Arrange to compile lc-charset-dispatch.c.
Diffstat (limited to 'lib/lc-charset-dispatch.h')
-rw-r--r-- | lib/lc-charset-dispatch.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/lc-charset-dispatch.h b/lib/lc-charset-dispatch.h new file mode 100644 index 0000000000..95c2316bf3 --- /dev/null +++ b/lib/lc-charset-dispatch.h @@ -0,0 +1,40 @@ +/* Dispatching based on the current locale's character encoding. + Copyright (C) 2018-2020 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2018. */ + +#include <wchar.h> + +#if GNULIB_defined_mbstate_t + +/* A classification of special values of the encoding of the current locale. */ +typedef enum + { + enc_other, /* other */ + enc_utf8, /* UTF-8 */ + enc_eucjp, /* EUC-JP */ + enc_94, /* EUC-KR, GB2312, BIG5 */ + enc_euctw, /* EUC-TW */ + enc_gb18030, /* GB18030 */ + enc_sjis /* SJIS */ + } + enc_t; + +/* Returns a classification of special values of the encoding of the current + locale. */ +extern enc_t locale_encoding_classification (void); + +#endif |