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
28251881Speterconst apr_uint32_t svn_ctype_table_internal[256] =
29251881Speter  {
30251881Speter    /* **** DO NOT EDIT! ****
31251881Speter       This table was generated by genctype.py, make changes there. */
32251881Speter    /* nul */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
33251881Speter    /* soh */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
34251881Speter    /* stx */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
35251881Speter    /* etx */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
36251881Speter    /* eot */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
37251881Speter    /* enq */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
38251881Speter    /* ack */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
39251881Speter    /* bel */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
40251881Speter    /* bs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
41251881Speter    /* ht  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
42251881Speter    /* nl  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
43251881Speter    /* vt  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
44251881Speter    /* np  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
45251881Speter    /* cr  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL | SVN_CTYPE_SPACE,
46251881Speter    /* so  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
47251881Speter    /* si  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
48251881Speter    /* dle */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
49251881Speter    /* dc1 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
50251881Speter    /* dc2 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
51251881Speter    /* dc3 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
52251881Speter    /* dc4 */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
53251881Speter    /* nak */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
54251881Speter    /* syn */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
55251881Speter    /* etb */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
56251881Speter    /* can */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
57251881Speter    /* em  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
58251881Speter    /* sub */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
59251881Speter    /* esc */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
60251881Speter    /* fs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
61251881Speter    /* gs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
62251881Speter    /* rs  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
63251881Speter    /* us  */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
64251881Speter    /* sp  */ SVN_CTYPE_ASCII | SVN_CTYPE_SPACE,
65251881Speter    /*  !  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
66251881Speter    /*  "  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
67251881Speter    /*  #  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
68251881Speter    /*  $  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
69251881Speter    /*  %  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
70251881Speter    /*  &  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
71251881Speter    /*  '  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
72251881Speter    /*  (  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
73251881Speter    /*  )  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
74251881Speter    /*  *  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
75251881Speter    /*  +  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
76251881Speter    /*  ,  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
77251881Speter    /*  -  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
78251881Speter    /*  .  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
79251881Speter    /*  /  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
80251881Speter    /*  0  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
81251881Speter    /*  1  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
82251881Speter    /*  2  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
83251881Speter    /*  3  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
84251881Speter    /*  4  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
85251881Speter    /*  5  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
86251881Speter    /*  6  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
87251881Speter    /*  7  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
88251881Speter    /*  8  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
89251881Speter    /*  9  */ SVN_CTYPE_ASCII | SVN_CTYPE_DIGIT,
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    /*  A  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
98251881Speter    /*  B  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
99251881Speter    /*  C  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
100251881Speter    /*  D  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
101251881Speter    /*  E  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
102251881Speter    /*  F  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER | SVN_CTYPE_XALPHA,
103251881Speter    /*  G  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
104251881Speter    /*  H  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
105251881Speter    /*  I  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
106251881Speter    /*  J  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
107251881Speter    /*  K  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
108251881Speter    /*  L  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
109251881Speter    /*  M  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
110251881Speter    /*  N  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
111251881Speter    /*  O  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
112251881Speter    /*  P  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
113251881Speter    /*  Q  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
114251881Speter    /*  R  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
115251881Speter    /*  S  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
116251881Speter    /*  T  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
117251881Speter    /*  U  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
118251881Speter    /*  V  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
119251881Speter    /*  W  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
120251881Speter    /*  X  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
121251881Speter    /*  Y  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
122251881Speter    /*  Z  */ SVN_CTYPE_ASCII | SVN_CTYPE_UPPER,
123251881Speter    /*  [  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
124251881Speter    /*  \  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
125251881Speter    /*  ]  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
126251881Speter    /*  ^  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
127251881Speter    /*  _  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
128251881Speter    /*  `  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
129251881Speter    /*  a  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
130251881Speter    /*  b  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
131251881Speter    /*  c  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
132251881Speter    /*  d  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
133251881Speter    /*  e  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
134251881Speter    /*  f  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER | SVN_CTYPE_XALPHA,
135251881Speter    /*  g  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
136251881Speter    /*  h  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
137251881Speter    /*  i  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
138251881Speter    /*  j  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
139251881Speter    /*  k  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
140251881Speter    /*  l  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
141251881Speter    /*  m  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
142251881Speter    /*  n  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
143251881Speter    /*  o  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
144251881Speter    /*  p  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
145251881Speter    /*  q  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
146251881Speter    /*  r  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
147251881Speter    /*  s  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
148251881Speter    /*  t  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
149251881Speter    /*  u  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
150251881Speter    /*  v  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
151251881Speter    /*  w  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
152251881Speter    /*  x  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
153251881Speter    /*  y  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
154251881Speter    /*  z  */ SVN_CTYPE_ASCII | SVN_CTYPE_LOWER,
155251881Speter    /*  {  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
156251881Speter    /*  |  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
157251881Speter    /*  }  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
158251881Speter    /*  ~  */ SVN_CTYPE_ASCII | SVN_CTYPE_PUNCT,
159251881Speter    /* del */ SVN_CTYPE_ASCII | SVN_CTYPE_CNTRL,
160251881Speter    /* x80 */ SVN_CTYPE_UTF8CONT,
161251881Speter    /* x81 */ SVN_CTYPE_UTF8CONT,
162251881Speter    /* x82 */ SVN_CTYPE_UTF8CONT,
163251881Speter    /* x83 */ SVN_CTYPE_UTF8CONT,
164251881Speter    /* x84 */ SVN_CTYPE_UTF8CONT,
165251881Speter    /* x85 */ SVN_CTYPE_UTF8CONT,
166251881Speter    /* x86 */ SVN_CTYPE_UTF8CONT,
167251881Speter    /* x87 */ SVN_CTYPE_UTF8CONT,
168251881Speter    /* x88 */ SVN_CTYPE_UTF8CONT,
169251881Speter    /* x89 */ SVN_CTYPE_UTF8CONT,
170251881Speter    /* x8a */ SVN_CTYPE_UTF8CONT,
171251881Speter    /* x8b */ SVN_CTYPE_UTF8CONT,
172251881Speter    /* x8c */ SVN_CTYPE_UTF8CONT,
173251881Speter    /* x8d */ SVN_CTYPE_UTF8CONT,
174251881Speter    /* x8e */ SVN_CTYPE_UTF8CONT,
175251881Speter    /* x8f */ SVN_CTYPE_UTF8CONT,
176251881Speter    /* x90 */ SVN_CTYPE_UTF8CONT,
177251881Speter    /* x91 */ SVN_CTYPE_UTF8CONT,
178251881Speter    /* x92 */ SVN_CTYPE_UTF8CONT,
179251881Speter    /* x93 */ SVN_CTYPE_UTF8CONT,
180251881Speter    /* x94 */ SVN_CTYPE_UTF8CONT,
181251881Speter    /* x95 */ SVN_CTYPE_UTF8CONT,
182251881Speter    /* x96 */ SVN_CTYPE_UTF8CONT,
183251881Speter    /* x97 */ SVN_CTYPE_UTF8CONT,
184251881Speter    /* x98 */ SVN_CTYPE_UTF8CONT,
185251881Speter    /* x99 */ SVN_CTYPE_UTF8CONT,
186251881Speter    /* x9a */ SVN_CTYPE_UTF8CONT,
187251881Speter    /* x9b */ SVN_CTYPE_UTF8CONT,
188251881Speter    /* x9c */ SVN_CTYPE_UTF8CONT,
189251881Speter    /* x9d */ SVN_CTYPE_UTF8CONT,
190251881Speter    /* x9e */ SVN_CTYPE_UTF8CONT,
191251881Speter    /* x9f */ SVN_CTYPE_UTF8CONT,
192251881Speter    /* xa0 */ SVN_CTYPE_UTF8CONT,
193251881Speter    /* xa1 */ SVN_CTYPE_UTF8CONT,
194251881Speter    /* xa2 */ SVN_CTYPE_UTF8CONT,
195251881Speter    /* xa3 */ SVN_CTYPE_UTF8CONT,
196251881Speter    /* xa4 */ SVN_CTYPE_UTF8CONT,
197251881Speter    /* xa5 */ SVN_CTYPE_UTF8CONT,
198251881Speter    /* xa6 */ SVN_CTYPE_UTF8CONT,
199251881Speter    /* xa7 */ SVN_CTYPE_UTF8CONT,
200251881Speter    /* xa8 */ SVN_CTYPE_UTF8CONT,
201251881Speter    /* xa9 */ SVN_CTYPE_UTF8CONT,
202251881Speter    /* xaa */ SVN_CTYPE_UTF8CONT,
203251881Speter    /* xab */ SVN_CTYPE_UTF8CONT,
204251881Speter    /* xac */ SVN_CTYPE_UTF8CONT,
205251881Speter    /* xad */ SVN_CTYPE_UTF8CONT,
206251881Speter    /* xae */ SVN_CTYPE_UTF8CONT,
207251881Speter    /* xaf */ SVN_CTYPE_UTF8CONT,
208251881Speter    /* xb0 */ SVN_CTYPE_UTF8CONT,
209251881Speter    /* xb1 */ SVN_CTYPE_UTF8CONT,
210251881Speter    /* xb2 */ SVN_CTYPE_UTF8CONT,
211251881Speter    /* xb3 */ SVN_CTYPE_UTF8CONT,
212251881Speter    /* xb4 */ SVN_CTYPE_UTF8CONT,
213251881Speter    /* xb5 */ SVN_CTYPE_UTF8CONT,
214251881Speter    /* xb6 */ SVN_CTYPE_UTF8CONT,
215251881Speter    /* xb7 */ SVN_CTYPE_UTF8CONT,
216251881Speter    /* xb8 */ SVN_CTYPE_UTF8CONT,
217251881Speter    /* xb9 */ SVN_CTYPE_UTF8CONT,
218251881Speter    /* xba */ SVN_CTYPE_UTF8CONT,
219251881Speter    /* xbb */ SVN_CTYPE_UTF8CONT,
220251881Speter    /* xbc */ SVN_CTYPE_UTF8CONT,
221251881Speter    /* xbd */ SVN_CTYPE_UTF8CONT,
222251881Speter    /* xbe */ SVN_CTYPE_UTF8CONT,
223251881Speter    /* xbf */ SVN_CTYPE_UTF8CONT,
224251881Speter    /* xc0 */ 0,
225251881Speter    /* xc1 */ SVN_CTYPE_UTF8LEAD,
226251881Speter    /* xc2 */ SVN_CTYPE_UTF8LEAD,
227251881Speter    /* xc3 */ SVN_CTYPE_UTF8LEAD,
228251881Speter    /* xc4 */ SVN_CTYPE_UTF8LEAD,
229251881Speter    /* xc5 */ SVN_CTYPE_UTF8LEAD,
230251881Speter    /* xc6 */ SVN_CTYPE_UTF8LEAD,
231251881Speter    /* xc7 */ SVN_CTYPE_UTF8LEAD,
232251881Speter    /* xc8 */ SVN_CTYPE_UTF8LEAD,
233251881Speter    /* xc9 */ SVN_CTYPE_UTF8LEAD,
234251881Speter    /* xca */ SVN_CTYPE_UTF8LEAD,
235251881Speter    /* xcb */ SVN_CTYPE_UTF8LEAD,
236251881Speter    /* xcc */ SVN_CTYPE_UTF8LEAD,
237251881Speter    /* xcd */ SVN_CTYPE_UTF8LEAD,
238251881Speter    /* xce */ SVN_CTYPE_UTF8LEAD,
239251881Speter    /* xcf */ SVN_CTYPE_UTF8LEAD,
240251881Speter    /* xd0 */ SVN_CTYPE_UTF8LEAD,
241251881Speter    /* xd1 */ SVN_CTYPE_UTF8LEAD,
242251881Speter    /* xd2 */ SVN_CTYPE_UTF8LEAD,
243251881Speter    /* xd3 */ SVN_CTYPE_UTF8LEAD,
244251881Speter    /* xd4 */ SVN_CTYPE_UTF8LEAD,
245251881Speter    /* xd5 */ SVN_CTYPE_UTF8LEAD,
246251881Speter    /* xd6 */ SVN_CTYPE_UTF8LEAD,
247251881Speter    /* xd7 */ SVN_CTYPE_UTF8LEAD,
248251881Speter    /* xd8 */ SVN_CTYPE_UTF8LEAD,
249251881Speter    /* xd9 */ SVN_CTYPE_UTF8LEAD,
250251881Speter    /* xda */ SVN_CTYPE_UTF8LEAD,
251251881Speter    /* xdb */ SVN_CTYPE_UTF8LEAD,
252251881Speter    /* xdc */ SVN_CTYPE_UTF8LEAD,
253251881Speter    /* xdd */ SVN_CTYPE_UTF8LEAD,
254251881Speter    /* xde */ SVN_CTYPE_UTF8LEAD,
255251881Speter    /* xdf */ SVN_CTYPE_UTF8LEAD,
256251881Speter    /* xe0 */ 0,
257251881Speter    /* xe1 */ SVN_CTYPE_UTF8LEAD,
258251881Speter    /* xe2 */ SVN_CTYPE_UTF8LEAD,
259251881Speter    /* xe3 */ SVN_CTYPE_UTF8LEAD,
260251881Speter    /* xe4 */ SVN_CTYPE_UTF8LEAD,
261251881Speter    /* xe5 */ SVN_CTYPE_UTF8LEAD,
262251881Speter    /* xe6 */ SVN_CTYPE_UTF8LEAD,
263251881Speter    /* xe7 */ SVN_CTYPE_UTF8LEAD,
264251881Speter    /* xe8 */ SVN_CTYPE_UTF8LEAD,
265251881Speter    /* xe9 */ SVN_CTYPE_UTF8LEAD,
266251881Speter    /* xea */ SVN_CTYPE_UTF8LEAD,
267251881Speter    /* xeb */ SVN_CTYPE_UTF8LEAD,
268251881Speter    /* xec */ SVN_CTYPE_UTF8LEAD,
269251881Speter    /* xed */ SVN_CTYPE_UTF8LEAD,
270251881Speter    /* xee */ SVN_CTYPE_UTF8LEAD,
271251881Speter    /* xef */ SVN_CTYPE_UTF8LEAD,
272251881Speter    /* xf0 */ 0,
273251881Speter    /* xf1 */ SVN_CTYPE_UTF8LEAD,
274251881Speter    /* xf2 */ SVN_CTYPE_UTF8LEAD,
275251881Speter    /* xf3 */ SVN_CTYPE_UTF8LEAD,
276251881Speter    /* xf4 */ SVN_CTYPE_UTF8LEAD,
277251881Speter    /* xf5 */ SVN_CTYPE_UTF8LEAD,
278251881Speter    /* xf6 */ SVN_CTYPE_UTF8LEAD,
279251881Speter    /* xf7 */ SVN_CTYPE_UTF8LEAD,
280251881Speter    /* xf8 */ 0,
281251881Speter    /* xf9 */ SVN_CTYPE_UTF8LEAD,
282251881Speter    /* xfa */ SVN_CTYPE_UTF8LEAD,
283251881Speter    /* xfb */ SVN_CTYPE_UTF8LEAD,
284251881Speter    /* xfc */ 0,
285251881Speter    /* xfd */ SVN_CTYPE_UTF8LEAD,
286251881Speter    /* xfe */ 0,
287251881Speter    /* xff */ 0
288251881Speter  };
289251881Speter
290251881Speterconst apr_uint32_t *const svn_ctype_table = svn_ctype_table_internal;
291251881Speter
292251881Speterstatic const unsigned char casefold_table[256] =
293251881Speter  {
294251881Speter    /* Identity, except {97:122} => {65:90} */
295251881Speter      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
296251881Speter     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
297251881Speter     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
298251881Speter     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
299251881Speter     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
300251881Speter     80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
301251881Speter     96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
302251881Speter     80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
303251881Speter    128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
304251881Speter    144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
305251881Speter    160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
306251881Speter    176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
307251881Speter    192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
308251881Speter    208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
309251881Speter    224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
310251881Speter    240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
311251881Speter  };
312251881Speter
313251881Speterint
314251881Spetersvn_ctype_casecmp(int a, int b)
315251881Speter{
316251881Speter  const int A = casefold_table[(unsigned char)a];
317251881Speter  const int B = casefold_table[(unsigned char)b];
318251881Speter  return A - B;
319251881Speter}
320