ctype-gb2312.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:11k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    
  8.    This library is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.    Library General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU Library General Public
  14.    License along with this library; if not, write to the Free
  15.    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  16.    MA 02111-1307, USA */
  17. /* This file is for Chinese EUC character sets (GB2312), and created by Miles Tsai (net-bull@126.com).
  18.  */
  19. /*
  20.  * This comment is parsed by configure to create ctype.c,
  21.  * so don't change it unless you know what you are doing.
  22.  *
  23.  * .configure. mbmaxlen_gb2312=2
  24.  */
  25. #include <global.h>
  26. #include "m_string.h"
  27. uchar NEAR ctype_gb2312[257] =
  28. {
  29.   0, /* For standard library */
  30.   32,32,32,32,32,32,32,32,32,40,40,40,40,40,32,32,
  31.   32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
  32.   72,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
  33.   132,132,132,132,132,132,132,132,132,132,16,16,16,16,16,16,
  34.   16,129,129,129,129,129,129,1,1,1,1,1,1,1,1,1,
  35.   1,1,1,1,1,1,1,1,1,1,1,16,16,16,16,16,
  36.   16,130,130,130,130,130,130,2,2,2,2,2,2,2,2,2,
  37.   2,2,2,2,2,2,2,2,2,2,2,16,16,16,16,32,
  38.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  39.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  40.   0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
  41.   3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
  42.   3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
  43.   3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
  44.   3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
  45.   3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,
  46. };
  47. uchar NEAR to_lower_gb2312[]=
  48. {
  49.   '00','01','02','03','04','05','06','07',
  50.   '10','11','12','13','14','15','16','17',
  51.   '20','21','22','23','24','25','26','27',
  52.   '30','31','32','33','34','35','36','37',
  53.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  54.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  55.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  56.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  57.   '@',  'a', 'b',   'c',   'd',   'e',   'f',   'g',
  58.   'h',  'i', 'j',   'k',   'l',   'm',   'n',   'o',
  59.   'p',  'q', 'r',   's',   't',   'u',   'v',   'w',
  60.   'x',  'y', 'z',   '[',   '\',  ']',   '^',   '_',
  61.   '`',  'a', 'b',   'c',   'd',   'e',   'f',   'g',
  62.   'h',  'i', 'j',   'k',   'l',   'm',   'n',   'o',
  63.   'p',  'q', 'r',   's',   't',   'u',   'v',   'w',
  64.   'x',  'y', 'z',   '{',   '|',   '}',   '~',   '177',
  65.   (uchar) '200',(uchar) '201',(uchar) '202',(uchar) '203',(uchar) '204',(uchar) '205',(uchar) '206',(uchar) '207',
  66.   (uchar) '210',(uchar) '211',(uchar) '212',(uchar) '213',(uchar) '214',(uchar) '215',(uchar) '216',(uchar) '217',
  67.   (uchar) '220',(uchar) '221',(uchar) '222',(uchar) '223',(uchar) '224',(uchar) '225',(uchar) '226',(uchar) '227',
  68.   (uchar) '230',(uchar) '231',(uchar) '232',(uchar) '233',(uchar) '234',(uchar) '235',(uchar) '236',(uchar) '237',
  69.   (uchar) '240',(uchar) '241',(uchar) '242',(uchar) '243',(uchar) '244',(uchar) '245',(uchar) '246',(uchar) '247',
  70.   (uchar) '250',(uchar) '251',(uchar) '252',(uchar) '253',(uchar) '254',(uchar) '255',(uchar) '256',(uchar) '257',
  71.   (uchar) '260',(uchar) '261',(uchar) '262',(uchar) '263',(uchar) '264',(uchar) '265',(uchar) '266',(uchar) '267',
  72.   (uchar) '270',(uchar) '271',(uchar) '272',(uchar) '273',(uchar) '274',(uchar) '275',(uchar) '276',(uchar) '277',
  73.   (uchar) '300',(uchar) '301',(uchar) '302',(uchar) '303',(uchar) '304',(uchar) '305',(uchar) '306',(uchar) '307',
  74.   (uchar) '310',(uchar) '311',(uchar) '312',(uchar) '313',(uchar) '314',(uchar) '315',(uchar) '316',(uchar) '317',
  75.   (uchar) '320',(uchar) '321',(uchar) '322',(uchar) '323',(uchar) '324',(uchar) '325',(uchar) '326',(uchar) '327',
  76.   (uchar) '330',(uchar) '331',(uchar) '332',(uchar) '333',(uchar) '334',(uchar) '335',(uchar) '336',(uchar) '337',
  77.   (uchar) '340',(uchar) '341',(uchar) '342',(uchar) '343',(uchar) '344',(uchar) '345',(uchar) '346',(uchar) '347',
  78.   (uchar) '350',(uchar) '351',(uchar) '352',(uchar) '353',(uchar) '354',(uchar) '355',(uchar) '356',(uchar) '357',
  79.   (uchar) '360',(uchar) '361',(uchar) '362',(uchar) '363',(uchar) '364',(uchar) '365',(uchar) '366',(uchar) '367',
  80.   (uchar) '370',(uchar) '371',(uchar) '372',(uchar) '373',(uchar) '374',(uchar) '375',(uchar) '376',(uchar) '377',
  81. };
  82. uchar NEAR to_upper_gb2312[]=
  83. {
  84.   '00','01','02','03','04','05','06','07',
  85.   '10','11','12','13','14','15','16','17',
  86.   '20','21','22','23','24','25','26','27',
  87.   '30','31','32','33','34','35','36','37',
  88.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  89.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  90.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  91.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  92.   '@',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  93.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  94.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  95.   'X',  'Y', 'Z',   '[',   '\',  ']',   '^',   '_',
  96.   '`',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  97.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  98.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  99.   'X',  'Y', 'Z',   '{',   '|',   '}',   '~',   '177',
  100.   (uchar) '200',(uchar) '201',(uchar) '202',(uchar) '203',(uchar) '204',(uchar) '205',(uchar) '206',(uchar) '207',
  101.   (uchar) '210',(uchar) '211',(uchar) '212',(uchar) '213',(uchar) '214',(uchar) '215',(uchar) '216',(uchar) '217',
  102.   (uchar) '220',(uchar) '221',(uchar) '222',(uchar) '223',(uchar) '224',(uchar) '225',(uchar) '226',(uchar) '227',
  103.   (uchar) '230',(uchar) '231',(uchar) '232',(uchar) '233',(uchar) '234',(uchar) '235',(uchar) '236',(uchar) '237',
  104.   (uchar) '240',(uchar) '241',(uchar) '242',(uchar) '243',(uchar) '244',(uchar) '245',(uchar) '246',(uchar) '247',
  105.   (uchar) '250',(uchar) '251',(uchar) '252',(uchar) '253',(uchar) '254',(uchar) '255',(uchar) '256',(uchar) '257',
  106.   (uchar) '260',(uchar) '261',(uchar) '262',(uchar) '263',(uchar) '264',(uchar) '265',(uchar) '266',(uchar) '267',
  107.   (uchar) '270',(uchar) '271',(uchar) '272',(uchar) '273',(uchar) '274',(uchar) '275',(uchar) '276',(uchar) '277',
  108.   (uchar) '300',(uchar) '301',(uchar) '302',(uchar) '303',(uchar) '304',(uchar) '305',(uchar) '306',(uchar) '307',
  109.   (uchar) '310',(uchar) '311',(uchar) '312',(uchar) '313',(uchar) '314',(uchar) '315',(uchar) '316',(uchar) '317',
  110.   (uchar) '320',(uchar) '321',(uchar) '322',(uchar) '323',(uchar) '324',(uchar) '325',(uchar) '326',(uchar) '327',
  111.   (uchar) '330',(uchar) '331',(uchar) '332',(uchar) '333',(uchar) '334',(uchar) '335',(uchar) '336',(uchar) '337',
  112.   (uchar) '340',(uchar) '341',(uchar) '342',(uchar) '343',(uchar) '344',(uchar) '345',(uchar) '346',(uchar) '347',
  113.   (uchar) '350',(uchar) '351',(uchar) '352',(uchar) '353',(uchar) '354',(uchar) '355',(uchar) '356',(uchar) '357',
  114.   (uchar) '360',(uchar) '361',(uchar) '362',(uchar) '363',(uchar) '364',(uchar) '365',(uchar) '366',(uchar) '367',
  115.   (uchar) '370',(uchar) '371',(uchar) '372',(uchar) '373',(uchar) '374',(uchar) '375',(uchar) '376',(uchar) '377',
  116. };
  117. uchar NEAR sort_order_gb2312[]=
  118. {
  119.   '00','01','02','03','04','05','06','07',
  120.   '10','11','12','13','14','15','16','17',
  121.   '20','21','22','23','24','25','26','27',
  122.   '30','31','32','33','34','35','36','37',
  123.   ' ',  '!', '"',   '#',   '$',   '%',   '&',   ''',
  124.   '(',  ')', '*',   '+',   ',',   '-',   '.',   '/',
  125.   '0',  '1', '2',   '3',   '4',   '5',   '6',   '7',
  126.   '8',  '9', ':',   ';',   '<',   '=',   '>',   '?',
  127.   '@',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  128.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  129.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  130.   'X',  'Y', 'Z',   '\',  ']',   '[',   '^',   '_',
  131.   '`',  'A', 'B',   'C',   'D',   'E',   'F',   'G',
  132.   'H',  'I', 'J',   'K',   'L',   'M',   'N',   'O',
  133.   'P',  'Q', 'R',   'S',   'T',   'U',   'V',   'W',
  134.   'X',  'Y', 'Z',   '{',   '|',   '}',   'Y',   '177',
  135.   (uchar) '200',(uchar) '201',(uchar) '202',(uchar) '203',(uchar) '204',(uchar) '205',(uchar) '206',(uchar) '207',
  136.   (uchar) '210',(uchar) '211',(uchar) '212',(uchar) '213',(uchar) '214',(uchar) '215',(uchar) '216',(uchar) '217',
  137.   (uchar) '220',(uchar) '221',(uchar) '222',(uchar) '223',(uchar) '224',(uchar) '225',(uchar) '226',(uchar) '227',
  138.   (uchar) '230',(uchar) '231',(uchar) '232',(uchar) '233',(uchar) '234',(uchar) '235',(uchar) '236',(uchar) '237',
  139.   (uchar) '240',(uchar) '241',(uchar) '242',(uchar) '243',(uchar) '244',(uchar) '245',(uchar) '246',(uchar) '247',
  140.   (uchar) '250',(uchar) '251',(uchar) '252',(uchar) '253',(uchar) '254',(uchar) '255',(uchar) '256',(uchar) '257',
  141.   (uchar) '260',(uchar) '261',(uchar) '262',(uchar) '263',(uchar) '264',(uchar) '265',(uchar) '266',(uchar) '267',
  142.   (uchar) '270',(uchar) '271',(uchar) '272',(uchar) '273',(uchar) '274',(uchar) '275',(uchar) '276',(uchar) '277',
  143.   (uchar) '300',(uchar) '301',(uchar) '302',(uchar) '303',(uchar) '304',(uchar) '305',(uchar) '306',(uchar) '307',
  144.   (uchar) '310',(uchar) '311',(uchar) '312',(uchar) '313',(uchar) '314',(uchar) '315',(uchar) '316',(uchar) '317',
  145.   (uchar) '320',(uchar) '321',(uchar) '322',(uchar) '323',(uchar) '324',(uchar) '325',(uchar) '326',(uchar) '327',
  146.   (uchar) '330',(uchar) '331',(uchar) '332',(uchar) '333',(uchar) '334',(uchar) '335',(uchar) '336',(uchar) '337',
  147.   (uchar) '340',(uchar) '341',(uchar) '342',(uchar) '343',(uchar) '344',(uchar) '345',(uchar) '346',(uchar) '347',
  148.   (uchar) '350',(uchar) '351',(uchar) '352',(uchar) '353',(uchar) '354',(uchar) '355',(uchar) '356',(uchar) '357',
  149.   (uchar) '360',(uchar) '361',(uchar) '362',(uchar) '363',(uchar) '364',(uchar) '365',(uchar) '366',(uchar) '367',
  150.   (uchar) '370',(uchar) '371',(uchar) '372',(uchar) '373',(uchar) '374',(uchar) '375',(uchar) '376',(uchar) '377',
  151. };
  152. /* Support for Chinese(GB2312) characters, by Miles Tsai (net-bull@126.com)
  153.   modified by Wei He (hewei@mail.ied.ac.cn) */
  154. #define isgb2312head(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xf7)
  155. #define isgb2312tail(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe)
  156. int ismbchar_gb2312(const char* p, const char *e)
  157. {
  158.   return (isgb2312head(*(p)) && (e)-(p)>1 && isgb2312tail(*((p)+1))? 2: 0);
  159. }
  160. my_bool ismbhead_gb2312(uint c)
  161. {
  162.   return isgb2312head(c);
  163. }
  164. int mbcharlen_gb2312(uint c)
  165. {
  166.   return (isgb2312head(c)? 2:0);
  167. }