📄 mbdata.h
字号:
/***
*mbdata.h - MBCS lib data
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* Defines data for use when building MBCS libs and routines
*
* [Internal].
*
****/
#pragma once
#ifndef _INC_MBDATA
#define _INC_MBDATA
#include <crtdefs.h>
#pragma pack(push,_CRT_PACKING)
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#if defined (_WIN32)
#define NUM_ULINFO 6 /* multibyte full-width-latin upper/lower info */
#else /* defined (_WIN32) */
#define NUM_ULINFO 12 /* multibyte full-width-latin upper/lower info */
#endif /* defined (_WIN32) */
#ifndef _THREADMBCINFO
typedef struct threadmbcinfostruct {
int refcount;
int mbcodepage;
int ismbcodepage;
int mblcid;
unsigned short mbulinfo[6];
unsigned char mbctype[257];
unsigned char mbcasemap[256];
} threadmbcinfo;
#define _THREADMBCINFO
#endif /* _THREADMBCINFO */
#ifndef _TAGLC_ID_DEFINED
typedef struct tagLC_ID {
unsigned short wLanguage;
unsigned short wCountry;
unsigned short wCodePage;
} LC_ID, *LPLC_ID;
#define _TAGLC_ID_DEFINED
#endif /* _TAGLC_ID_DEFINED */
#ifndef _THREADLOCALEINFO
typedef struct threadlocaleinfostruct {
int refcount;
unsigned int lc_codepage;
unsigned int lc_collate_cp;
unsigned long lc_handle[6]; /* LCID */
LC_ID lc_id[6];
struct {
char *locale;
wchar_t *wlocale;
int *refcount;
int *wrefcount;
} lc_category[6];
int lc_clike;
int mb_cur_max;
int * lconv_intl_refcount;
int * lconv_num_refcount;
int * lconv_mon_refcount;
struct lconv * lconv;
int * ctype1_refcount;
unsigned short * ctype1;
const unsigned short * pctype;
const unsigned char * pclmap;
const unsigned char * pcumap;
struct __lc_time_data * lc_time_curr;
} threadlocinfo;
#define _THREADLOCALEINFO
#endif /* _THREADLOCALEINFO */
/* global variable to indicate current code page */
extern int __mbcodepage;
/* global flag indicating if the current code page is a multibyte code page */
extern int __ismbcodepage;
#if defined (_WIN32)
/* global variable to indicate current LCID */
extern int __mblcid;
#endif /* defined (_WIN32) */
/* global variable to indicate current full-width-latin upper/lower info */
extern unsigned short __mbulinfo[NUM_ULINFO];
/* global variable pointing to the current mbc information structure */
extern pthreadmbcinfo __ptmbcinfo;
/* function to update mbc info used by the current thread */
pthreadmbcinfo __cdecl __updatetmbcinfo(void);
/*
* MBCS - Multi-Byte Character Set
*/
/*
* general use macros for model dependent/independent versions.
*/
#define _ISMBCP (__ismbcodepage != 0)
#define _ISNOTMBCP (__ismbcodepage == 0)
#define _ISMBCP_MT(p) (p->ismbcodepage != 0)
#define _ISNOTMBCP_MT(p) (p->ismbcodepage == 0)
#define _ismbbtruelead(_lb,_ch) (!(_lb) && _ismbblead((_ch)))
/* internal use macros since tolower/toupper are locale-dependent */
#define _mbbisupper(_c) ((_mbctype[(_c) + 1] & _SBUP) == _SBUP)
#define _mbbislower(_c) ((_mbctype[(_c) + 1] & _SBLOW) == _SBLOW)
#define _mbbtolower(_c) (_mbbisupper(_c) ? _mbcasemap[_c] : _c)
#define _mbbtoupper(_c) (_mbbislower(_c) ? _mbcasemap[_c] : _c)
#define _ismbbtruelead_l(_lb,_ch,p) (!(_lb) && _ismbblead_l((_ch), p))
#define _mbbisupper_l(_c, p) ((p->mbcinfo->mbctype[(_c) + 1] & _SBUP) == _SBUP)
#define _mbbislower_l(_c, p) ((p->mbcinfo->mbctype[(_c) + 1] & _SBLOW) == _SBLOW)
#define _mbbtolower_l(_c, p) (_mbbisupper_l(_c, p) ? p->mbcinfo->mbcasemap[_c] : _c)
#define _mbbtoupper_l(_c, p) (_mbbislower_l(_c, p) ? p->mbcinfo->mbcasemap[_c] : _c)
/* define full-width-latin upper/lower ranges */
#define _MBUPPERLOW1 __mbulinfo[0]
#define _MBUPPERHIGH1 __mbulinfo[1]
#define _MBCASEDIFF1 __mbulinfo[2]
#define _MBUPPERLOW2 __mbulinfo[3]
#define _MBUPPERHIGH2 __mbulinfo[4]
#define _MBCASEDIFF2 __mbulinfo[5]
#define _MBUPPERLOW1_MT(p) p->mbcinfo->mbulinfo[0]
#define _MBUPPERHIGH1_MT(p) p->mbcinfo->mbulinfo[1]
#define _MBCASEDIFF1_MT(p) p->mbcinfo->mbulinfo[2]
#define _MBUPPERLOW2_MT(p) p->mbcinfo->mbulinfo[3]
#define _MBUPPERHIGH2_MT(p) p->mbcinfo->mbulinfo[4]
#define _MBCASEDIFF2_MT(p) p->mbcinfo->mbulinfo[5]
#if !defined (_WIN32)
#define _MBLOWERLOW1 __mbulinfo[6]
#define _MBLOWERHIGH1 __mbulinfo[7]
#define _MBLOWERLOW2 __mbulinfo[8]
#define _MBLOWERHIGH2 __mbulinfo[9]
#define _MBDIGITLOW __mbulinfo[10]
#define _MBDIGITHIGH __mbulinfo[11]
#endif /* !defined (_WIN32) */
/* Kanji-specific ranges */
#define _MBHIRALOW 0x829f /* hiragana */
#define _MBHIRAHIGH 0x82f1
#define _MBKATALOW 0x8340 /* katakana */
#define _MBKATAHIGH 0x8396
#define _MBKATAEXCEPT 0x837f /* exception */
#define _MBKIGOULOW 0x8141 /* kanji punctuation */
#define _MBKIGOUHIGH 0x81ac
#define _MBKIGOUEXCEPT 0x817f /* exception */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#pragma pack(pop)
#endif /* _INC_MBDATA */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -