annotate dwtx/dwtxhelper/mangoicu/URegex.d @ 92:f05207c07a98

changed filetype to unix
author Frank Benoit <benoit@tionex.de>
date Mon, 07 Jul 2008 15:54:03 +0200
parents 11e8159caf7a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
92
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
1 /*******************************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
2
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
3 @file URegex.d
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
4
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
5 Copyright (c) 2004 Kris Bell
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
6
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
7 This software is provided 'as-is', without any express or implied
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
8 warranty. In no event will the authors be held liable for damages
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
9 of any kind arising from the use of this software.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
10
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
11 Permission is hereby granted to anyone to use this software for any
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
12 purpose, including commercial applications, and to alter it and/or
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
13 redistribute it freely, subject to the following restrictions:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
14
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
15 1. The origin of this software must not be misrepresented; you must
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
16 not claim that you wrote the original software. If you use this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
17 software in a product, an acknowledgment within documentation of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
18 said product would be appreciated but is not required.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
19
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
20 2. Altered source versions must be plainly marked as such, and must
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
21 not be misrepresented as being the original software.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
22
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
23 3. This notice may not be removed or altered from any distribution
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
24 of the source.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
25
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
26 4. Derivative works are permitted, but they must carry this notice
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
27 in full and credit the original source.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
28
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
29
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
31
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
32
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
33 @version Initial version, November 2004
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
34 @author Kris
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
35
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
36 Note that this package and documentation is built around the ICU
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
37 project (http://oss.software.ibm.com/icu/). Below is the license
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
38 statement as specified by that software:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
39
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
40
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
41 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
42
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
43
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
44 ICU License - ICU 1.8.1 and later
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
45
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
46 COPYRIGHT AND PERMISSION NOTICE
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
47
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
48 Copyright (c) 1995-2003 International Business Machines Corporation and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
49 others.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
50
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
51 All rights reserved.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
52
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
53 Permission is hereby granted, free of charge, to any person obtaining a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
54 copy of this software and associated documentation files (the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
55 "Software"), to deal in the Software without restriction, including
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
56 without limitation the rights to use, copy, modify, merge, publish,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
57 distribute, and/or sell copies of the Software, and to permit persons
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
58 to whom the Software is furnished to do so, provided that the above
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
59 copyright notice(s) and this permission notice appear in all copies of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
60 the Software and that both the above copyright notice(s) and this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
61 permission notice appear in supporting documentation.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
62
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
63 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
64 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
65 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
66 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
67 HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
68 INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
69 FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
70 NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
71 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
72
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
73 Except as contained in this notice, the name of a copyright holder
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
74 shall not be used in advertising or otherwise to promote the sale, use
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
75 or other dealings in this Software without prior written authorization
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
76 of the copyright holder.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
77
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
78 ----------------------------------------------------------------------
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
79
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
80 All trademarks and registered trademarks mentioned herein are the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
81 property of their respective owners.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
82
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
83 *******************************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
84
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
85 module dwtx.dwtxhelper.mangoicu.URegex;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
86
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
87 private import dwtx.dwtxhelper.mangoicu.ICU;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
88
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
89 public import dwtx.dwtxhelper.mangoicu.ULocale,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
90 dwtx.dwtxhelper.mangoicu.UString,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
91 dwtx.dwtxhelper.mangoicu.UCollator,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
92 dwtx.dwtxhelper.mangoicu.UBreakIterator;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
93
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
94
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
95 /*******************************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
96
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
97 Set of slices to return for group matching. See URegex.groups()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
98
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
99 *******************************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
100
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
101 class Groups : ICU
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
102 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
103 public wchar[] g0,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
104 g1,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
105 g2,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
106 g3,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
107 g4,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
108 g5,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
109 g6,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
110 g7,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
111 g8,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
112 g9;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
113 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
114
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
115 /*******************************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
116
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
117 Apis for an engine that provides regular-expression searching of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
118 UTF16 strings.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
119
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
120 See http://icu.sourceforge.net/apiref/icu4c/uregex_8h.html for full
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
121 details.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
122
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
123 *******************************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
124
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
125 class URegex : Groups
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
126 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
127 private Handle handle;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
128 private UStringView theText;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
129
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
130 // Regex modes
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
131 public enum Flag
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
132 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
133 None = 0,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
134
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
135 // Enable case insensitive matching
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
136 CaseInsensitive = 2,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
137
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
138 // Allow white space and comments within patterns
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
139 Comments = 4,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
140
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
141 // Control behavior of "$" and "^" If set, recognize
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
142 // line terminators within string, otherwise, match
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
143 // only at start and end of input string.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
144 MultiLine = 8,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
145
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
146 // If set, '.' matches line terminators, otherwise '.'
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
147 // matching stops at line end
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
148 DotAll = 32,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
149
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
150 // Forces normalization of pattern and strings
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
151 CanonEq = 128,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
152
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
153 // If set, uses the Unicode TR 29 definition of word
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
154 // boundaries. Warning: Unicode word boundaries are
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
155 // quite different from traditional regular expression
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
156 // word boundaries. See http://unicode.org/reports/tr29/#Word_Boundaries
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
157 UWord = 256,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
158 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
159
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
160 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
161
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
162 Compiles the regular expression in string form into an
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
163 internal representation using the specified match mode
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
164 flags. The resulting regular expression handle can then
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
165 be used to perform various matching operations.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
166
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
167 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
168
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
169 this (wchar[] pattern, Flag flags=Flag.None, ParseError* pe=null)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
170 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
171 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
172
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
173 handle = uregex_open (pattern.ptr, pattern.length, flags, pe, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
174 testError (e, "failed to open regex");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
175 uregex_setText (handle, "", 0, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
176 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
177
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
178 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
179
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
180 Compiles the regular expression in string form into an
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
181 internal representation using the specified match mode
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
182 flags. The resulting regular expression handle can then
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
183 be used to perform various matching operations.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
184
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
185 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
186
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
187 this (UStringView pattern, Flag flags=Flag.None, ParseError* pe=null)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
188 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
189 this (pattern.get, flags, pe);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
190 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
191
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
192 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
193
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
194 Internal constructor; used for cloning
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
195
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
196 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
197
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
198 private this (Handle handle)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
199 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
200 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
201
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
202 this.handle = handle;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
203 uregex_setText (handle, "", 0, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
204 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
205
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
206 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
207
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
208 Close the regular expression, recovering all resources (memory)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
209 it was holding
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
210
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
211 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
212
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
213 ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
214 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
215 uregex_close (handle);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
216 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
217
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
218 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
219
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
220 Cloning a regular expression is faster than opening a second
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
221 instance from the source form of the expression, and requires
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
222 less memory.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
223
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
224 Note that the current input string and the position of any
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
225 matched text within it are not cloned; only the pattern itself
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
226 and and the match mode flags are copied.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
227
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
228 Cloning can be particularly useful to threaded applications
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
229 that perform multiple match operations in parallel. Each
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
230 concurrent RE operation requires its own instance of a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
231 URegularExpression.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
232
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
233 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
234
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
235 URegex clone ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
236 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
237 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
238
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
239 Handle h = uregex_clone (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
240 testError (e, "failed to clone regex");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
241 return new URegex (h);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
242 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
243
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
244 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
245
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
246 Return a copy of the source form of the pattern for this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
247 regular expression
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
248
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
249 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
250
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
251 UString getPattern ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
252 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
253 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
254 uint len;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
255
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
256 wchar* x = uregex_pattern (handle, len, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
257 testError (e, "failed to extract regex pattern");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
258 return new UString (x[0..len]);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
259 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
260
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
261 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
262
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
263 Get the match mode flags that were specified when compiling
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
264 this regular expression
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
265
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
266 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
267
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
268 Flag getFlags ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
269 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
270 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
271
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
272 Flag f = cast(Flag) uregex_flags (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
273 testError (e, "failed to get regex flags");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
274 return f;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
275 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
276
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
277 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
278
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
279 Set the subject text string upon which the regular expression
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
280 will look for matches.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
281
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
282 This function may be called any number of times, allowing the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
283 regular expression pattern to be applied to different strings.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
284
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
285 Regular expression matching operations work directly on the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
286 application's string data. No copy is made. The subject string
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
287 data must not be altered after calling this function until after
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
288 all regular expression operations involving this string data are
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
289 completed.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
290
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
291 Zero length strings are permitted. In this case, no subsequent
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
292 match operation will dereference the text string pointer.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
293
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
294 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
295
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
296 void setText (UStringView t)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
297 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
298 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
299
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
300 theText = t;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
301 uregex_setText (handle, t.get.ptr, t.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
302 testError (e, "failed to set regex text");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
303 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
304
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
305 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
306
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
307 Get the subject text that is currently associated with this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
308 regular expression object. This simply returns whatever was
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
309 previously supplied via setText().
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
310
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
311 Note that this returns a read-only reference to the text.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
312
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
313 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
314
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
315 UStringView getText ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
316 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
317 return theText;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
318 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
319
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
320 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
321
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
322 Return a set of slices representing the parenthesised groups.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
323 This can be used in the following manner:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
324
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
325 @code
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
326 wchar msg;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
327
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
328 if (regex.next())
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
329 with (regex.groups())
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
330 msg ~= g1 ~ ":" ~ g2
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
331 @endcode
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
332
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
333 Note that g0 represents the entire match, whereas g1 through
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
334 g9 represent the parenthesised expressions.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
335
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
336 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
337
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
338 Groups groups ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
339 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
340 wchar[]* p = &g0;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
341 uint count = groupCount();
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
342 wchar[] content = theText.get();
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
343
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
344 if (count > 9)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
345 count = 9;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
346 for (uint i=0; i <= count; ++p, ++i)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
347 *p = content [start(i)..end(i)];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
348 return this;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
349 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
350
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
351 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
352
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
353 Extract the string for the specified matching expression or
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
354 subexpression. UString 's' is the destination for the match.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
355
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
356 Group #0 is the complete string of matched text. Group #1 is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
357 the text matched by the first set of capturing parentheses.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
358
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
359 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
360
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
361 void group (UString s, uint index)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
362 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
363 uint fmt (wchar* dst, uint length, inout UErrorCode e)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
364 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
365 return uregex_group (handle, index, dst, length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
366 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
367
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
368 s.format (&fmt, "failed to extract regex group text");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
369 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
370
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
371 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
372
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
373 Get the number of capturing groups in this regular
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
374 expression's pattern
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
375
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
376 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
377
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
378 uint groupCount ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
379 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
380 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
381
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
382 uint i = uregex_groupCount (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
383 testError (e, "failed to get regex group-count");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
384 return i;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
385 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
386
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
387 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
388
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
389 Returns the index in the input string of the start of the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
390 text matched by the specified capture group during the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
391 previous match operation.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
392
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
393 Return -1 if the capture group was not part of the last
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
394 match. Group #0 refers to the complete range of matched
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
395 text. Group #1 refers to the text matched by the first
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
396 set of capturing parentheses
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
397
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
398 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
399
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
400 uint start (uint index = 0)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
401 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
402 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
403
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
404 uint i = uregex_start (handle, index, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
405 testError (e, "failed to get regex start");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
406 return i;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
407 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
408
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
409 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
410
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
411 Returns the index in the input string of the position
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
412 following the end of the text matched by the specified
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
413 capture group.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
414
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
415 Return -1 if the capture group was not part of the last
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
416 match. Group #0 refers to the complete range of matched
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
417 text. Group #1 refers to the text matched by the first
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
418 set of capturing parentheses.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
419
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
420 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
421
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
422 uint end (uint index = 0)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
423 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
424 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
425
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
426 uint i = uregex_end (handle, index, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
427 testError (e, "failed to get regex end");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
428 return i;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
429 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
430
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
431 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
432
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
433 Reset any saved state from the previous match.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
434
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
435 Has the effect of causing uregex_findNext to begin at the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
436 specified index, and causing uregex_start(), uregex_end()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
437 and uregex_group() to return an error indicating that there
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
438 is no match information available.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
439
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
440 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
441
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
442 void reset (uint startIndex)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
443 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
444 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
445
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
446 uregex_reset (handle, startIndex, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
447 testError (e, "failed to set regex next-index");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
448 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
449
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
450 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
451
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
452 Attempts to match the input string, beginning at startIndex,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
453 against the pattern.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
454
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
455 To succeed, the match must extend to the end of the input
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
456 string
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
457
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
458 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
459
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
460 bool match (uint startIndex)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
461 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
462 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
463
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
464 bool b = uregex_matches (handle, startIndex, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
465 testError (e, "failed while matching regex");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
466 return b;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
467 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
468
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
469 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
470
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
471 Attempts to match the input string, starting from the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
472 specified index, against the pattern.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
473
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
474 The match may be of any length, and is not required to
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
475 extend to the end of the input string. Contrast with match()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
476
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
477 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
478
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
479 bool probe (uint startIndex)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
480 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
481 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
482
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
483 bool b = uregex_lookingAt (handle, startIndex, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
484 testError (e, "failed while looking at regex");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
485 return b;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
486 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
487
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
488 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
489
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
490 Returns whether the text matches the search pattern, starting
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
491 from the current position.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
492
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
493 If startIndex is specified, the current position is moved to
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
494 the specified location before the seach is initiated.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
495
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
496 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
497
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
498 bool next (uint startIndex = uint.max)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
499 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
500 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
501 bool b;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
502
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
503 b = (startIndex == uint.max) ? uregex_findNext (handle, e) :
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
504 uregex_find (handle, startIndex, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
505
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
506 testError (e, "failed on next regex");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
507 return b;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
508 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
509
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
510 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
511
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
512 Replaces every substring of the input that matches the pattern
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
513 with the given replacement string.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
514
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
515 This is a convenience function that provides a complete
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
516 find-and-replace-all operation.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
517
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
518 This method scans the input string looking for matches of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
519 the pattern. Input that is not part of any match is copied
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
520 unchanged to the destination buffer. Matched regions are
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
521 replaced in the output buffer by the replacement string.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
522 The replacement string may contain references to capture
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
523 groups; these take the form of $1, $2, etc.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
524
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
525 The provided 'result' will contain the results, and should
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
526 be set with a length sufficient to house the entire result.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
527 Upon completion, the 'result' is shortened appropriately
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
528 and the total extent (length) of the operation is returned.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
529 Set the initital length of 'result' using the UString method
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
530 truncate().
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
531
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
532 The returned extent should be checked to ensure it is not
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
533 longer than the length of 'result'. If it is longer, then
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
534 the result has been truncated.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
535
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
536 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
537
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
538 uint replaceAll (UStringView replace, UString result)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
539 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
540 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
541
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
542 uint len = uregex_replaceAll (handle, replace.get.ptr, replace.length, result.get.ptr, result.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
543 testError (e, "failed during regex replace");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
544 result.truncate (len);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
545 return len;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
546 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
547
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
548 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
549
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
550 Replaces the first substring of the input that matches the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
551 pattern with the given replacement string.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
552
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
553 This is a convenience function that provides a complete
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
554 find-and-replace operation.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
555
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
556 This method scans the input string looking for a match of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
557 the pattern. All input that is not part of the match is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
558 copied unchanged to the destination buffer. The matched
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
559 region is replaced in the output buffer by the replacement
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
560 string. The replacement string may contain references to
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
561 capture groups; these take the form of $1, $2, etc
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
562
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
563 The provided 'result' will contain the results, and should
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
564 be set with a length sufficient to house the entire result.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
565 Upon completion, the 'result' is shortened appropriately
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
566 and the total extent (length) of the operation is returned.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
567 Set the initital length of 'result' using the UString method
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
568 truncate().
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
569
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
570 The returned extent should be checked to ensure it is not
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
571 longer than the length of 'result'. If it is longer, then
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
572 the result has been truncated.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
573
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
574 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
575
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
576 uint replaceFirst (UStringView replace, UString result)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
577 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
578 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
579
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
580 uint len = uregex_replaceFirst (handle, replace.get.ptr, replace.length, result.get.ptr, result.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
581 testError (e, "failed during regex replace");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
582 result.truncate (len);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
583 return len;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
584 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
585
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
586 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
587
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
588 Split the text up into slices (fields), where each slice
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
589 represents the text situated between each pattern matched
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
590 within the text. The pattern is expected to represent one
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
591 or more slice delimiters.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
592
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
593 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
594
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
595 uint split (wchar[][] fields)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
596 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
597 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
598 uint pos,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
599 count;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
600 wchar[] content = theText.get;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
601
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
602 while (count < fields.length)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
603 if (uregex_findNext (handle, e) && e == e.OK)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
604 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
605 uint i = start();
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
606 fields[count] = content[pos..i];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
607 pos = end ();
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
608
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
609 // ignore leading delimiter
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
610 if (i)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
611 ++count;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
612 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
613 else
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
614 break;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
615
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
616 testError (e, "failed during split");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
617 return count;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
618 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
619
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
620
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
621 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
622
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
623 Bind the ICU functions from a shared library. This is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
624 complicated by the issues regarding D and DLLs on the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
625 Windows platform
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
626
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
627 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
628
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
629 private static void* library;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
630
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
631 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
632
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
633 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
634
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
635 private static extern (C)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
636 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
637 Handle function (wchar*, uint, uint, ParseError*, inout UErrorCode) uregex_open;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
638 void function (Handle) uregex_close;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
639 Handle function (Handle, inout UErrorCode) uregex_clone;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
640 wchar* function (Handle, inout uint, inout UErrorCode) uregex_pattern;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
641 uint function (Handle, inout UErrorCode) uregex_flags;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
642 void function (Handle, wchar*, uint, inout UErrorCode) uregex_setText;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
643 wchar* function (Handle, inout uint, inout UErrorCode) uregex_getText;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
644 uint function (Handle, uint, wchar*, uint, inout UErrorCode) uregex_group;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
645 uint function (Handle, inout UErrorCode) uregex_groupCount;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
646 uint function (Handle, uint, inout UErrorCode) uregex_start;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
647 uint function (Handle, uint, inout UErrorCode) uregex_end;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
648 void function (Handle, uint, inout UErrorCode) uregex_reset;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
649 bool function (Handle, uint, inout UErrorCode) uregex_matches;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
650 bool function (Handle, uint, inout UErrorCode) uregex_lookingAt;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
651 bool function (Handle, uint, inout UErrorCode) uregex_find;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
652 bool function (Handle, inout UErrorCode) uregex_findNext;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
653 uint function (Handle, wchar*, uint, wchar*, uint, inout UErrorCode) uregex_replaceAll;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
654 uint function (Handle, wchar*, uint, wchar*, uint, inout UErrorCode) uregex_replaceFirst;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
655 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
656
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
657 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
658
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
659 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
660
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
661 static FunctionLoader.Bind[] targets =
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
662 [
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
663 {cast(void**) &uregex_open, "uregex_open"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
664 {cast(void**) &uregex_close, "uregex_close"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
665 {cast(void**) &uregex_clone, "uregex_clone"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
666 {cast(void**) &uregex_pattern, "uregex_pattern"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
667 {cast(void**) &uregex_flags, "uregex_flags"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
668 {cast(void**) &uregex_setText, "uregex_setText"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
669 {cast(void**) &uregex_getText, "uregex_getText"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
670 {cast(void**) &uregex_group, "uregex_group"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
671 {cast(void**) &uregex_groupCount, "uregex_groupCount"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
672 {cast(void**) &uregex_start, "uregex_start"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
673 {cast(void**) &uregex_end, "uregex_end"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
674 {cast(void**) &uregex_reset, "uregex_reset"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
675 {cast(void**) &uregex_matches, "uregex_matches"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
676 {cast(void**) &uregex_lookingAt, "uregex_lookingAt"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
677 {cast(void**) &uregex_find, "uregex_find"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
678 {cast(void**) &uregex_findNext, "uregex_findNext"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
679 {cast(void**) &uregex_replaceAll, "uregex_replaceAll"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
680 {cast(void**) &uregex_replaceFirst, "uregex_replaceFirst"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
681 ];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
682
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
683 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
684
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
685 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
686
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
687 static this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
688 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
689 library = FunctionLoader.bind (icuin, targets);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
690 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
691
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
692 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
693
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
694 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
695
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
696 static ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
697 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
698 FunctionLoader.unbind (library);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
699 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
700 }