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 
14 #ifndef __XML_CHVALID_H__
15 #define __XML_CHVALID_H__
16 
17 #include <libxml/xmlversion.h>
18 #include <libxml/xmlstring.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /*
25  * Define our typedefs and structures
26  *
27  */
28 typedef struct _xmlChSRange xmlChSRange;
29 typedef xmlChSRange *xmlChSRangePtr;
30 struct _xmlChSRange {
31     unsigned short	low;
32     unsigned short	high;
33 };
34 
35 typedef struct _xmlChLRange xmlChLRange;
36 typedef xmlChLRange *xmlChLRangePtr;
37 struct _xmlChLRange {
38     unsigned int	low;
39     unsigned int	high;
40 };
41 
42 typedef struct _xmlChRangeGroup xmlChRangeGroup;
43 typedef xmlChRangeGroup *xmlChRangeGroupPtr;
44 struct _xmlChRangeGroup {
45     int			nbShortRange;
46     int			nbLongRange;
47     xmlChSRangePtr	shortRange;	/* points to an array of ranges */
48     xmlChLRangePtr	longRange;
49 };
50 
51 /**
52  * Range checking routine
53  */
54 XMLPUBFUN int XMLCALL
55 		xmlCharInRange(unsigned int val, const xmlChRangeGroupPtr group);
56 
57 
58 /**
59  * xmlIsBaseChar_ch:
60  * @c: char to validate
61  *
62  * Automatically generated by genChRanges.py
63  */
64 #define xmlIsBaseChar_ch(c)	(((0x41 <= (c)) && ((c) <= 0x5a)) || \
65 				 ((0x61 <= (c)) && ((c) <= 0x7a)) || \
66 				 ((0xc0 <= (c)) && ((c) <= 0xd6)) || \
67 				 ((0xd8 <= (c)) && ((c) <= 0xf6)) || \
68 				  (0xf8 <= (c)))
69 
70 /**
71  * xmlIsBaseCharQ:
72  * @c: char to validate
73  *
74  * Automatically generated by genChRanges.py
75  */
76 #define xmlIsBaseCharQ(c)	(((c) < 0x100) ? \
77 				 xmlIsBaseChar_ch((c)) : \
78 				 xmlCharInRange((c), &xmlIsBaseCharGroup))
79 
80 XMLPUBVAR xmlChRangeGroup xmlIsBaseCharGroup;
81 
82 /**
83  * xmlIsBlank_ch:
84  * @c: char to validate
85  *
86  * Automatically generated by genChRanges.py
87  */
88 #define xmlIsBlank_ch(c)	(((c) == 0x20) || \
89 				 ((0x9 <= (c)) && ((c) <= 0xa)) || \
90 				 ((c) == 0xd))
91 
92 /**
93  * xmlIsBlankQ:
94  * @c: char to validate
95  *
96  * Automatically generated by genChRanges.py
97  */
98 #define xmlIsBlankQ(c)		(((c) < 0x100) ? \
99 				 xmlIsBlank_ch((c)) : 0)
100 
101 
102 /**
103  * xmlIsChar_ch:
104  * @c: char to validate
105  *
106  * Automatically generated by genChRanges.py
107  */
108 #define xmlIsChar_ch(c)		(((0x9 <= (c)) && ((c) <= 0xa)) || \
109 				 ((c) == 0xd) || \
110 				  (0x20 <= (c)))
111 
112 /**
113  * xmlIsCharQ:
114  * @c: char to validate
115  *
116  * Automatically generated by genChRanges.py
117  */
118 #define xmlIsCharQ(c)		(((c) < 0x100) ? \
119 				 xmlIsChar_ch((c)) :\
120 				(((0x100 <= (c)) && ((c) <= 0xd7ff)) || \
121 				 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \
122 				 ((0x10000 <= (c)) && ((c) <= 0x10ffff))))
123 
124 XMLPUBVAR xmlChRangeGroup xmlIsCharGroup;
125 
126 /**
127  * xmlIsCombiningQ:
128  * @c: char to validate
129  *
130  * Automatically generated by genChRanges.py
131  */
132 #define xmlIsCombiningQ(c)	(((c) < 0x100) ? \
133 				 0 : \
134 				 xmlCharInRange((c), &xmlIsCombiningGroup))
135 
136 XMLPUBVAR xmlChRangeGroup xmlIsCombiningGroup;
137 
138 /**
139  * xmlIsDigit_ch:
140  * @c: char to validate
141  *
142  * Automatically generated by genChRanges.py
143  */
144 #define xmlIsDigit_ch(c)	(((0x30 <= (c)) && ((c) <= 0x39)))
145 
146 /**
147  * xmlIsDigitQ:
148  * @c: char to validate
149  *
150  * Automatically generated by genChRanges.py
151  */
152 #define xmlIsDigitQ(c)		(((c) < 0x100) ? \
153 				 xmlIsDigit_ch((c)) : \
154 				 xmlCharInRange((c), &xmlIsDigitGroup))
155 
156 XMLPUBVAR xmlChRangeGroup xmlIsDigitGroup;
157 
158 /**
159  * xmlIsExtender_ch:
160  * @c: char to validate
161  *
162  * Automatically generated by genChRanges.py
163  */
164 #define xmlIsExtender_ch(c)	(((c) == 0xb7))
165 
166 /**
167  * xmlIsExtenderQ:
168  * @c: char to validate
169  *
170  * Automatically generated by genChRanges.py
171  */
172 #define xmlIsExtenderQ(c)	(((c) < 0x100) ? \
173 				 xmlIsExtender_ch((c)) : \
174 				 xmlCharInRange((c), &xmlIsExtenderGroup))
175 
176 XMLPUBVAR xmlChRangeGroup xmlIsExtenderGroup;
177 
178 /**
179  * xmlIsIdeographicQ:
180  * @c: char to validate
181  *
182  * Automatically generated by genChRanges.py
183  */
184 #define xmlIsIdeographicQ(c)	(((c) < 0x100) ? \
185 				 0 :\
186 				(((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \
187 				 ((c) == 0x3007) || \
188 				 ((0x3021 <= (c)) && ((c) <= 0x3029))))
189 
190 XMLPUBVAR xmlChRangeGroup xmlIsIdeographicGroup;
191 XMLPUBVAR unsigned char xmlIsPubidChar_tab[256];
192 
193 /**
194  * xmlIsPubidChar_ch:
195  * @c: char to validate
196  *
197  * Automatically generated by genChRanges.py
198  */
199 #define xmlIsPubidChar_ch(c)	(xmlIsPubidChar_tab[(c)])
200 
201 /**
202  * xmlIsPubidCharQ:
203  * @c: char to validate
204  *
205  * Automatically generated by genChRanges.py
206  */
207 #define xmlIsPubidCharQ(c)	(((c) < 0x100) ? \
208 				 xmlIsPubidChar_ch((c)) : 0)
209 
210 XMLPUBFUN int XMLCALL
211 		xmlIsBaseChar(unsigned int ch);
212 XMLPUBFUN int XMLCALL
213 		xmlIsBlank(unsigned int ch);
214 XMLPUBFUN int XMLCALL
215 		xmlIsChar(unsigned int ch);
216 XMLPUBFUN int XMLCALL
217 		xmlIsCombining(unsigned int ch);
218 XMLPUBFUN int XMLCALL
219 		xmlIsDigit(unsigned int ch);
220 XMLPUBFUN int XMLCALL
221 		xmlIsExtender(unsigned int ch);
222 XMLPUBFUN int XMLCALL
223 		xmlIsIdeographic(unsigned int ch);
224 XMLPUBFUN int XMLCALL
225 		xmlIsPubidChar(unsigned int ch);
226 
227 #ifdef __cplusplus
228 }
229 #endif
230 #endif /* __XML_CHVALID_H__ */
231