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

📄 local.h

📁 用于嵌入式Linux系统的标准C的库函数
💻 H
字号:
#ifndef __LOCAL_H__#define __LOCAL_H__#include <_ansi.h>#include <reent.h>#include <wchar.h>#include <sys/types.h>#ifndef NLS_ENVVAR_NAME#  define NLS_ENVVAR_NAME "NLSPATH"#endif#ifndef NLS_DEFAULT_NLSPATH#  define NLS_DEFAULT_NLSPATH  "/usr/locale/"#endif/* void* type for K&R compilers compatability */#define _VOID_PTR _PTR/* Charset aliases file */#define ICONV_ALIASES_FNAME "charset.aliases"/* iconv CCS data path */#define ICONV_DATA_PATH NLS_DEFAULT_NLSPATH"iconv_data/"/* iconv data files extention */#define ICONV_DATA_EXT ".cct"/* Unicode character data types and constants. */#define UCS_CHAR_ZERO_WIDTH_NBSP 0xFEFF#define UCS_CHAR_INVALID         0xFFFE#define UCS_CHAR_NONE            0xFFFFtypedef __uint16_t ucs2_t;    /* Unicode character [D5] */typedef __uint32_t ucs4_t;    /* Unicode scalar character [D28] */#define ucs_t ucs4_t#define iconv_char32bit(ch) ((ch) & 0xFFFF0000)/* CCS file descriptor */typedef struct{  void *mem;  size_t len;} _iconv_fd_t;char *_EXFUN(_iconv_resolve_cs_name, (struct _reent *, _CONST char *, _CONST char *));char *_EXFUN(_iconv_resolve_alias, (struct _reent *, _CONST char *, _CONST char *,                                                         int, _CONST char *));int_EXFUN(_iconv_load_file, (struct _reent *, _CONST char *, _iconv_fd_t *));int_EXFUN(_iconv_unload_file, (struct _reent *, _iconv_fd_t *));/* Builtin CCS and CES data. */typedef struct {    _CONST char *key;    _CONST _VOID_PTR value;} iconv_builtin_table_t;extern _CONST iconv_builtin_table_t _iconv_builtin_ccs[];extern _CONST iconv_builtin_table_t _iconv_builtin_ces[];extern _CONST char _iconv_builtin_aliases[];/* Table-driven coded character set (CCS) definitions. */struct iconv_ccs;/* Basic CCS functions */typedef ucs2_t_EXFUN(iconv_ccs_convert_t, (_CONST _VOID_PTR table, ucs2_t ch));typedef int _EXFUN(iconv_ccs_close_t, (struct _reent *rptr, struct iconv_ccs *desc));/* CCS structure */struct iconv_ccs {    _CONST _VOID_PTR from_ucs;  /* FROM table pointer */    _CONST _VOID_PTR to_ucs;    /* TO table pointer   */    iconv_ccs_convert_t *convert_from_ucs;  /* converter */    iconv_ccs_convert_t *convert_to_ucs;    /* functions */    iconv_ccs_close_t *close; /* close function      */    _VOID_PTR extra;           /* optional extra data */    unsigned int nbits;       /* number of bits      */};/* CCS initialisation function */int _EXFUN(_iconv_ccs_init, (struct _reent *rptr, struct iconv_ccs *ccs,                          _CONST char *name));/* CCS conversion macros */#define ICONV_CCS_CONVERT_FROM_UCS(ccs, ch) \        ((ccs)->convert_from_ucs((ccs)->from_ucs, (ch)))#define ICONV_CCS_CONVERT_TO_UCS(ccs, ch) \        ((ccs)->convert_to_ucs((ccs)->to_ucs, (ch)))#define ICONV_CCS_NBITS/* Module-driven character encoding scheme (CES) definitions */struct iconv_ces;/* Basic CES function types */typedef int_EXFUN(iconv_ces_init_t, (struct _reent *, _VOID_PTR *, /* void** */                           _CONST char *, _CONST _VOID_PTR));typedef int_EXFUN(iconv_ces_close_t, (struct _reent *, _VOID_PTR));typedef _VOID_EXFUN(iconv_ces_reset_t, (_VOID_PTR));typedef ssize_t_EXFUN(iconv_ces_convert_from_ucs_t, (struct iconv_ces *data, ucs_t in,                                       unsigned char **outbuf,                                       size_t *outbytesleft));typedef ucs_t_EXFUN(iconv_ces_convert_to_ucs_t, (struct iconv_ces *data,                                     _CONST unsigned char **inbuf,                                    size_t *inbytesleft));/* CES descriptor structure - CES class data */struct iconv_ces_desc {    iconv_ces_init_t *init;    iconv_ces_close_t *close;  /* class-specific close function */    iconv_ces_reset_t *reset;    iconv_ces_convert_from_ucs_t *convert_from_ucs;    iconv_ces_convert_to_ucs_t   *convert_to_ucs;    _CONST _VOID_PTR data;      /* optional specific CES class data */};/* explicit CES class for table (CCS) driven charsets */extern _CONST struct iconv_ces_desc _iconv_ces_table_driven;/* CES structure - CES instance data */struct iconv_ces {    _CONST struct iconv_ces_desc *desc;  /* descriptor/class pointer */    iconv_ces_close_t *close;            /* instance-specific close function */    _VOID_PTR data;      /* optional extra data */    _VOID_PTR handle;    /* optional handle */};/* Basic CES functions and macros */extern int _EXFUN(_iconv_ces_init, (struct _reent *rptr, struct iconv_ces *ces,                        _CONST char *name));#define ICONV_CES_CLOSE(rptr, ces) ((ces)->close(rptr, ces))#define ICONV_CES_RESET(ces) ((ces)->desc->reset((ces)->data))#define ICONV_CES_CONVERT_FROM_UCS(cesd, in, outbuf, outbytes) \        ((cesd)->desc->convert_from_ucs((cesd), (in), (outbuf), (outbytes)))#define ICONV_CES_CONVERT_TO_UCS(cesd, inbuf, inbytes) \        ((cesd)->desc->convert_to_ucs((cesd), (inbuf), (inbytes)))/* Virtual CES initialisation function type */typedef int _EXFUN(iconv_ces_init_int_t, (struct _reent *rptr, _VOID_PTR* /* void ** */,                               _CONST _VOID_PTR, size_t));/* CES subclass macros (for EUC and ISO-2022) */#define ICONV_CES_DRIVER_DECL(name) \    iconv_ces_init_int_t         _iconv_##name##_init; \    iconv_ces_close_t            _iconv_##name##_close; \    iconv_ces_reset_t            _iconv_##name##_reset; \    iconv_ces_convert_from_ucs_t _iconv_##name##_convert_from_ucs; \    iconv_ces_convert_to_ucs_t   _iconv_##name##_convert_to_ucs; \/* CES functions and macros for stateless encodings */iconv_ces_init_t  _iconv_ces_init_null;iconv_ces_close_t _iconv_ces_close_null;iconv_ces_reset_t _iconv_ces_reset_null;#define ICONV_CES_STATELESS_MODULE_DECL(name) \    _CONST struct iconv_ces_desc _iconv_ces_module_##name = { \        _iconv_ces_init_null, \        _iconv_ces_close_null, \        _iconv_ces_reset_null, \        convert_from_ucs, \        convert_to_ucs, \        NULL \    }/* CES functions and macros for stateful (integer state) encodings */iconv_ces_init_t  _iconv_ces_init_state;iconv_ces_close_t _iconv_ces_close_state;iconv_ces_reset_t _iconv_ces_reset_state;#define ICONV_CES_STATEFUL_MODULE_DECL(name) \    _CONST struct iconv_ces_desc _iconv_ces_module_##name = { \        _iconv_ces_init_state, \        _iconv_ces_close_state, \        _iconv_ces_reset_state, \        convert_from_ucs, \        convert_to_ucs, \        NULL \    }/* CES functions and macros for other encodings */#define ICONV_CES_MODULE_DECL(type, name) \    static int \    module_init(struct _reent *rptr, _VOID_PTR *data, /* void ** */ \                _CONST char *cs_name, _CONST _VOID_PTR desc_data) \    { \        return _iconv_##type##_init(rptr, data, desc_data, \                                    sizeof(ccsattr) / \                                    sizeof(iconv_ces_##type##_ccs_t)); \    } \    \    _CONST struct iconv_ces_desc _iconv_ces_module_##name = { \        module_init, \        _iconv_##type##_close, \        _iconv_##type##_reset, \        _iconv_##type##_convert_from_ucs, \        _iconv_##type##_convert_to_ucs, \        &ccsattr \    }/* EUC character encoding schemes and functions */typedef struct {    _CONST char *name;    _CONST char *prefix;    size_t      prefixlen;} iconv_ces_euc_ccs_t;ICONV_CES_DRIVER_DECL(euc);#define _iconv_euc_reset _iconv_ces_reset_null/* ISO-2022 character encoding schemes and functions. */enum {ICONV_SHIFT_SI = 0, ICONV_SHIFT_SO, ICONV_SHIFT_SS2, ICONV_SHIFT_SS3};typedef struct {    _CONST char *name;    _CONST char *designator;    size_t designatorlen;    int shift;} iconv_ces_iso2022_ccs_t;ICONV_CES_DRIVER_DECL(iso2022);/* Converter structure and functions. */typedef size_t_EXFUN(iconv_conv_t, (struct _reent *, _VOID_PTR, _CONST unsigned char **,                      size_t *, unsigned char **, size_t *));typedef int_EXFUN(iconv_close_t, (struct _reent *rptr, _VOID_PTR));/* Generic converter structure. */typedef struct {    iconv_conv_t *convert;    iconv_close_t *close;}iconv_converter_t;typedef struct {    struct iconv_ces from;    struct iconv_ces to;    ucs_t  missing;} unicode_converter_t;/* Converter initialisers */iconv_converter_t *_EXFUN(_iconv_unicode_conv_init, (struct _reent *rptr, _CONST char *to,                                   _CONST char *from));iconv_converter_t *_EXFUN(_iconv_null_conv_init, (struct _reent *rptr, _CONST char *to,                               _CONST char *from));#endif /* __LOCAL_H__ */

⌨️ 快捷键说明

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