1251881Speter/*
2251881Speter * ctype.c:  Character classification routines
3251881Speter *
4251881Speter * ====================================================================
5251881Speter *    Licensed to the Apache Software Foundation (ASF) under one
6251881Speter *    or more contributor license agreements.  See the NOTICE file
7251881Speter *    distributed with this work for additional information
8251881Speter *    regarding copyright ownership.  The ASF licenses this file
9251881Speter *    to you under the Apache License, Version 2.0 (the
10251881Speter *    "License"); you may not use this file except in compliance
11251881Speter *    with the License.  You may obtain a copy of the License at
12251881Speter *
13251881Speter *      http://www.apache.org/licenses/LICENSE-2.0
14251881Speter *
15251881Speter *    Unless required by applicable law or agreed to in writing,
16251881Speter *    software distributed under the License is distributed on an
17251881Speter *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18251881Speter *    KIND, either express or implied.  See the License for the
19251881Speter *    specific language governing permissions and limitations
20251881Speter *    under the License.
21251881Speter * ====================================================================
22251881Speter */
23251881Speter
24251881Speter
25251881Speter
26251881Speter#include "svn_ctype.h"
27251881Speter
28289180Speter#ifndef WIN32
29289180Speterstatic
30289180Speter#else
31289180Speter/* This variable is exported as 'CONSTANT' in our .def file for libsvn_subr,
32289180Speter   with the name svn_ctype_table.
33289180Speter
34289180Speter   This long deprecated construct will export *a pointer to* the
35289180Speter   variable exported.
36289180Speter
37289180Speter   See http://support.microsoft.com/kb/90530/en-us for the ugly details on
38289180Speter   this system that was already deprecated when we started Subversion and
39289180Speter   on why we should have used __declspec(dllexport) when initially exporting
40289180Speter   this variable. (It would allow avoiding the pointer transformation).
41289180Speter
42289180Speter   But to keep backwards compatibility this symbol will have to stay public
43289180Speter   on Windows until Subversion 2.0. */
44289180Speter#endif
45251881Speterconst apr_uint32_t svn_ctype_table_internal[256] =
46251881Speter  {
47251881Speter    /* **** DO NOT EDIT! ****
48251881Speter       This table was generated by genctype.py, make changes there. */
49251881Speter    /* nul */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
50251881Speter    /* soh */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
51251881Speter    /* stx */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
52251881Speter    /* etx */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
53251881Speter    /* eot */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
54251881Speter    /* enq */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
55251881Speter    /* ack */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
56251881Speter    /* bel */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
57251881Speter    /* bs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
58251881Speter    /* ht  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
59251881Speter    /* nl  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
60251881Speter    /* vt  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
61251881Speter    /* np  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
62251881Speter    /* cr  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
63251881Speter    /* so  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
64251881Speter    /* si  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
65251881Speter    /* dle */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
66251881Speter    /* dc1 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
67251881Speter    /* dc2 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
68251881Speter    /* dc3 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
69251881Speter    /* dc4 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
70251881Speter    /* nak */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
71251881Speter    /* syn */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
72251881Speter    /* etb */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
73251881Speter    /* can */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
74251881Speter    /* em  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
75251881Speter    /* sub */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
76251881Speter    /* esc */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
77251881Speter    /* fs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
78251881Speter    /* gs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
79251881Speter    /* rs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
80251881Speter    /* us  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
81251881Speter    /* sp  */ SVN_CTYPE_ASCII | SVN_CTYPE_SPACE,
82251881Speter    /*  !  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
83251881Speter    /*  "  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
84251881Speter    /*  #  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
85251881Speter    /*  $  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
86251881Speter    /*  %  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
87251881Speter    /*  &  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
88251881Speter    /*  '  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
89251881Speter    /*  (  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
90251881Speter    /*  )  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
91251881Speter    /*  *  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
92251881Speter    /*  +  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
93251881Speter    /*  ,  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
94251881Speter    /*  -  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
95251881Speter    /*  .  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
96251881Speter    /*  /  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
97251881Speter    /*  0  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
98251881Speter    /*  1  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
99251881Speter    /*  2  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
100251881Speter    /*  3  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
101251881Speter    /*  4  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
102251881Speter    /*  5  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
103251881Speter    /*  6  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
104251881Speter    /*  7  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
105251881Speter    /*  8  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
106251881Speter    /*  9  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
107251881Speter    /*  :  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
108251881Speter    /*  ;  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
109251881Speter    /*  <  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
110251881Speter    /*  =  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
111251881Speter    /*  >  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
112251881Speter    /*  ?  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
113251881Speter    /*  @  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
114251881Speter    /*  A  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
115251881Speter    /*  B  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
116251881Speter    /*  C  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
117251881Speter    /*  D  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
118251881Speter    /*  E  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
119251881Speter    /*  F  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
120251881Speter    /*  G  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
121251881Speter    /*  H  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
122251881Speter    /*  I  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
123251881Speter    /*  J  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
124251881Speter    /*  K  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
125251881Speter    /*  L  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
126251881Speter    /*  M  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
127251881Speter    /*  N  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
128251881Speter    /*  O  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
129251881Speter    /*  P  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
130251881Speter    /*  Q  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
131251881Speter    /*  R  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
132251881Speter    /*  S  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
133251881Speter    /*  T  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
134251881Speter    /*  U  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
135251881Speter    /*  V  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
136251881Speter    /*  W  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
137251881Speter    /*  X  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
138251881Speter    /*  Y  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
139251881Speter    /*  Z  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
140251881Speter    /*  [  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
141251881Speter    /*  \  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
142251881Speter    /*  ]  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
143251881Speter    /*  ^  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
144251881Speter    /*  _  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
145251881Speter    /*  `  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
146251881Speter    /*  a  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
147251881Speter    /*  b  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
148251881Speter    /*  c  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
149251881Speter    /*  d  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
150251881Speter    /*  e  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
151251881Speter    /*  f  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
152251881Speter    /*  g  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
153251881Speter    /*  h  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
154251881Speter    /*  i  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
155251881Speter    /*  j  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
156251881Speter    /*  k  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
157251881Speter    /*  l  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
158251881Speter    /*  m  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
159251881Speter    /*  n  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
160251881Speter    /*  o  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
161251881Speter    /*  p  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
162251881Speter    /*  q  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
163251881Speter    /*  r  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
164251881Speter    /*  s  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
165251881Speter    /*  t  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
166251881Speter    /*  u  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
167251881Speter    /*  v  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
168251881Speter    /*  w  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
169251881Speter    /*  x  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
170251881Speter    /*  y  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
171251881Speter    /*  z  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
172251881Speter    /*  {  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
173251881Speter    /*  |  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
174251881Speter    /*  }  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
175251881Speter    /*  ~  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
176251881Speter    /* del */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
177251881Speter    /* x80 */ SVN_CTYPE_UTF8CONT,
178251881Speter    /* x81 */ SVN_CTYPE_UTF8CONT,
179251881Speter    /* x82 */ SVN_CTYPE_UTF8CONT,
180251881Speter    /* x83 */ SVN_CTYPE_UTF8CONT,
181251881Speter    /* x84 */ SVN_CTYPE_UTF8CONT,
182251881Speter    /* x85 */ SVN_CTYPE_UTF8CONT,
183251881Speter    /* x86 */ SVN_CTYPE_UTF8CONT,
184251881Speter    /* x87 */ SVN_CTYPE_UTF8CONT,
185251881Speter    /* x88 */ SVN_CTYPE_UTF8CONT,
186251881Speter    /* x89 */ SVN_CTYPE_UTF8CONT,
187251881Speter    /* x8a */ SVN_CTYPE_UTF8CONT,
188251881Speter    /* x8b */ SVN_CTYPE_UTF8CONT,
189251881Speter    /* x8c */ SVN_CTYPE_UTF8CONT,
190251881Speter    /* x8d */ SVN_CTYPE_UTF8CONT,
191251881Speter    /* x8e */ SVN_CTYPE_UTF8CONT,
192251881Speter    /* x8f */ SVN_CTYPE_UTF8CONT,
193251881Speter    /* x90 */ SVN_CTYPE_UTF8CONT,
194251881Speter    /* x91 */ SVN_CTYPE_UTF8CONT,
195251881Speter    /* x92 */ SVN_CTYPE_UTF8CONT,
196251881Speter    /* x93 */ SVN_CTYPE_UTF8CONT,
197251881Speter    /* x94 */ SVN_CTYPE_UTF8CONT,
198251881Speter    /* x95 */ SVN_CTYPE_UTF8CONT,
199251881Speter    /* x96 */ SVN_CTYPE_UTF8CONT,
200251881Speter    /* x97 */ SVN_CTYPE_UTF8CONT,
201251881Speter    /* x98 */ SVN_CTYPE_UTF8CONT,
202251881Speter    /* x99 */ SVN_CTYPE_UTF8CONT,
203251881Speter    /* x9a */ SVN_CTYPE_UTF8CONT,
204251881Speter    /* x9b */ SVN_CTYPE_UTF8CONT,
205251881Speter    /* x9c */ SVN_CTYPE_UTF8CONT,
206251881Speter    /* x9d */ SVN_CTYPE_UTF8CONT,
207251881Speter    /* x9e */ SVN_CTYPE_UTF8CONT,
208251881Speter    /* x9f */ SVN_CTYPE_UTF8CONT,
209251881Speter    /* xa0 */ SVN_CTYPE_UTF8CONT,
210251881Speter    /* xa1 */ SVN_CTYPE_UTF8CONT,
211251881Speter    /* xa2 */ SVN_CTYPE_UTF8CONT,
212251881Speter    /* xa3 */ SVN_CTYPE_UTF8CONT,
213251881Speter    /* xa4 */ SVN_CTYPE_UTF8CONT,
214251881Speter    /* xa5 */ SVN_CTYPE_UTF8CONT,
215251881Speter    /* xa6 */ SVN_CTYPE_UTF8CONT,
216251881Speter    /* xa7 */ SVN_CTYPE_UTF8CONT,
217251881Speter    /* xa8 */ SVN_CTYPE_UTF8CONT,
218251881Speter    /* xa9 */ SVN_CTYPE_UTF8CONT,
219251881Speter    /* xaa */ SVN_CTYPE_UTF8CONT,
220251881Speter    /* xab */ SVN_CTYPE_UTF8CONT,
221251881Speter    /* xac */ SVN_CTYPE_UTF8CONT,
222251881Speter    /* xad */ SVN_CTYPE_UTF8CONT,
223251881Speter    /* xae */ SVN_CTYPE_UTF8CONT,
224251881Speter    /* xaf */ SVN_CTYPE_UTF8CONT,
225251881Speter    /* xb0 */ SVN_CTYPE_UTF8CONT,
226251881Speter    /* xb1 */ SVN_CTYPE_UTF8CONT,
227251881Speter    /* xb2 */ SVN_CTYPE_UTF8CONT,
228251881Speter    /* xb3 */ SVN_CTYPE_UTF8CONT,
229251881Speter    /* xb4 */ SVN_CTYPE_UTF8CONT,
230251881Speter    /* xb5 */ SVN_CTYPE_UTF8CONT,
231251881Speter    /* xb6 */ SVN_CTYPE_UTF8CONT,
232251881Speter    /* xb7 */ SVN_CTYPE_UTF8CONT,
233251881Speter    /* xb8 */ SVN_CTYPE_UTF8CONT,
234251881Speter    /* xb9 */ SVN_CTYPE_UTF8CONT,
235251881Speter    /* xba */ SVN_CTYPE_UTF8CONT,
236251881Speter    /* xbb */ SVN_CTYPE_UTF8CONT,
237251881Speter    /* xbc */ SVN_CTYPE_UTF8CONT,
238251881Speter    /* xbd */ SVN_CTYPE_UTF8CONT,
239251881Speter    /* xbe */ SVN_CTYPE_UTF8CONT,
240251881Speter    /* xbf */ SVN_CTYPE_UTF8CONT,
241251881Speter    /* xc0 */ 0,
242251881Speter    /* xc1 */ SVN_CTYPE_UTF8LEAD,
243251881Speter    /* xc2 */ SVN_CTYPE_UTF8LEAD,
244251881Speter    /* xc3 */ SVN_CTYPE_UTF8LEAD,
245251881Speter    /* xc4 */ SVN_CTYPE_UTF8LEAD,
246251881Speter    /* xc5 */ SVN_CTYPE_UTF8LEAD,
247251881Speter    /* xc6 */ SVN_CTYPE_UTF8LEAD,
248251881Speter    /* xc7 */ SVN_CTYPE_UTF8LEAD,
249251881Speter    /* xc8 */ SVN_CTYPE_UTF8LEAD,
250251881Speter    /* xc9 */ SVN_CTYPE_UTF8LEAD,
251251881Speter    /* xca */ SVN_CTYPE_UTF8LEAD,
252251881Speter    /* xcb */ SVN_CTYPE_UTF8LEAD,
253251881Speter    /* xcc */ SVN_CTYPE_UTF8LEAD,
254251881Speter    /* xcd */ SVN_CTYPE_UTF8LEAD,
255251881Speter    /* xce */ SVN_CTYPE_UTF8LEAD,
256251881Speter    /* xcf */ SVN_CTYPE_UTF8LEAD,
257251881Speter    /* xd0 */ SVN_CTYPE_UTF8LEAD,
258251881Speter    /* xd1 */ SVN_CTYPE_UTF8LEAD,
259251881Speter    /* xd2 */ SVN_CTYPE_UTF8LEAD,
260251881Speter    /* xd3 */ SVN_CTYPE_UTF8LEAD,
261251881Speter    /* xd4 */ SVN_CTYPE_UTF8LEAD,
262251881Speter    /* xd5 */ SVN_CTYPE_UTF8LEAD,
263251881Speter    /* xd6 */ SVN_CTYPE_UTF8LEAD,
264251881Speter    /* xd7 */ SVN_CTYPE_UTF8LEAD,
265251881Speter    /* xd8 */ SVN_CTYPE_UTF8LEAD,
266251881Speter    /* xd9 */ SVN_CTYPE_UTF8LEAD,
267251881Speter    /* xda */ SVN_CTYPE_UTF8LEAD,
268251881Speter    /* xdb */ SVN_CTYPE_UTF8LEAD,
269251881Speter    /* xdc */ SVN_CTYPE_UTF8LEAD,
270251881Speter    /* xdd */ SVN_CTYPE_UTF8LEAD,
271251881Speter    /* xde */ SVN_CTYPE_UTF8LEAD,
272251881Speter    /* xdf */ SVN_CTYPE_UTF8LEAD,
273251881Speter    /* xe0 */ 0,
274251881Speter    /* xe1 */ SVN_CTYPE_UTF8LEAD,
275251881Speter    /* xe2 */ SVN_CTYPE_UTF8LEAD,
276251881Speter    /* xe3 */ SVN_CTYPE_UTF8LEAD,
277251881Speter    /* xe4 */ SVN_CTYPE_UTF8LEAD,
278251881Speter    /* xe5 */ SVN_CTYPE_UTF8LEAD,
279251881Speter    /* xe6 */ SVN_CTYPE_UTF8LEAD,
280251881Speter    /* xe7 */ SVN_CTYPE_UTF8LEAD,
281251881Speter    /* xe8 */ SVN_CTYPE_UTF8LEAD,
282251881Speter    /* xe9 */ SVN_CTYPE_UTF8LEAD,
283251881Speter    /* xea */ SVN_CTYPE_UTF8LEAD,
284251881Speter    /* xeb */ SVN_CTYPE_UTF8LEAD,
285251881Speter    /* xec */ SVN_CTYPE_UTF8LEAD,
286251881Speter    /* xed */ SVN_CTYPE_UTF8LEAD,
287251881Speter    /* xee */ SVN_CTYPE_UTF8LEAD,
288251881Speter    /* xef */ SVN_CTYPE_UTF8LEAD,
289251881Speter    /* xf0 */ 0,
290251881Speter    /* xf1 */ SVN_CTYPE_UTF8LEAD,
291251881Speter    /* xf2 */ SVN_CTYPE_UTF8LEAD,
292251881Speter    /* xf3 */ SVN_CTYPE_UTF8LEAD,
293251881Speter    /* xf4 */ SVN_CTYPE_UTF8LEAD,
294251881Speter    /* xf5 */ SVN_CTYPE_UTF8LEAD,
295251881Speter    /* xf6 */ SVN_CTYPE_UTF8LEAD,
296251881Speter    /* xf7 */ SVN_CTYPE_UTF8LEAD,
297251881Speter    /* xf8 */ 0,
298251881Speter    /* xf9 */ SVN_CTYPE_UTF8LEAD,
299251881Speter    /* xfa */ SVN_CTYPE_UTF8LEAD,
300251881Speter    /* xfb */ SVN_CTYPE_UTF8LEAD,
301251881Speter    /* xfc */ 0,
302251881Speter    /* xfd */ SVN_CTYPE_UTF8LEAD,
303251881Speter    /* xfe */ 0,
304251881Speter    /* xff */ 0
305251881Speter  };
306251881Speter
307251881Speterconst apr_uint32_t *const svn_ctype_table = svn_ctype_table_internal;
308251881Speter
309251881Speterstatic const unsigned char casefold_table[256] =
310251881Speter  {
311251881Speter    /* Identity, except {97:122} => {65:90} */
312251881Speter      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
313251881Speter     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
314251881Speter     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
315251881Speter     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
316251881Speter     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
317251881Speter     80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
318251881Speter     96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
319251881Speter     80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
320251881Speter    128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
321251881Speter    144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
322251881Speter    160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
323251881Speter    176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
324251881Speter    192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
325251881Speter    208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
326251881Speter    224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
327251881Speter    240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
328251881Speter  };
329251881Speter
330251881Speterint
331251881Spetersvn_ctype_casecmp(int a, int b)
332251881Speter{
333251881Speter  const int A = casefold_table[(unsigned char)a];
334251881Speter  const int B = casefold_table[(unsigned char)b];
335251881Speter  return A - B;
336251881Speter}
337