/* Copyright (C) 1996-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 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 . */ #ifndef _CHARMAP_H #define _CHARMAP_H #include #include #include #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 */