1 /* 2 * Summary: Unicode character range checking 3 * Description: this module exports interfaces for the character 4 * range validation APIs 5 * 6 * This file is automatically generated from the cvs source 7 * definition files using the genChRanges.py Python script 8 * 9 * Generation date: Tue Nov 18 08:14:21 2003 10 * Sources: chvalid.def 11 * Author: William Brack <wbrack@mmm.com.hk> 12 * 13 * See Copyright for the status of this software. 14 * Portion Copyright � 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 15 */ 16 17 /** @file 18 @publishedAll 19 @released 20 */ 21 22 #ifndef XML_CHVALID_H 23 #define XML_CHVALID_H 24 25 #pragma warning(disable: 4127 4132 4510 4512 4610) 26 27 #include "libxml2_xmlstring.h" 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 /* 34 * Define our typedefs and structures 35 * 36 */ 37 38 // XMLENGINE: xmlChSRangePtr declared as const now 39 typedef struct _xmlChSRange xmlChSRange; 40 typedef const xmlChSRange* xmlChSRangePtr; 41 struct _xmlChSRange { 42 const unsigned short low; 43 const unsigned short high; 44 }; 45 46 typedef struct _xmlChLRange xmlChLRange; 47 typedef const xmlChLRange* xmlChLRangePtr; 48 struct _xmlChLRange { 49 const unsigned int low; 50 const unsigned int high; 51 }; 52 53 typedef struct _xmlChRangeGroup xmlChRangeGroup; 54 typedef const xmlChRangeGroup *xmlChRangeGroupPtr; 55 struct _xmlChRangeGroup { 56 const int nbShortRange; 57 const int nbLongRange; 58 const xmlChSRangePtr shortRange; /* points to an array of ranges */ 59 const xmlChLRangePtr longRange; 60 }; 61 62 /** 63 * Range checking routine 64 */ 65 XMLPUBFUN int XMLCALL 66 xmlCharInRange(unsigned int val, const xmlChRangeGroupPtr group); 67 68 69 /** 70 * xmlIsBaseChar_ch: 71 * @c: char to validate 72 * 73 * Automatically generated by genChRanges.py 74 */ 75 #define xmlIsBaseChar_ch(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ 76 ((0x61 <= (c)) && ((c) <= 0x7a)) || \ 77 ((0xc0 <= (c)) && ((c) <= 0xd6)) || \ 78 ((0xd8 <= (c)) && ((c) <= 0xf6)) || \ 79 (0xf8 <= (c))) 80 #ifndef UNDEF_IMPORT_C_IN_DATA 81 XMLPUBVAR const xmlChSRange xmlIsBaseChar_srng[197]; 82 #endif 83 /** 84 * xmlIsBaseCharQ: 85 * @c: char to validate 86 * 87 * Automatically generated by genChRanges.py 88 */ 89 #define xmlIsBaseCharQ(c) (((c) < 0x100) ? \ 90 xmlIsBaseChar_ch((c)) : \ 91 xmlCharInRange((c), &xmlIsBaseCharGroup)) 92 #ifndef UNDEF_IMPORT_C_IN_DATA 93 XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup; 94 #endif 95 /** 96 * xmlIsBlank_ch: 97 * @c: char to validate 98 * 99 * Automatically generated by genChRanges.py 100 * 101 * OOM: never 102 */ 103 #define xmlIsBlank_ch(c) (((c) == 0x20) || \ 104 ((0x9 <= (c)) && ((c) <= 0xa)) || \ 105 ((c) == 0xd)) 106 107 /** 108 * xmlIsBlankQ: 109 * @c: char to validate 110 * 111 * Automatically generated by genChRanges.py 112 */ 113 #define xmlIsBlankQ(c) (((c) < 0x100) ? \ 114 xmlIsBlank_ch((c)) : 0) 115 116 117 /** 118 * xmlIsChar_ch: 119 * @c: char to validate 120 * 121 * Automatically generated by genChRanges.py 122 */ 123 #define xmlIsChar_ch(c) (((0x9 <= (c)) && ((c) <= 0xa)) || \ 124 ((c) == 0xd) || \ 125 (0x20 <= (c))) 126 127 /** 128 * xmlIsCharQ: 129 * @c: char to validate 130 * 131 * Automatically generated by genChRanges.py 132 */ 133 #define xmlIsCharQ(c) (((c) < 0x100) ? \ 134 xmlIsChar_ch((c)) :\ 135 (((0x100 <= (c)) && ((c) <= 0xd7ff)) || \ 136 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \ 137 ((0x10000 <= (c)) && ((c) <= 0x10ffff)))) 138 139 //XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup; 140 141 /** 142 * xmlIsCombiningQ: 143 * @c: char to validate 144 * 145 * Automatically generated by genChRanges.py 146 */ 147 #define xmlIsCombiningQ(c) (((c) < 0x100) ? \ 148 0 : \ 149 xmlCharInRange((c), &xmlIsCombiningGroup)) 150 #ifndef UNDEF_IMPORT_C_IN_DATA 151 XMLPUBVAR const xmlChSRange xmlIsCombining_srng[]; 152 XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup; 153 #endif 154 /** 155 * xmlIsDigit_ch: 156 * @c: char to validate 157 * 158 * Automatically generated by genChRanges.py 159 */ 160 #define xmlIsDigit_ch(c) (((0x30 <= (c)) && ((c) <= 0x39))) 161 162 /** 163 * xmlIsDigitQ: 164 * @c: char to validate 165 * 166 * Automatically generated by genChRanges.py 167 */ 168 #define xmlIsDigitQ(c) (((c) < 0x100) ? \ 169 xmlIsDigit_ch((c)) : \ 170 xmlCharInRange((c), &xmlIsDigitGroup)) 171 #ifndef UNDEF_IMPORT_C_IN_DATA 172 XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup; 173 XMLPUBVAR const xmlChSRange xmlIsDigit_srng[]; 174 #endif 175 /** 176 * xmlIsExtender_ch: 177 * @c: char to validate 178 * 179 * Automatically generated by genChRanges.py 180 */ 181 #define xmlIsExtender_ch(c) (((c) == 0xb7)) 182 183 /** 184 * xmlIsExtenderQ: 185 * @c: char to validate 186 * 187 * Automatically generated by genChRanges.py 188 */ 189 #define xmlIsExtenderQ(c) (((c) < 0x100) ? \ 190 xmlIsExtender_ch((c)) : \ 191 xmlCharInRange((c), &xmlIsExtenderGroup)) 192 #ifndef UNDEF_IMPORT_C_IN_DATA 193 XMLPUBVAR const xmlChSRange xmlIsExtender_srng[]; 194 XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup; 195 #endif 196 /** 197 * xmlIsIdeographicQ: 198 * @c: char to validate 199 * 200 * Automatically generated by genChRanges.py 201 */ 202 #define xmlIsIdeographicQ(c) (((c) < 0x100) ? 0 : \ 203 (((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \ 204 ((c) == 0x3007) || \ 205 ((0x3021 <= (c)) && ((c) <= 0x3029)))) 206 207 /** 208 * xmlIsPubidChar_ch: 209 * @c: char to validate 210 * 211 * Automatically generated by genChRanges.py 212 */ 213 #define xmlIsPubidChar_ch(c) (xmlIsPubidChar_tab[(c)]) 214 215 /* 216 * The initial tables ({func_name}_tab) are used to validate whether a 217 * single-byte character is within the specified group. Each table 218 * contains 256 bytes, with each byte representing one of the 256 219 * possible characters. If the table byte is set, the character is 220 * allowed. 221 * 222 */ 223 #ifndef UNDEF_IMPORT_C_IN_DATA 224 XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256]; 225 #endif 226 /** 227 * xmlIsPubidCharQ: 228 * @c: char to validate 229 * 230 * Automatically generated by genChRanges.py 231 */ 232 #define xmlIsPubidCharQ(c) (((c) < 0x100) ? xmlIsPubidChar_ch((c)) : 0) 233 234 #ifndef XMLENGINE_EXCLUDE_UNUSED 235 // these are deprecated and replaced by macroses (for performance reasons) 236 XMLPUBFUN int XMLCALL xmlIsBaseChar (unsigned int ch); 237 XMLPUBFUN int XMLCALL xmlIsBlank (unsigned int ch); 238 XMLPUBFUN int XMLCALL xmlIsChar (unsigned int ch); 239 XMLPUBFUN int XMLCALL xmlIsCombining (unsigned int ch); 240 XMLPUBFUN int XMLCALL xmlIsDigit (unsigned int ch); 241 XMLPUBFUN int XMLCALL xmlIsExtender (unsigned int ch); 242 XMLPUBFUN int XMLCALL xmlIsIdeographic(unsigned int ch); 243 XMLPUBFUN int XMLCALL xmlIsPubidChar (unsigned int ch); 244 #endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */ 245 246 247 #ifdef __cplusplus 248 } 249 #endif 250 #endif /* XML_CHVALID_H */ 251 252