| /* Copyright (C) 1996-2014 Free Software Foundation, Inc. |
| This file is part of the GNU C Library. |
| Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. |
| |
| 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; version 2 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 <http://www.gnu.org/licenses/>. */ |
| |
| #ifndef _CHARMAP_H |
| #define _CHARMAP_H |
| |
| #include <obstack.h> |
| #include <stdbool.h> |
| #include <stdint.h> |
| |
| #include "repertoire.h" |
| #include "simple-hash.h" |
| |
| struct width_rule { |
| struct charseq *from; |
| struct charseq *to; |
| unsigned int width; |
| }; |
| |
| struct charmap_t { |
| const char *code_set_name; |
| const char *repertoiremap; |
| int mb_cur_min; |
| int mb_cur_max; |
| |
| struct width_rule *width_rules; |
| size_t nwidth_rules; |
| size_t nwidth_rules_max; |
| unsigned int width_default; |
| |
| struct obstack mem_pool; |
| hash_table char_table; |
| hash_table byte_table; |
| hash_table ucs4_table; |
| }; |
| |
| /* This is the structure used for entries in the hash table. It represents |
| the sequence of bytes used for the coded character. */ |
| struct charseq { |
| const char *name; |
| uint32_t ucs4; |
| int nbytes; |
| unsigned char bytes[0]; |
| }; |
| |
| /* True if the encoding is not ASCII compatible. */ |
| extern bool enc_not_ascii_compatible; |
| |
| /* Prototypes for charmap handling functions. */ |
| extern struct charmap_t *charmap_read(const char *filename, int verbose, |
| int error_not_found, int be_quiet, |
| int use_default); |
| |
| /* Return the value stored under the given key in the hashing table. */ |
| extern struct charseq *charmap_find_value(const struct charmap_t *charmap, |
| const char *name, size_t len); |
| |
| /* Return symbol for given multibyte sequence. */ |
| extern struct charseq *charmap_find_symbol(const struct charmap_t *charmap, |
| const char *name, size_t len); |
| |
| #endif /* charmap.h */ |