1 /* libxml2 - Library for parsing XML documents 2 * Copyright (C) 2006-2019 Free Software Foundation, Inc. 3 * 4 * This file is not part of the GNU gettext program, but is used with 5 * GNU gettext. 6 * 7 * The original copyright notice is as follows: 8 */ 9 10 /* 11 * Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a copy 14 * of this software and associated documentation files (the "Software"), to deal 15 * in the Software without restriction, including without limitation the rights 16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 17 * copies of the Software, and to permit persons to whom the Software is fur- 18 * nished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included in 21 * all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- 25 * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 29 * THE SOFTWARE. 30 */ 31 32 /* 33 * Summary: Unicode character range checking 34 * Description: this module exports interfaces for the character 35 * range validation APIs 36 * 37 * This file is automatically generated from the cvs source 38 * definition files using the genChRanges.py Python script 39 * 40 * Generation date: Mon Mar 27 11:09:48 2006 41 * Sources: chvalid.def 42 * Author: William Brack <wbrack@mmm.com.hk> 43 */ 44 45 #ifndef __XML_CHVALID_H__ 46 #define __XML_CHVALID_H__ 47 48 #include <libxml/xmlversion.h> 49 #include <libxml/xmlstring.h> 50 51 #ifdef __cplusplus 52 extern "C" { 53 #endif 54 55 /* 56 * Define our typedefs and structures 57 * 58 */ 59 typedef struct _xmlChSRange xmlChSRange; 60 typedef xmlChSRange *xmlChSRangePtr; 61 struct _xmlChSRange { 62 unsigned short low; 63 unsigned short high; 64 }; 65 66 typedef struct _xmlChLRange xmlChLRange; 67 typedef xmlChLRange *xmlChLRangePtr; 68 struct _xmlChLRange { 69 unsigned int low; 70 unsigned int high; 71 }; 72 73 typedef struct _xmlChRangeGroup xmlChRangeGroup; 74 typedef xmlChRangeGroup *xmlChRangeGroupPtr; 75 struct _xmlChRangeGroup { 76 int nbShortRange; 77 int nbLongRange; 78 const xmlChSRange *shortRange; /* points to an array of ranges */ 79 const xmlChLRange *longRange; 80 }; 81 82 /** 83 * Range checking routine 84 */ 85 XMLPUBFUN int XMLCALL 86 xmlCharInRange(unsigned int val, const xmlChRangeGroup *group); 87 88 89 /** 90 * xmlIsBaseChar_ch: 91 * @c: char to validate 92 * 93 * Automatically generated by genChRanges.py 94 */ 95 #define xmlIsBaseChar_ch(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ 96 ((0x61 <= (c)) && ((c) <= 0x7a)) || \ 97 ((0xc0 <= (c)) && ((c) <= 0xd6)) || \ 98 ((0xd8 <= (c)) && ((c) <= 0xf6)) || \ 99 (0xf8 <= (c))) 100 101 /** 102 * xmlIsBaseCharQ: 103 * @c: char to validate 104 * 105 * Automatically generated by genChRanges.py 106 */ 107 #define xmlIsBaseCharQ(c) (((c) < 0x100) ? \ 108 xmlIsBaseChar_ch((c)) : \ 109 xmlCharInRange((c), &xmlIsBaseCharGroup)) 110 111 XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup; 112 113 /** 114 * xmlIsBlank_ch: 115 * @c: char to validate 116 * 117 * Automatically generated by genChRanges.py 118 */ 119 #define xmlIsBlank_ch(c) (((c) == 0x20) || \ 120 ((0x9 <= (c)) && ((c) <= 0xa)) || \ 121 ((c) == 0xd)) 122 123 /** 124 * xmlIsBlankQ: 125 * @c: char to validate 126 * 127 * Automatically generated by genChRanges.py 128 */ 129 #define xmlIsBlankQ(c) (((c) < 0x100) ? \ 130 xmlIsBlank_ch((c)) : 0) 131 132 133 /** 134 * xmlIsChar_ch: 135 * @c: char to validate 136 * 137 * Automatically generated by genChRanges.py 138 */ 139 #define xmlIsChar_ch(c) (((0x9 <= (c)) && ((c) <= 0xa)) || \ 140 ((c) == 0xd) || \ 141 (0x20 <= (c))) 142 143 /** 144 * xmlIsCharQ: 145 * @c: char to validate 146 * 147 * Automatically generated by genChRanges.py 148 */ 149 #define xmlIsCharQ(c) (((c) < 0x100) ? \ 150 xmlIsChar_ch((c)) :\ 151 (((0x100 <= (c)) && ((c) <= 0xd7ff)) || \ 152 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \ 153 ((0x10000 <= (c)) && ((c) <= 0x10ffff)))) 154 155 XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup; 156 157 /** 158 * xmlIsCombiningQ: 159 * @c: char to validate 160 * 161 * Automatically generated by genChRanges.py 162 */ 163 #define xmlIsCombiningQ(c) (((c) < 0x100) ? \ 164 0 : \ 165 xmlCharInRange((c), &xmlIsCombiningGroup)) 166 167 XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup; 168 169 /** 170 * xmlIsDigit_ch: 171 * @c: char to validate 172 * 173 * Automatically generated by genChRanges.py 174 */ 175 #define xmlIsDigit_ch(c) (((0x30 <= (c)) && ((c) <= 0x39))) 176 177 /** 178 * xmlIsDigitQ: 179 * @c: char to validate 180 * 181 * Automatically generated by genChRanges.py 182 */ 183 #define xmlIsDigitQ(c) (((c) < 0x100) ? \ 184 xmlIsDigit_ch((c)) : \ 185 xmlCharInRange((c), &xmlIsDigitGroup)) 186 187 XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup; 188 189 /** 190 * xmlIsExtender_ch: 191 * @c: char to validate 192 * 193 * Automatically generated by genChRanges.py 194 */ 195 #define xmlIsExtender_ch(c) (((c) == 0xb7)) 196 197 /** 198 * xmlIsExtenderQ: 199 * @c: char to validate 200 * 201 * Automatically generated by genChRanges.py 202 */ 203 #define xmlIsExtenderQ(c) (((c) < 0x100) ? \ 204 xmlIsExtender_ch((c)) : \ 205 xmlCharInRange((c), &xmlIsExtenderGroup)) 206 207 XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup; 208 209 /** 210 * xmlIsIdeographicQ: 211 * @c: char to validate 212 * 213 * Automatically generated by genChRanges.py 214 */ 215 #define xmlIsIdeographicQ(c) (((c) < 0x100) ? \ 216 0 :\ 217 (((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \ 218 ((c) == 0x3007) || \ 219 ((0x3021 <= (c)) && ((c) <= 0x3029)))) 220 221 XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup; 222 XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256]; 223 224 /** 225 * xmlIsPubidChar_ch: 226 * @c: char to validate 227 * 228 * Automatically generated by genChRanges.py 229 */ 230 #define xmlIsPubidChar_ch(c) (xmlIsPubidChar_tab[(c)]) 231 232 /** 233 * xmlIsPubidCharQ: 234 * @c: char to validate 235 * 236 * Automatically generated by genChRanges.py 237 */ 238 #define xmlIsPubidCharQ(c) (((c) < 0x100) ? \ 239 xmlIsPubidChar_ch((c)) : 0) 240 241 XMLPUBFUN int XMLCALL 242 xmlIsBaseChar(unsigned int ch); 243 XMLPUBFUN int XMLCALL 244 xmlIsBlank(unsigned int ch); 245 XMLPUBFUN int XMLCALL 246 xmlIsChar(unsigned int ch); 247 XMLPUBFUN int XMLCALL 248 xmlIsCombining(unsigned int ch); 249 XMLPUBFUN int XMLCALL 250 xmlIsDigit(unsigned int ch); 251 XMLPUBFUN int XMLCALL 252 xmlIsExtender(unsigned int ch); 253 XMLPUBFUN int XMLCALL 254 xmlIsIdeographic(unsigned int ch); 255 XMLPUBFUN int XMLCALL 256 xmlIsPubidChar(unsigned int ch); 257 258 #ifdef __cplusplus 259 } 260 #endif 261 #endif /* __XML_CHVALID_H__ */ 262