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

📄 m_ctype.h

📁 Linux snort-2.4.4源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Copyright (C) 2000 MySQL AB   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//*  A better inplementation of the UNIX ctype(3) library.  Notes:   my_global.h should be included before ctype.h*/#ifndef _m_ctype_h#define _m_ctype_h#ifdef	__cplusplusextern "C" {#endif#define MY_CS_NAME_SIZE			32#define MY_CS_CTYPE_TABLE_SIZE		257#define MY_CS_TO_LOWER_TABLE_SIZE	256#define MY_CS_TO_UPPER_TABLE_SIZE	256#define MY_CS_SORT_ORDER_TABLE_SIZE	256#define MY_CS_TO_UNI_TABLE_SIZE		256#define CHARSET_DIR	"charsets/"#define my_wc_t ulongtypedef struct unicase_info_st{  uint16 toupper;  uint16 tolower;  uint16 sort;} MY_UNICASE_INFO;#define MY_CS_ILSEQ	0#define MY_CS_ILUNI	0#define MY_CS_TOOSMALL	-1#define MY_CS_TOOFEW(n)	(-1-(n))#define MY_SEQ_INTTAIL	1#define MY_SEQ_SPACES	2        /* My charsets_list flags */#define MY_CS_COMPILED  1      /* compiled-in sets               */#define MY_CS_CONFIG    2      /* sets that have a *.conf file   */#define MY_CS_INDEX     4      /* sets listed in the Index file  */#define MY_CS_LOADED    8      /* sets that are currently loaded */#define MY_CS_BINSORT	16     /* if binary sort order           */#define MY_CS_PRIMARY	32     /* if primary collation           */#define MY_CS_STRNXFRM	64     /* if strnxfrm is used for sort   */#define MY_CS_UNICODE	128    /* is a charset is full unicode   */#define MY_CS_READY	256    /* if a charset is initialized    */#define MY_CS_AVAILABLE	512    /* If either compiled-in or loaded*/#define MY_CS_CSSORT	1024   /* if case sensitive sort order   */	#define MY_CHARSET_UNDEFINED 0typedef struct my_uni_idx_st{  uint16 from;  uint16 to;  uchar  *tab;} MY_UNI_IDX;typedef struct{  uint beg;  uint end;  uint mblen;} my_match_t;enum my_lex_states{  MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT,   MY_LEX_IDENT_SEP, MY_LEX_IDENT_START,  MY_LEX_REAL, MY_LEX_HEX_NUMBER,  MY_LEX_CMP_OP, MY_LEX_LONG_CMP_OP, MY_LEX_STRING, MY_LEX_COMMENT, MY_LEX_END,  MY_LEX_OPERATOR_OR_IDENT, MY_LEX_NUMBER_IDENT, MY_LEX_INT_OR_REAL,  MY_LEX_REAL_OR_POINT, MY_LEX_BOOL, MY_LEX_EOL, MY_LEX_ESCAPE,   MY_LEX_LONG_COMMENT, MY_LEX_END_LONG_COMMENT, MY_LEX_SEMICOLON,   MY_LEX_SET_VAR, MY_LEX_USER_END, MY_LEX_HOSTNAME, MY_LEX_SKIP,   MY_LEX_USER_VARIABLE_DELIMITER, MY_LEX_SYSTEM_VAR,  MY_LEX_IDENT_OR_KEYWORD,  MY_LEX_IDENT_OR_HEX, MY_LEX_IDENT_OR_BIN, MY_LEX_IDENT_OR_NCHAR,  MY_LEX_STRING_OR_DELIMITER};struct charset_info_st;typedef struct my_collation_handler_st{  my_bool (*init)(struct charset_info_st *, void *(*alloc)(uint));  /* Collation routines */  int     (*strnncoll)(struct charset_info_st *,		       const uchar *, uint, const uchar *, uint, my_bool);  int     (*strnncollsp)(struct charset_info_st *,		       const uchar *, uint, const uchar *, uint);  int     (*strnxfrm)(struct charset_info_st *,		      uchar *, uint, const uchar *, uint);  my_bool (*like_range)(struct charset_info_st *,			const char *s, uint s_length,			pchar w_prefix, pchar w_one, pchar w_many, 			uint res_length,			char *min_str, char *max_str,			uint *min_len, uint *max_len);  int     (*wildcmp)(struct charset_info_st *,  		     const char *str,const char *str_end,                     const char *wildstr,const char *wildend,                     int escape,int w_one, int w_many);  int  (*strcasecmp)(struct charset_info_st *, const char *, const char *);    uint (*instr)(struct charset_info_st *,                const char *b, uint b_length,                const char *s, uint s_length,                my_match_t *match, uint nmatch);    /* Hash calculation */  void (*hash_sort)(struct charset_info_st *cs, const uchar *key, uint len,		    ulong *nr1, ulong *nr2); } MY_COLLATION_HANDLER;extern MY_COLLATION_HANDLER my_collation_mb_bin_handler;extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler;extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler;typedef struct my_charset_handler_st{  my_bool (*init)(struct charset_info_st *, void *(*alloc)(uint));  /* Multibyte routines */  int     (*ismbchar)(struct charset_info_st *, const char *, const char *);  int     (*mbcharlen)(struct charset_info_st *, uint);  uint    (*numchars)(struct charset_info_st *, const char *b, const char *e);  uint    (*charpos)(struct charset_info_st *, const char *b, const char *e, uint pos);  uint    (*well_formed_len)(struct charset_info_st *,                             const char *b,const char *e,                             uint nchars, int *error);  uint    (*lengthsp)(struct charset_info_st *, const char *ptr, uint length);  uint    (*numcells)(struct charset_info_st *, const char *b, const char *e);    /* Unicode convertion */  int (*mb_wc)(struct charset_info_st *cs,my_wc_t *wc,	       const unsigned char *s,const unsigned char *e);  int (*wc_mb)(struct charset_info_st *cs,my_wc_t wc,	       unsigned char *s,unsigned char *e);    /* Functions for case and sort convertion */  void    (*caseup_str)(struct charset_info_st *, char *);  void    (*casedn_str)(struct charset_info_st *, char *);  void    (*caseup)(struct charset_info_st *, char *, uint);  void    (*casedn)(struct charset_info_st *, char *, uint);    /* Charset dependant snprintf() */  int  (*snprintf)(struct charset_info_st *, char *to, uint n, const char *fmt,		   ...);  int  (*long10_to_str)(struct charset_info_st *, char *to, uint n, int radix,			long int val);  int (*longlong10_to_str)(struct charset_info_st *, char *to, uint n,			   int radix, longlong val);    void (*fill)(struct charset_info_st *, char *to, uint len, int fill);    /* String-to-number convertion routines */  long        (*strntol)(struct charset_info_st *, const char *s, uint l,			 int base, char **e, int *err);  ulong      (*strntoul)(struct charset_info_st *, const char *s, uint l,			 int base, char **e, int *err);  longlong   (*strntoll)(struct charset_info_st *, const char *s, uint l,			 int base, char **e, int *err);  ulonglong (*strntoull)(struct charset_info_st *, const char *s, uint l,			 int base, char **e, int *err);  double      (*strntod)(struct charset_info_st *, char *s, uint l, char **e,			 int *err);  longlong (*my_strtoll10)(struct charset_info_st *cs,                           const char *nptr, char **endptr, int *error);  ulong        (*scan)(struct charset_info_st *, const char *b, const char *e,		       int sq);} MY_CHARSET_HANDLER;extern MY_CHARSET_HANDLER my_charset_8bit_handler;extern MY_CHARSET_HANDLER my_charset_ucs2_handler;typedef struct charset_info_st{  uint      number;  uint      primary_number;  uint      binary_number;  uint      state;  const char *csname;  const char *name;  const char *comment;  const char *tailoring;  uchar    *ctype;  uchar    *to_lower;  uchar    *to_upper;  uchar    *sort_order;  uint16   *contractions;  uint16   **sort_order_big;  uint16      *tab_to_uni;  MY_UNI_IDX  *tab_from_uni;  uchar     *state_map;  uchar     *ident_map;  uint      strxfrm_multiply;  uint      mbminlen;  uint      mbmaxlen;  uint16    min_sort_char;  uint16    max_sort_char; /* For LIKE optimization */    MY_CHARSET_HANDLER *cset;  MY_COLLATION_HANDLER *coll;  } CHARSET_INFO;

⌨️ 快捷键说明

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