t_ctype.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.   Copyright (C) 1998, 1999 by Pruet Boonma, all rights reserved.
  3.   Copyright (C) 1998 by Theppitak Karoonboonyanan, all rights reserved.
  4.   Permission to use, copy, modify, distribute and sell this software
  5.    and its documentation for any purpose is hereby granted without fee,
  6.    provided that the above copyright notice appear in all copies.
  7.    Smaphan Raruenrom and Pruet Boonma makes no representations about 
  8.    the suitability of this software for any purpose.  It is provided
  9.     "as is" without express or implied warranty.
  10. */
  11. /* LC_COLLATE category + Level information */
  12. #ifndef _t_ctype_h
  13. #define _t_ctype_h
  14. #define TOT_LEVELS 5
  15. #define LAST_LEVEL 4  /* TOT_LEVELS - 1 */
  16. #define IGNORE 0
  17. /* level 1 symbols & order */
  18. enum l1_symbols {
  19.     L1_08 = TOT_LEVELS,
  20.     L1_18,
  21.     L1_28,
  22.     L1_38,
  23.     L1_48,
  24.     L1_58,
  25.     L1_68,
  26.     L1_78,
  27.     L1_88,
  28.     L1_98,
  29.     L1_A8,
  30.     L1_B8,
  31.     L1_C8,
  32.     L1_D8,
  33.     L1_E8,
  34.     L1_F8,
  35.     L1_G8,
  36.     L1_H8,
  37.     L1_I8,
  38.     L1_J8,
  39.     L1_K8,
  40.     L1_L8,
  41.     L1_M8,
  42.     L1_N8,
  43.     L1_O8,
  44.     L1_P8,
  45.     L1_Q8,
  46.     L1_R8,
  47.     L1_S8,
  48.     L1_T8,
  49.     L1_U8,
  50.     L1_V8,
  51.     L1_W8,
  52.     L1_X8,
  53.     L1_Y8,
  54.     L1_Z8,
  55.     L1_KO_KAI,
  56.     L1_KHO_KHAI,
  57.     L1_KHO_KHUAT,
  58.     L1_KHO_KHWAI,
  59.     L1_KHO_KHON,
  60.     L1_KHO_RAKHANG,
  61.     L1_NGO_NGU,
  62.     L1_CHO_CHAN,
  63.     L1_CHO_CHING,
  64.     L1_CHO_CHANG,
  65.     L1_SO_SO,
  66.     L1_CHO_CHOE,
  67.     L1_YO_YING,
  68.     L1_DO_CHADA,
  69.     L1_TO_PATAK,
  70.     L1_THO_THAN,
  71.     L1_THO_NANGMONTHO,
  72.     L1_THO_PHUTHAO,
  73.     L1_NO_NEN,
  74.     L1_DO_DEK,
  75.     L1_TO_TAO,
  76.     L1_THO_THUNG,
  77.     L1_THO_THAHAN,
  78.     L1_THO_THONG,
  79.     L1_NO_NU,
  80.     L1_BO_BAIMAI,
  81.     L1_PO_PLA,
  82.     L1_PHO_PHUNG,
  83.     L1_FO_FA,
  84.     L1_PHO_PHAN,
  85.     L1_FO_FAN,
  86.     L1_PHO_SAMPHAO,
  87.     L1_MO_MA,
  88.     L1_YO_YAK,
  89.     L1_RO_RUA,
  90.     L1_RU,
  91.     L1_LO_LING,
  92.     L1_LU,
  93.     L1_WO_WAEN,
  94.     L1_SO_SALA,
  95.     L1_SO_RUSI,
  96.     L1_SO_SUA,
  97.     L1_HO_HIP,
  98.     L1_LO_CHULA,
  99.     L1_O_ANG,
  100.     L1_HO_NOKHUK,
  101.     L1_NKHIT,
  102.     L1_SARA_A,
  103.     L1_MAI_HAN_AKAT,
  104.     L1_SARA_AA,
  105.     L1_SARA_AM,
  106.     L1_SARA_I,
  107.     L1_SARA_II,
  108.     L1_SARA_UE,
  109.     L1_SARA_UEE,
  110.     L1_SARA_U,
  111.     L1_SARA_UU,
  112.     L1_SARA_E,
  113.     L1_SARA_AE,
  114.     L1_SARA_O,
  115.     L1_SARA_AI_MAIMUAN,
  116.     L1_SARA_AI_MAIMALAI
  117. };
  118.   
  119. /* level 2 symbols & order */
  120. enum l2_symbols {
  121.     L2_BLANK = TOT_LEVELS,
  122.     L2_THAII,
  123.     L2_YAMAK,
  124.     L2_PINTHU,
  125.     L2_GARAN,
  126.     L2_TYKHU,
  127.     L2_TONE1,
  128.     L2_TONE2,
  129.     L2_TONE3,
  130.     L2_TONE4
  131. };
  132.   
  133. /* level 3 symbols & order */
  134. enum l3_symbols {
  135. L3_BLANK = TOT_LEVELS,
  136.     L3_SPACE,
  137.     L3_NB_SACE,
  138.     L3_LOW_LINE,
  139.     L3_HYPHEN,
  140.     L3_COMMA,
  141.     L3_SEMICOLON,
  142.     L3_COLON,
  143.     L3_EXCLAMATION,
  144.     L3_QUESTION,
  145.     L3_SOLIDUS,
  146.     L3_FULL_STOP,
  147.     L3_PAIYAN_NOI,
  148.     L3_MAI_YAMOK,
  149.     L3_GRAVE,
  150.     L3_CIRCUMFLEX,
  151.     L3_TILDE,
  152.     L3_APOSTROPHE,
  153.     L3_QUOTATION,
  154.     L3_L_PARANTHESIS,
  155.     L3_L_BRACKET,
  156.     L3_L_BRACE,
  157.     L3_R_BRACE,
  158.     L3_R_BRACKET,
  159.     L3_R_PARENTHESIS,
  160.     L3_AT,
  161.     L3_BAHT,
  162.     L3_DOLLAR,
  163.     L3_FONGMAN,
  164.     L3_ANGKHANKHU,
  165.     L3_KHOMUT,
  166.     L3_ASTERISK,
  167.     L3_BK_SOLIDUS,
  168.     L3_AMPERSAND,
  169.     L3_NUMBER,
  170.     L3_PERCENT,
  171.     L3_PLUS,
  172.     L3_LESS_THAN,
  173.     L3_EQUAL,
  174.     L3_GREATER_THAN,
  175.     L3_V_LINE
  176. };
  177. /* level 4 symbols & order */
  178. enum l4_symbols {
  179.     L4_BLANK = TOT_LEVELS,
  180.     L4_MIN,
  181.     L4_CAP,
  182.     L4_EXT
  183. };
  184. enum level_symbols {
  185.     L_UPRUPR = TOT_LEVELS,
  186.     L_UPPER,
  187.     L_MIDDLE,
  188.     L_LOWER
  189. };
  190. #define _is(c) (t_ctype[(c)][LAST_LEVEL])
  191. #define _level 8
  192. #define _consnt 16
  193. #define _ldvowel 32
  194. #define _fllwvowel 64
  195. #define _uprvowel 128
  196. #define _lwrvowel 256
  197. #define _tone 512
  198. #define _diacrt1 1024
  199. #define _diacrt2 2048
  200. #define _combine 4096
  201. #define _stone 8192
  202. #define _tdig 16384
  203. #define _rearvowel (_fllwvowel | _uprvowel | _lwrvowel)
  204. #define _diacrt (_diacrt1 | _diacrt2)
  205. #define levelof(c) ( _is(c) & _level )
  206. #define isthai(c) ( (c) >= 128 )
  207. #define istalpha(c) ( _is(c) & (_consnt|_ldvowel|_rearvowel|
  208.                          _tone|_diacrt1|_diacrt2) )
  209. #define isconsnt(c) ( _is(c) & _consnt )
  210. #define isldvowel(c) ( _is(c) & _ldvowel )
  211. #define isfllwvowel(c) ( _is(c) & _fllwvowel )
  212. #define ismidvowel(c) ( _is(c) & (_ldvowel|_fllwvowel) )
  213. #define isuprvowel(c) ( _is(c) & _uprvowel )
  214. #define islwrvowel(c) ( _is(c) & _lwrvowel )
  215. #define isuprlwrvowel(c) ( _is(c) & (_lwrvowel | _uprvowel))
  216. #define isrearvowel(c) ( _is(c) & _rearvowel )
  217. #define isvowel(c)      ( _is(c) & (_ldvowel|_rearvowel) )
  218. #define istone(c)       ( _is(c) & _tone )
  219. #define isunldable(c)   ( _is(c) & (_rearvowel|_tone|_diacrt1|_diacrt2) )
  220. #define iscombinable(c) ( _is(c) & _combine )
  221. #define istdigit(c)     ( _is(c) & _tdig )
  222. #define isstone(c)      ( _is(c) & _stone )
  223. #define isdiacrt1(c) ( _is(c) & _diacrt1)
  224. #define isdiacrt2(c) ( _is(c) & _diacrt2)
  225. #define isdiacrt(c) ( _is(c) & _diacrt) 
  226. /* Function prototype called by sql/field.cc */
  227. void ThNormalize(uchar* ptr, uint field_length, const uchar* from, uint length);
  228. #endif