Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c9c9f513
Commit
c9c9f513
authored
Jun 05, 2014
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove and ignore generated pcre files
parent
10512b56
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1 addition
and
551 deletions
+1
-551
.bzrignore
.bzrignore
+1
-0
pcre/pcre_chartables.c
pcre/pcre_chartables.c
+0
-198
pcre/pcre_stringpiece.h
pcre/pcre_stringpiece.h
+0
-179
pcre/pcrecpparg.h
pcre/pcrecpparg.h
+0
-174
No files found.
.bzrignore
View file @
c9c9f513
...
@@ -1457,3 +1457,4 @@ storage/connect/connect.cnf
...
@@ -1457,3 +1457,4 @@ storage/connect/connect.cnf
storage/cassandra/cassandra.cnf
storage/cassandra/cassandra.cnf
libmysql/libmysql_versions.ld
libmysql/libmysql_versions.ld
scripts/mysql_config.pl
scripts/mysql_config.pl
pcre/pcre_chartables.c
pcre/pcre_chartables.c
deleted
100644 → 0
View file @
10512b56
/*************************************************
* Perl-Compatible Regular Expressions *
*************************************************/
/* This file contains character tables that are used when no external tables
are passed to PCRE by the application that calls it. The tables are used only
for characters whose code values are less than 256.
This is a default version of the tables that assumes ASCII encoding. A program
called dftables (which is distributed with PCRE) can be used to build
alternative versions of this file. This is necessary if you are running in an
EBCDIC environment, or if you want to default to a different encoding, for
example ISO-8859-1. When dftables is run, it creates these tables in the
current locale. If PCRE is configured with --enable-rebuild-chartables, this
happens automatically.
The following #includes are present because without them gcc 4.x may remove the
array definition from the final binary if PCRE is built into a static library
and dead code stripping is activated. This leads to link errors. Pulling in the
header ensures that the array gets flagged as "someone outside this compilation
unit might reference this" and so it will always be supplied to the linker. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "pcre_internal.h"
const
pcre_uint8
PRIV
(
default_tables
)[]
=
{
/* This table is a lower casing table. */
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
139
,
140
,
141
,
142
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
172
,
173
,
174
,
175
,
176
,
177
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
207
,
208
,
209
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
219
,
220
,
221
,
222
,
223
,
224
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
251
,
252
,
253
,
254
,
255
,
/* This table is a case flipping table. */
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
91
,
92
,
93
,
94
,
95
,
96
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
,
83
,
84
,
85
,
86
,
87
,
88
,
89
,
90
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
139
,
140
,
141
,
142
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
172
,
173
,
174
,
175
,
176
,
177
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
207
,
208
,
209
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
219
,
220
,
221
,
222
,
223
,
224
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
251
,
252
,
253
,
254
,
255
,
/* This table contains bit maps for various character classes. Each map is 32
bytes long and the bits run from the least significant end of each byte. The
classes that have their own maps are: space, xdigit, digit, upper, lower, word,
graph, print, punct, and cntrl. Other classes are built from combinations. */
0x00
,
0x3e
,
0x00
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0x03
,
0x7e
,
0x00
,
0x00
,
0x00
,
0x7e
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0x03
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xfe
,
0xff
,
0xff
,
0x07
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xfe
,
0xff
,
0xff
,
0x07
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0x03
,
0xfe
,
0xff
,
0xff
,
0x87
,
0xfe
,
0xff
,
0xff
,
0x07
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xfe
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0x7f
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0x7f
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xfe
,
0xff
,
0x00
,
0xfc
,
0x01
,
0x00
,
0x00
,
0xf8
,
0x01
,
0x00
,
0x00
,
0x78
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0xff
,
0xff
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* This table identifies various classes of character by individual bits:
0x01 white space character
0x02 letter
0x04 decimal digit
0x08 hexadecimal digit
0x10 alphanumeric or '_'
0x80 regular expression metacharacter or binary zero
*/
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 0- 7 */
0x00
,
0x01
,
0x01
,
0x01
,
0x01
,
0x01
,
0x00
,
0x00
,
/* 8- 15 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 16- 23 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 24- 31 */
0x01
,
0x00
,
0x00
,
0x00
,
0x80
,
0x00
,
0x00
,
0x00
,
/* - ' */
0x80
,
0x80
,
0x80
,
0x80
,
0x00
,
0x00
,
0x80
,
0x00
,
/* ( - / */
0x1c
,
0x1c
,
0x1c
,
0x1c
,
0x1c
,
0x1c
,
0x1c
,
0x1c
,
/* 0 - 7 */
0x1c
,
0x1c
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x80
,
/* 8 - ? */
0x00
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x12
,
/* @ - G */
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
/* H - O */
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
/* P - W */
0x12
,
0x12
,
0x12
,
0x80
,
0x80
,
0x00
,
0x80
,
0x10
,
/* X - _ */
0x00
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x1a
,
0x12
,
/* ` - g */
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
/* h - o */
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
0x12
,
/* p - w */
0x12
,
0x12
,
0x12
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
/* x -127 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 128-135 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 136-143 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 144-151 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 152-159 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 160-167 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 168-175 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 176-183 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 184-191 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 192-199 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 200-207 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 208-215 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 216-223 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 224-231 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 232-239 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/* 240-247 */
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
/* 248-255 */
/* End of pcre_chartables.c */
pcre/pcre_stringpiece.h
deleted
100644 → 0
View file @
10512b56
// Copyright (c) 2005, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: Sanjay Ghemawat
//
// A string like object that points into another piece of memory.
// Useful for providing an interface that allows clients to easily
// pass in either a "const char*" or a "string".
//
// Arghh! I wish C++ literals were automatically of type "string".
#ifndef _PCRE_STRINGPIECE_H
#define _PCRE_STRINGPIECE_H
#include <cstring>
#include <string>
#include <iosfwd> // for ostream forward-declaration
#if 0
#define HAVE_TYPE_TRAITS
#include <type_traits.h>
#elif
0
#define HAVE_TYPE_TRAITS
#include <bits/type_traits.h>
#endif
#include <pcre.h>
using
std
::
memcmp
;
using
std
::
strlen
;
using
std
::
string
;
namespace
pcrecpp
{
class
PCRECPP_EXP_DEFN
StringPiece
{
private:
const
char
*
ptr_
;
int
length_
;
public:
// We provide non-explicit singleton constructors so users can pass
// in a "const char*" or a "string" wherever a "StringPiece" is
// expected.
StringPiece
()
:
ptr_
(
NULL
),
length_
(
0
)
{
}
StringPiece
(
const
char
*
str
)
:
ptr_
(
str
),
length_
(
static_cast
<
int
>
(
strlen
(
ptr_
)))
{
}
StringPiece
(
const
unsigned
char
*
str
)
:
ptr_
(
reinterpret_cast
<
const
char
*>
(
str
)),
length_
(
static_cast
<
int
>
(
strlen
(
ptr_
)))
{
}
StringPiece
(
const
string
&
str
)
:
ptr_
(
str
.
data
()),
length_
(
static_cast
<
int
>
(
str
.
size
()))
{
}
StringPiece
(
const
char
*
offset
,
int
len
)
:
ptr_
(
offset
),
length_
(
len
)
{
}
// data() may return a pointer to a buffer with embedded NULs, and the
// returned buffer may or may not be null terminated. Therefore it is
// typically a mistake to pass data() to a routine that expects a NUL
// terminated string. Use "as_string().c_str()" if you really need to do
// this. Or better yet, change your routine so it does not rely on NUL
// termination.
const
char
*
data
()
const
{
return
ptr_
;
}
int
size
()
const
{
return
length_
;
}
bool
empty
()
const
{
return
length_
==
0
;
}
void
clear
()
{
ptr_
=
NULL
;
length_
=
0
;
}
void
set
(
const
char
*
buffer
,
int
len
)
{
ptr_
=
buffer
;
length_
=
len
;
}
void
set
(
const
char
*
str
)
{
ptr_
=
str
;
length_
=
static_cast
<
int
>
(
strlen
(
str
));
}
void
set
(
const
void
*
buffer
,
int
len
)
{
ptr_
=
reinterpret_cast
<
const
char
*>
(
buffer
);
length_
=
len
;
}
char
operator
[](
int
i
)
const
{
return
ptr_
[
i
];
}
void
remove_prefix
(
int
n
)
{
ptr_
+=
n
;
length_
-=
n
;
}
void
remove_suffix
(
int
n
)
{
length_
-=
n
;
}
bool
operator
==
(
const
StringPiece
&
x
)
const
{
return
((
length_
==
x
.
length_
)
&&
(
memcmp
(
ptr_
,
x
.
ptr_
,
length_
)
==
0
));
}
bool
operator
!=
(
const
StringPiece
&
x
)
const
{
return
!
(
*
this
==
x
);
}
#define STRINGPIECE_BINARY_PREDICATE(cmp,auxcmp) \
bool operator cmp (const StringPiece& x) const { \
int r = memcmp(ptr_, x.ptr_, length_ < x.length_ ? length_ : x.length_); \
return ((r auxcmp 0) || ((r == 0) && (length_ cmp x.length_))); \
}
STRINGPIECE_BINARY_PREDICATE
(
<
,
<
);
STRINGPIECE_BINARY_PREDICATE
(
<=
,
<
);
STRINGPIECE_BINARY_PREDICATE
(
>=
,
>
);
STRINGPIECE_BINARY_PREDICATE
(
>
,
>
);
#undef STRINGPIECE_BINARY_PREDICATE
int
compare
(
const
StringPiece
&
x
)
const
{
int
r
=
memcmp
(
ptr_
,
x
.
ptr_
,
length_
<
x
.
length_
?
length_
:
x
.
length_
);
if
(
r
==
0
)
{
if
(
length_
<
x
.
length_
)
r
=
-
1
;
else
if
(
length_
>
x
.
length_
)
r
=
+
1
;
}
return
r
;
}
string
as_string
()
const
{
return
string
(
data
(),
size
());
}
void
CopyToString
(
string
*
target
)
const
{
target
->
assign
(
ptr_
,
length_
);
}
// Does "this" start with "x"
bool
starts_with
(
const
StringPiece
&
x
)
const
{
return
((
length_
>=
x
.
length_
)
&&
(
memcmp
(
ptr_
,
x
.
ptr_
,
x
.
length_
)
==
0
));
}
};
}
// namespace pcrecpp
// ------------------------------------------------------------------
// Functions used to create STL containers that use StringPiece
// Remember that a StringPiece's lifetime had better be less than
// that of the underlying string or char*. If it is not, then you
// cannot safely store a StringPiece into an STL container
// ------------------------------------------------------------------
#ifdef HAVE_TYPE_TRAITS
// This makes vector<StringPiece> really fast for some STL implementations
template
<
>
struct
__type_traits
<
pcrecpp
::
StringPiece
>
{
typedef
__true_type
has_trivial_default_constructor
;
typedef
__true_type
has_trivial_copy_constructor
;
typedef
__true_type
has_trivial_assignment_operator
;
typedef
__true_type
has_trivial_destructor
;
typedef
__true_type
is_POD_type
;
};
#endif
// allow StringPiece to be logged
std
::
ostream
&
operator
<<
(
std
::
ostream
&
o
,
const
pcrecpp
::
StringPiece
&
piece
);
#endif
/* _PCRE_STRINGPIECE_H */
pcre/pcrecpparg.h
deleted
100644 → 0
View file @
10512b56
// Copyright (c) 2005, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: Sanjay Ghemawat
#ifndef _PCRECPPARG_H
#define _PCRECPPARG_H
#include <stdlib.h> // for NULL
#include <string>
#include <pcre.h>
namespace
pcrecpp
{
class
StringPiece
;
// Hex/Octal/Binary?
// Special class for parsing into objects that define a ParseFrom() method
template
<
class
T
>
class
_RE_MatchObject
{
public:
static
inline
bool
Parse
(
const
char
*
str
,
int
n
,
void
*
dest
)
{
if
(
dest
==
NULL
)
return
true
;
T
*
object
=
reinterpret_cast
<
T
*>
(
dest
);
return
object
->
ParseFrom
(
str
,
n
);
}
};
class
PCRECPP_EXP_DEFN
Arg
{
public:
// Empty constructor so we can declare arrays of Arg
Arg
();
// Constructor specially designed for NULL arguments
Arg
(
void
*
);
typedef
bool
(
*
Parser
)(
const
char
*
str
,
int
n
,
void
*
dest
);
// Type-specific parsers
#define PCRE_MAKE_PARSER(type,name) \
Arg(type* p) : arg_(p), parser_(name) { } \
Arg(type* p, Parser parser) : arg_(p), parser_(parser) { }
PCRE_MAKE_PARSER
(
char
,
parse_char
);
PCRE_MAKE_PARSER
(
unsigned
char
,
parse_uchar
);
PCRE_MAKE_PARSER
(
short
,
parse_short
);
PCRE_MAKE_PARSER
(
unsigned
short
,
parse_ushort
);
PCRE_MAKE_PARSER
(
int
,
parse_int
);
PCRE_MAKE_PARSER
(
unsigned
int
,
parse_uint
);
PCRE_MAKE_PARSER
(
long
,
parse_long
);
PCRE_MAKE_PARSER
(
unsigned
long
,
parse_ulong
);
#if 1
PCRE_MAKE_PARSER
(
long
long
,
parse_longlong
);
#endif
#if 1
PCRE_MAKE_PARSER
(
unsigned
long
long
,
parse_ulonglong
);
#endif
PCRE_MAKE_PARSER
(
float
,
parse_float
);
PCRE_MAKE_PARSER
(
double
,
parse_double
);
PCRE_MAKE_PARSER
(
std
::
string
,
parse_string
);
PCRE_MAKE_PARSER
(
StringPiece
,
parse_stringpiece
);
#undef PCRE_MAKE_PARSER
// Generic constructor
template
<
class
T
>
Arg
(
T
*
,
Parser
parser
);
// Generic constructor template
template
<
class
T
>
Arg
(
T
*
p
)
:
arg_
(
p
),
parser_
(
_RE_MatchObject
<
T
>::
Parse
)
{
}
// Parse the data
bool
Parse
(
const
char
*
str
,
int
n
)
const
;
private:
void
*
arg_
;
Parser
parser_
;
static
bool
parse_null
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_char
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_uchar
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_float
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_double
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_string
(
const
char
*
str
,
int
n
,
void
*
dest
);
static
bool
parse_stringpiece
(
const
char
*
str
,
int
n
,
void
*
dest
);
#define PCRE_DECLARE_INTEGER_PARSER(name) \
private: \
static bool parse_ ## name(const char* str, int n, void* dest); \
static bool parse_ ## name ## _radix( \
const char* str, int n, void* dest, int radix); \
public: \
static bool parse_ ## name ## _hex(const char* str, int n, void* dest); \
static bool parse_ ## name ## _octal(const char* str, int n, void* dest); \
static bool parse_ ## name ## _cradix(const char* str, int n, void* dest)
PCRE_DECLARE_INTEGER_PARSER
(
short
);
PCRE_DECLARE_INTEGER_PARSER
(
ushort
);
PCRE_DECLARE_INTEGER_PARSER
(
int
);
PCRE_DECLARE_INTEGER_PARSER
(
uint
);
PCRE_DECLARE_INTEGER_PARSER
(
long
);
PCRE_DECLARE_INTEGER_PARSER
(
ulong
);
PCRE_DECLARE_INTEGER_PARSER
(
longlong
);
PCRE_DECLARE_INTEGER_PARSER
(
ulonglong
);
#undef PCRE_DECLARE_INTEGER_PARSER
};
inline
Arg
::
Arg
()
:
arg_
(
NULL
),
parser_
(
parse_null
)
{
}
inline
Arg
::
Arg
(
void
*
p
)
:
arg_
(
p
),
parser_
(
parse_null
)
{
}
inline
bool
Arg
::
Parse
(
const
char
*
str
,
int
n
)
const
{
return
(
*
parser_
)(
str
,
n
,
arg_
);
}
// This part of the parser, appropriate only for ints, deals with bases
#define MAKE_INTEGER_PARSER(type, name) \
inline Arg Hex(type* ptr) { \
return Arg(ptr, Arg::parse_ ## name ## _hex); } \
inline Arg Octal(type* ptr) { \
return Arg(ptr, Arg::parse_ ## name ## _octal); } \
inline Arg CRadix(type* ptr) { \
return Arg(ptr, Arg::parse_ ## name ## _cradix); }
MAKE_INTEGER_PARSER
(
short
,
short
)
/* */
MAKE_INTEGER_PARSER
(
unsigned
short
,
ushort
)
/* */
MAKE_INTEGER_PARSER
(
int
,
int
)
/* Don't use semicolons */
MAKE_INTEGER_PARSER
(
unsigned
int
,
uint
)
/* after these statement */
MAKE_INTEGER_PARSER
(
long
,
long
)
/* because they can cause */
MAKE_INTEGER_PARSER
(
unsigned
long
,
ulong
)
/* compiler warnings if */
#if 1
/* the checking level is */
MAKE_INTEGER_PARSER
(
long
long
,
longlong
)
/* turned up high enough. */
#endif
/* */
#if 1
/* */
MAKE_INTEGER_PARSER
(
unsigned
long
long
,
ulonglong
)
/* */
#endif
#undef PCRE_IS_SET
#undef PCRE_SET_OR_CLEAR
#undef MAKE_INTEGER_PARSER
}
// namespace pcrecpp
#endif
/* _PCRECPPARG_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment