⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccs.h

📁 Newlib 嵌入式 C库 标准实现代码
💻 H
字号:
/* * Copyright (c) 2003-2004, Artem B. Bityuckiy * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#ifndef __CCS_H__#define __CCS_H__#include <_ansi.h>#include <sys/types.h>#include <sys/param.h>/* * Size-optimized tables will be linked instead of speed-optimized if * TABLE_USE_SIZE_OPTIMISATION macro is defined. */#if defined (PREFER_SIZE_OVER_SPEED) || defined (__OPTIMIZE_SIZE__)#  define TABLE_USE_SIZE_OPTIMIZATION#endif/* Invalid code marker */#define INVALC  0xFFFF/* Invalid block marker - marks empty blocks in speed-optimized tables */#define INVBLK  0xFFFF/* Lost code marker - marks codes that was lost during CCS->UCS mapping */#define LOST_C DEFAULT_CHARACTER/* * Table parameters values. *//* Table version 1.0 identifier */#define TABLE_VERSION_1 1/* 8 and 16 bit tables identifiers */#define TABLE_8BIT  8#define TABLE_16BIT 16/* Size-optimized and speed-optimized tables identifiers */#define TABLE_SIZE_OPTIMIZED  1#define TABLE_SPEED_OPTIMIZED 2/* Built-in/external tables identifiers */#define TABLE_BUILTIN  1#define TABLE_EXTERNAL 2/* * Binary table fields. *//* "No table" marker */#define EXTTABLE_NO_TABLE 0/* Version offset (2 bytes) */#define EXTTABLE_VERSION_OFF 0/* Bits number offset (2 bytes) */#define EXTTABLE_BITS_OFF 2/* CCS name length offset (2 bytes) */#define EXTTABLE_CCSNAME_LEN_OFF 4/* CCS name offset (expanded to even bytes number)*/#define EXTTABLE_CCSNAME_OFF 8/* Header length (minus CCS name) */#define EXTTABLE_HEADER_LEN (EXTTABLE_CCSNAME_OFF + 16*4)/* Tables and lengths offsets minus CCS name length (4 bytes) */#define EXTTABLE_FROM_SPEED_BE_OFF     (EXTTABLE_CCSNAME_OFF + 0)#define EXTTABLE_FROM_SPEED_BE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 4)#define EXTTABLE_FROM_SPEED_LE_OFF     (EXTTABLE_CCSNAME_OFF + 8)#define EXTTABLE_FROM_SPEED_LE_LEN_OFF (EXTTABLE_CCSNAME_OFF + 12)#define EXTTABLE_FROM_SIZE_BE_OFF      (EXTTABLE_CCSNAME_OFF + 16)#define EXTTABLE_FROM_SIZE_BE_LEN_OFF  (EXTTABLE_CCSNAME_OFF + 20)#define EXTTABLE_FROM_SIZE_LE_OFF      (EXTTABLE_CCSNAME_OFF + 24)#define EXTTABLE_FROM_SIZE_LE_LEN_OFF  (EXTTABLE_CCSNAME_OFF + 28)#define EXTTABLE_TO_SPEED_BE_OFF       (EXTTABLE_CCSNAME_OFF + 32)#define EXTTABLE_TO_SPEED_BE_LEN_OFF   (EXTTABLE_CCSNAME_OFF + 36)#define EXTTABLE_TO_SPEED_LE_OFF       (EXTTABLE_CCSNAME_OFF + 40)#define EXTTABLE_TO_SPEED_LE_LEN_OFF   (EXTTABLE_CCSNAME_OFF + 44)#define EXTTABLE_TO_SIZE_BE_OFF        (EXTTABLE_CCSNAME_OFF + 48)#define EXTTABLE_TO_SIZE_BE_LEN_OFF    (EXTTABLE_CCSNAME_OFF + 52)#define EXTTABLE_TO_SIZE_LE_OFF        (EXTTABLE_CCSNAME_OFF + 56)#define EXTTABLE_TO_SIZE_LE_LEN_OFF    (EXTTABLE_CCSNAME_OFF + 60)/* Endian-independent offsets */#if (BYTE_ORDER == LITTLE_ENDIAN)#  define EXTTABLE_FROM_SPEED_OFF     EXTTABLE_FROM_SPEED_LE_OFF#  define EXTTABLE_FROM_SIZE_OFF      EXTTABLE_FROM_SIZE_LE_OFF#  define EXTTABLE_TO_SPEED_OFF       EXTTABLE_TO_SPEED_LE_OFF#  define EXTTABLE_TO_SIZE_OFF        EXTTABLE_TO_SIZE_LE_OFF#  define EXTTABLE_FROM_SPEED_LEN_OFF EXTTABLE_FROM_SPEED_LE_LEN_OFF#  define EXTTABLE_FROM_SIZE_LEN_OFF  EXTTABLE_FROM_SIZE_LE_LEN_OFF#  define EXTTABLE_TO_SPEED_LEN_OFF   EXTTABLE_TO_SPEED_LE_LEN_OFF#  define EXTTABLE_TO_SIZE_LEN_OFF    EXTTABLE_TO_SIZE_LE_LEN_OFF#elif (BYTE_ORDER == BIG_ENDIAN)#  define EXTTABLE_FROM_SPEED_OFF     EXTTABLE_FROM_SPEED_BE_OFF#  define EXTTABLE_FROM_SIZE_OFF      EXTTABLE_FROM_SIZE_BE_OFF#  define EXTTABLE_TO_SPEED_OFF       EXTTABLE_TO_SPEED_BE_OFF#  define EXTTABLE_TO_SIZE_OFF        EXTTABLE_TO_SIZE_BE_OFF#  define EXTTABLE_FROM_SPEED_LEN_OFF EXTTABLE_FROM_SPEED_BE_LEN_OFF#  define EXTTABLE_FROM_SIZE_LEN_OFF  EXTTABLE_FROM_SIZE_BE_LEN_OFF#  define EXTTABLE_TO_SPEED_LEN_OFF   EXTTABLE_TO_SPEED_BE_LEN_OFF#  define EXTTABLE_TO_SIZE_LEN_OFF    EXTTABLE_TO_SIZE_BE_LEN_OFF#endif/* * Size-optimized suitable fields indexes. *//* Ranges number array index */#define RANGES_NUM_INDEX    0/* Un-ranged codes number array index */#define UNRANGED_NUM_INDEX  1/* First un-ranged pair index array index */#define FIRST_UNRANGED_INDEX_INDEX 2/* First range array index */#define FIRST_RANGE_INDEX   3/* * Builtin CCS table description structure. */typedef struct{  __uint16_t ver;               /* Table version */  _CONST char *name;            /* CCS name */  __uint16_t bits;              /* CCS's bits number */  int from_ucs_type;            /* UCS -> CCS table optimization type */  _CONST __uint16_t *from_ucs;  /* UCS -> CCS table */  int to_ucs_type;              /* CCS -> UCS table optimization type */  _CONST __uint16_t *to_ucs;    /* CCS -> UCS table */} iconv_ccs_t;/* * CCS table descriptor. */typedef struct{  int bits;               /* CCS's bits number */  int type;               /* Table type (builtin/external) */  int optimization;       /* Table optimization type (speed/size) */   _CONST __uint16_t *tbl; /* Table's data */} iconv_ccs_desc_t;/* Array containing all built-in CCS tables */extern _CONST iconv_ccs_t *_iconv_ccs[];#endif /* __CCS_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -