• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2010, Google Inc. All rights reserved.
2 //
3 // Redistribution and use in source and binary forms, with or without
4 // modification, are permitted provided that the following conditions are
5 // met:
6 //
7 //     * Redistributions of source code must retain the above copyright
8 // notice, this list of conditions and the following disclaimer.
9 //     * Redistributions in binary form must reproduce the above
10 // copyright notice, this list of conditions and the following disclaimer
11 // in the documentation and/or other materials provided with the
12 // distribution.
13 //     * Neither the name of Google Inc. nor the names of its
14 // contributors may be used to endorse or promote products derived from
15 // this software without specific prior written permission.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 
29 #include "config.h"
30 #include "URLCharacterTypes.h"
31 
32 namespace WTF {
33 
34 const unsigned char URLCharacterTypes::characterTypeTable[0x100] = {
35     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
36     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
37     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
38     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0x00 - 0x0f
39     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
40     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
41     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
42     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0x10 - 0x1f
43     InvalidCharacter, // 0x20  ' ' (escape spaces in queries)
44     QueryCharacter | UserInfoCharacter, // 0x21  !
45     InvalidCharacter, // 0x22  "
46     InvalidCharacter, // 0x23  #  (invalid in query since it marks the ref)
47     QueryCharacter | UserInfoCharacter, // 0x24  $
48     QueryCharacter | UserInfoCharacter, // 0x25  %
49     QueryCharacter | UserInfoCharacter, // 0x26  &
50     QueryCharacter | UserInfoCharacter, // 0x27  '
51     QueryCharacter | UserInfoCharacter, // 0x28  (
52     QueryCharacter | UserInfoCharacter, // 0x29  )
53     QueryCharacter | UserInfoCharacter, // 0x2a  *
54     QueryCharacter | UserInfoCharacter, // 0x2b  +
55     QueryCharacter | UserInfoCharacter, // 0x2c  ,
56     QueryCharacter | UserInfoCharacter, // 0x2d  -
57     QueryCharacter | UserInfoCharacter | IPv4Character, // 0x2e  .
58     QueryCharacter, // 0x2f  /
59     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x30  0
60     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x31  1
61     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x32  2
62     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x33  3
63     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x34  4
64     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x35  5
65     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x36  6
66     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter | OctalCharacter, // 0x37  7
67     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter, // 0x38  8
68     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter | DecimalCharacter, // 0x39  9
69     QueryCharacter, // 0x3a  :
70     QueryCharacter, // 0x3b  ;
71     InvalidCharacter, // 0x3c  <
72     QueryCharacter, // 0x3d  =
73     InvalidCharacter, // 0x3e  >
74     QueryCharacter, // 0x3f  ?
75     QueryCharacter, // 0x40  @
76     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x41  A
77     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x42  B
78     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x43  C
79     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x44  D
80     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x45  E
81     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x46  F
82     QueryCharacter | UserInfoCharacter, // 0x47  G
83     QueryCharacter | UserInfoCharacter, // 0x48  H
84     QueryCharacter | UserInfoCharacter, // 0x49  I
85     QueryCharacter | UserInfoCharacter, // 0x4a  J
86     QueryCharacter | UserInfoCharacter, // 0x4b  K
87     QueryCharacter | UserInfoCharacter, // 0x4c  L
88     QueryCharacter | UserInfoCharacter, // 0x4d  M
89     QueryCharacter | UserInfoCharacter, // 0x4e  N
90     QueryCharacter | UserInfoCharacter, // 0x4f  O
91     QueryCharacter | UserInfoCharacter, // 0x50  P
92     QueryCharacter | UserInfoCharacter, // 0x51  Q
93     QueryCharacter | UserInfoCharacter, // 0x52  R
94     QueryCharacter | UserInfoCharacter, // 0x53  S
95     QueryCharacter | UserInfoCharacter, // 0x54  T
96     QueryCharacter | UserInfoCharacter, // 0x55  U
97     QueryCharacter | UserInfoCharacter, // 0x56  V
98     QueryCharacter | UserInfoCharacter, // 0x57  W
99     QueryCharacter | UserInfoCharacter | IPv4Character, // 0x58  X
100     QueryCharacter | UserInfoCharacter, // 0x59  Y
101     QueryCharacter | UserInfoCharacter, // 0x5a  Z
102     QueryCharacter, // 0x5b  [
103     QueryCharacter, // 0x5c  '\'
104     QueryCharacter, // 0x5d  ]
105     QueryCharacter, // 0x5e  ^
106     QueryCharacter | UserInfoCharacter, // 0x5f  _
107     QueryCharacter, // 0x60  `
108     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x61  a
109     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x62  b
110     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x63  c
111     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x64  d
112     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x65  e
113     QueryCharacter | UserInfoCharacter | IPv4Character | HexCharacter, // 0x66  f
114     QueryCharacter | UserInfoCharacter, // 0x67  g
115     QueryCharacter | UserInfoCharacter, // 0x68  h
116     QueryCharacter | UserInfoCharacter, // 0x69  i
117     QueryCharacter | UserInfoCharacter, // 0x6a  j
118     QueryCharacter | UserInfoCharacter, // 0x6b  k
119     QueryCharacter | UserInfoCharacter, // 0x6c  l
120     QueryCharacter | UserInfoCharacter, // 0x6d  m
121     QueryCharacter | UserInfoCharacter, // 0x6e  n
122     QueryCharacter | UserInfoCharacter, // 0x6f  o
123     QueryCharacter | UserInfoCharacter, // 0x70  p
124     QueryCharacter | UserInfoCharacter, // 0x71  q
125     QueryCharacter | UserInfoCharacter, // 0x72  r
126     QueryCharacter | UserInfoCharacter, // 0x73  s
127     QueryCharacter | UserInfoCharacter, // 0x74  t
128     QueryCharacter | UserInfoCharacter, // 0x75  u
129     QueryCharacter | UserInfoCharacter, // 0x76  v
130     QueryCharacter | UserInfoCharacter, // 0x77  w
131     QueryCharacter | UserInfoCharacter | IPv4Character, // 0x78  x
132     QueryCharacter | UserInfoCharacter, // 0x79  y
133     QueryCharacter | UserInfoCharacter, // 0x7a  z
134     QueryCharacter, // 0x7b  {
135     QueryCharacter, // 0x7c  |
136     QueryCharacter, // 0x7d  }
137     QueryCharacter | UserInfoCharacter, // 0x7e  ~
138     InvalidCharacter, // 0x7f
139     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
140     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
141     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
142     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0x80 - 0x8f
143     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
144     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
145     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
146     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0x90 - 0x9f
147     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
148     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
149     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
150     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xa0 - 0xaf
151     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
152     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
153     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
154     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xb0 - 0xbf
155     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
156     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
157     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
158     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xc0 - 0xcf
159     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
160     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
161     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
162     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xd0 - 0xdf
163     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
164     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
165     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
166     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xe0 - 0xef
167     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
168     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
169     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter,
170     InvalidCharacter, InvalidCharacter, InvalidCharacter, InvalidCharacter, // 0xf0 - 0xff
171 };
172 
173 }
174