annotate dwtx/dwtxhelper/mangoicu/UCollator.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 UCollator.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.UCollator;
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 dwtx.dwtxhelper.mangoicu.USet,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
89 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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
92 /*******************************************************************************
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 The API for Collator performs locale-sensitive string comparison.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
95 You use this service to build searching and sorting routines for
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
96 natural language text. Important: The ICU collation service has been
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
97 reimplemented in order to achieve better performance and UCA compliance.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
98 For details, see the collation design document.
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 For more information about the collation service see the users guide.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
101
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
102 Collation service provides correct sorting orders for most locales
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
103 supported in ICU. If specific data for a locale is not available,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
104 the orders eventually falls back to the UCA sort order.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
105
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
106 Sort ordering may be customized by providing your own set of rules.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
107 For more on this subject see the Collation customization section of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
108 the users guide.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
109
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
110 See <A HREF="http://oss.software.ibm.com/icu/apiref/ucol_8h.html">
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
111 this page</A> for full details.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
112
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 class UCollator : ICU
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 package Handle handle;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
118
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
119 enum Attribute
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
120 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
121 FrenchCollation,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
122 AlternateHandling,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
123 CaseFirst,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
124 CaseLevel,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
125 NormalizationMode,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
126 DecompositionMode = NormalizationMode,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
127 strength,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
128 HiraganaQuaternaryMode,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
129 NumericCollation,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
130 AttributeCount
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
131 }
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 enum AttributeValue
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 Default = -1,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
136 Primary = 0,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
137 Secondary = 1,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
138 Tertiary = 2,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
139 DefaultStrength = Tertiary,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
140 CeStrengthLimit,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
141 Quaternary = 3,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
142 Identical = 15,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
143 strengthLimit,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
144 Off = 16,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
145 On = 17,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
146 Shifted = 20,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
147 NonIgnorable = 21,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
148 LowerFirst = 24,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
149 UpperFirst = 25,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
150 AttributeValueCount
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
151 }
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 enum RuleOption
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
154 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
155 TailoringOnly,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
156 FullRules
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
157 }
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 enum BoundMode
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 BoundLower = 0,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
162 BoundUpper = 1,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
163 BoundUpperLong = 2,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
164 BoundValueCount
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
165 }
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 typedef AttributeValue Strength;
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 /***********************************************************************
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 Open a UCollator for comparing strings. The locale specified
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
172 determines the required collation rules. Special values for
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
173 locales can be passed in - if ULocale.Default is passed for
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
174 the locale, the default locale collation rules will be used.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
175 If ULocale.Root is passed, UCA rules will be used
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 this (ULocale locale)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
180 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
181 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
182
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
183 handle = ucol_open (toString(locale.name), e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
184 testError (e, "failed to open collator");
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 /***********************************************************************
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 Produce a UCollator instance according to the rules supplied.
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 The rules are used to change the default ordering, defined in
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
192 the UCA in a process called tailoring. For the syntax of the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
193 rules please see users guide
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
194
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 this (UStringView rules, AttributeValue mode, Strength strength)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
198 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
199 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
200
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
201 handle = ucol_openRules (rules.get.ptr, rules.len, mode, strength, null, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
202 testError (e, "failed to open rules-based collator");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
203 }
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 Open a collator defined by a short form string. The
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
208 structure and the syntax of the string is defined in
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
209 the "Naming collators" section of the users guide:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
210 http://oss.software.ibm.com/icu/userguide/Collate_Concepts.html#Naming_Collators
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
211 Attributes are overriden by the subsequent attributes.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
212 So, for "S2_S3", final strength will be 3. 3066bis
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
213 locale overrides individual locale parts.
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 The call to this constructor is equivalent to a plain
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
216 constructor, followed by a series of calls to setAttribute
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
217 and setVariableTop
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
221 this (char[] shortName, bool forceDefaults)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
222 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
223 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
224
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
225 handle = ucol_openFromShortString (toString(shortName), forceDefaults, null, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
226 testError (e, "failed to open short-name collator");
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
229 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
230
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
231 Internal constructor invoked via USearch
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 package this (Handle handle)
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 this.handle = handle;
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
240 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
241
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
242 Close a UCollator
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 ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
247 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
248 ucol_close (handle);
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 /***********************************************************************
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 Get a set containing the contractions defined by the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
254 collator.
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 The set includes both the UCA contractions and the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
257 contractions defined by the collator. This set will
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
258 contain only strings. If a tailoring explicitly
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
259 suppresses contractions from the UCA (like Russian),
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
260 removed contractions will not be in the resulting set.
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
264 void getContractions (USet set)
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 UErrorCode e;
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 ucol_getContractions (handle, set.handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
269 testError (e, "failed to get collator contractions");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
270 }
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 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
273
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
274 Compare two strings. Return value is -, 0, +
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 int strcoll (UStringView source, UStringView target)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
279 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
280 return ucol_strcoll (handle, source.get.ptr, source.len, target.get.ptr, target.len);
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
283 /***********************************************************************
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 Determine if one string is greater than another. This
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
286 function is equivalent to strcoll() > 1
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
287
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
288 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
289
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
290 bool greater (UStringView source, UStringView target)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
291 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
292 return ucol_greater (handle, source.get.ptr, source.len, target.get.ptr, target.len) != 0;
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
297 Determine if one string is greater than or equal to
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
298 another. This function is equivalent to strcoll() >= 0
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 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
301
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
302 bool greaterOrEqual (UStringView source, UStringView target)
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 return ucol_greaterOrEqual (handle, source.get.ptr, source.len, target.get.ptr, target.len) != 0;
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 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
308
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
309 This function is equivalent to strcoll() == 0
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 ***********************************************************************/
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 bool equal (UStringView source, UStringView target)
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 return ucol_equal (handle, source.get.ptr, source.len, target.get.ptr, target.len) != 0;
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
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 Get the collation strength used in a UCollator. The
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
321 strength influences how strings are compared.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
322
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
323 ***********************************************************************/
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 Strength getStrength ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
326 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
327 return ucol_getStrength (handle);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
328 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
329
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
330 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
331
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
332 Set the collation strength used in this UCollator. The
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
333 strength influences how strings are compared. one of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
334 Primary, Secondary, Tertiary, Quaternary, Dentical, or
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
335 Default
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
339 void setStrength (Strength s)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
340 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
341 ucol_setStrength (handle, s);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
342 }
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 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
345
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
346 Get the display name for a UCollator. The display name is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
347 suitable for presentation to a user
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
348
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 void getDisplayName (ULocale obj, ULocale display, UString dst)
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 uint fmt (wchar* p, uint len, inout UErrorCode e)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
354 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
355 return ucol_getDisplayName (toString(obj.name), toString(display.name), dst.get.ptr, dst.len, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
356 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
357
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
358 dst.format (&fmt, "failed to get collator display name");
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 /***********************************************************************
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 Returns current rules. Options define whether full rules
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
364 are returned or just the tailoring.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
365
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 void getRules (UString dst, RuleOption o = RuleOption.FullRules)
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 uint fmt (wchar* p, uint len, inout UErrorCode e)
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 uint needed = ucol_getRulesEx (handle, o, dst.get.ptr, dst.len);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
373 if (needed > len)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
374 e = e.BufferOverflow;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
375 return needed;
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 dst.format (&fmt, "failed to get collator rules");
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
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
383 Get the short definition string for a collator.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
384
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
385 This API harvests the collator's locale and the attribute
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
386 set and produces a string that can be used for opening a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
387 collator with the same properties using the char[] style
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
388 constructor. This string will be normalized.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
389
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
390 The structure and the syntax of the string is defined in the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
391 "Naming collators" section of the users guide:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
392 http://oss.software.ibm.com/icu/userguide/Collate_Concepts.html#Naming_Collators
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
393
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
394 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
395
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
396 char[] getShortDefinitionString (ULocale locale = ULocale.Default)
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 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
399 char[64] dst;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
400
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
401 uint len = ucol_getShortDefinitionString (handle, toString(locale.name), dst.ptr, dst.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
402 testError (e, "failed to get collator short name");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
403 return dst[0..len].dup;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
404 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
405
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
406 /***********************************************************************
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 Verifies and normalizes short definition string. Normalized
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
409 short definition string has all the option sorted by the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
410 argument name, so that equivalent definition strings are the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
411 same
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
412
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
413 ***********************************************************************/
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 char[] normalizeShortDefinitionString (char[] source)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
416 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
417 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
418 char[64] dst;
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 uint len = ucol_normalizeShortDefinitionString (toString(source), dst.ptr, dst.length, null, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
421 testError (e, "failed to normalize collator short name");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
422 return dst[0..len].dup;
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
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
427 Get a sort key for a string from a UCollator. Sort keys
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
428 may be compared using strcmp.
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 ubyte[] getSortKey (UStringView t, ubyte[] result)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
433 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
434 uint len = ucol_getSortKey (handle, t.get.ptr, t.len, result.ptr, result.length);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
435 if (len < result.length)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
436 return result [0..len];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
437 return null;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
438 }
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 Merge two sort keys. The levels are merged with their
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
443 corresponding counterparts (primaries with primaries,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
444 secondaries with secondaries etc.). Between the values
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
445 from the same level a separator is inserted. example
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
446 (uncompressed): 191B1D 01 050505 01 910505 00 and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
447 1F2123 01 050505 01 910505 00 will be merged as
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
448 191B1D 02 1F212301 050505 02 050505 01 910505 02 910505 00
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
449 This allows for concatenating of first and last names for
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
450 sorting, among other things. If the destination buffer is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
451 not big enough, the results are undefined. If any of source
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
452 lengths are zero or any of source pointers are null/undefined,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
453 result is of size zero.
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 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
456
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
457 ubyte[] mergeSortkeys (ubyte[] left, ubyte[] right, ubyte[] result)
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 uint len = ucol_mergeSortkeys (left.ptr, left.length, right.ptr, right.length, result.ptr, result.length);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
460 if (len < result.length)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
461 return result [0..len];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
462 return null;
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
465 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
466
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
467 Produce a bound for a given sortkey and a number of levels.
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 Return value is always the number of bytes needed, regardless
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
470 of whether the result buffer was big enough or even valid.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
471
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
472 Resulting bounds can be used to produce a range of strings
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
473 that are between upper and lower bounds. For example, if
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
474 bounds are produced for a sortkey of string "smith", strings
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
475 between upper and lower bounds with one level would include
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
476 "Smith", "SMITH", "sMiTh".
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 There are two upper bounds that can be produced. If BoundUpper
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
479 is produced, strings matched would be as above. However, if
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
480 bound produced using BoundUpperLong is used, the above example
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
481 will also match "Smithsonian" and similar.
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 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
484
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
485 ubyte[] getBound (BoundMode mode, ubyte[] source, ubyte[] result, uint levels = 1)
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 UErrorCode e;
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 uint len = ucol_getBound (source.ptr, source.length, mode, levels, result.ptr, result.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
490 testError (e, "failed to get sortkey bound");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
491 if (len < result.length)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
492 return result [0..len];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
493 return null;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
494 }
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 Gets the version information for a Collator.
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 Version is currently an opaque 32-bit number which depends,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
501 among other things, on major versions of the collator
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
502 tailoring and UCA
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
503
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
504 ***********************************************************************/
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 void getVersion (inout Version v)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
507 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
508 ucol_getVersion (handle, v);
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
513 Gets the UCA version information for this Collator
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 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
516
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
517 void getUCAVersion (inout Version v)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
518 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
519 ucol_getUCAVersion (handle, v);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
520 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
521
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
522 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
523
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
524 Universal attribute setter
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
525
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
526 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
527
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
528 void setAttribute (Attribute attr, AttributeValue value)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
529 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
530 UErrorCode e;
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 ucol_setAttribute (handle, attr, value, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
533 testError (e, "failed to set collator attribute");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
534 }
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 Universal attribute getter
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 ***********************************************************************/
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 AttributeValue getAttribute (Attribute attr)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
543 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
544 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
545
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
546 AttributeValue v = ucol_getAttribute (handle, attr, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
547 testError (e, "failed to get collator attribute");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
548 return v;
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
551 /***********************************************************************
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 Variable top is a two byte primary value which causes all
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
554 the codepoints with primary values that are less or equal
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
555 than the variable top to be shifted when alternate handling
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
556 is set to Shifted.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
557
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
558 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
559
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
560 void setVariableTop (UStringView t)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
561 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
562 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
563
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
564 ucol_setVariableTop (handle, t.get.ptr, t.len, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
565 testError (e, "failed to set variable-top");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
566 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
567
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
568 /***********************************************************************
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 Sets the variable top to a collation element value
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
571 supplied.Variable top is set to the upper 16 bits.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
572 Lower 16 bits are ignored.
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 void setVariableTop (uint x)
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 ucol_restoreVariableTop (handle, x, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
581 testError (e, "failed to restore variable-top");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
582 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
583
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 Gets the variable top value of this Collator. Lower 16 bits
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
587 are undefined and should be ignored.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
588
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
589 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
590
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
591 uint getVariableTop ()
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 UErrorCode e;
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 x = ucol_getVariableTop (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
596 testError (e, "failed to get variable-top");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
597 return x;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
598 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
599
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
600 /***********************************************************************
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 Gets the locale name of the collator. If the collator is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
603 instantiated from the rules, then this function will throw
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
604 an exception
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
605
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
606 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
607
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
608 void getLocale (ULocale locale, ULocale.Type type)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
609 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
610 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
611
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
612 locale.name = toArray (ucol_getLocaleByType (handle, type, e));
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
613 if (isError(e) || locale.name is null)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
614 exception ("failed to get collator locale");
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
617 /***********************************************************************
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 Get the Unicode set that contains all the characters and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
620 sequences tailored in this collator.
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
624 USet getTailoredSet ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
625 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
626 UErrorCode e;
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 Handle h = ucol_getTailoredSet (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
629 testError (e, "failed to get tailored set");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
630 return new USet (h);
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
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
636 Bind the ICU functions from a shared library. This is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
637 complicated by the issues regarding D and DLLs on the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
638 Windows platform
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
639
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
640 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
641
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
642 private static void* library;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
643
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
644 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
645
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
646 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
647
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
648 private static extern (C)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
649 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
650 void function (Handle) ucol_close;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
651 Handle function (char *loc, inout UErrorCode e) ucol_open;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
652 Handle function (wchar* rules, uint rulesLength, AttributeValue normalizationMode, Strength strength, UParseError *parseError, inout UErrorCode e) ucol_openRules;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
653 Handle function (char *definition, byte forceDefaults, UParseError *parseError, inout UErrorCode e) ucol_openFromShortString;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
654 uint function (Handle, Handle conts, inout UErrorCode e) ucol_getContractions;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
655 int function (Handle, wchar* source, uint sourceLength, wchar* target, uint targetLength) ucol_strcoll;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
656 byte function (Handle, wchar* source, uint sourceLength, wchar* target, uint targetLength) ucol_greater;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
657 byte function (Handle, wchar* source, uint sourceLength, wchar* target, uint targetLength) ucol_greaterOrEqual;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
658 byte function (Handle, wchar* source, uint sourceLength, wchar* target, uint targetLength) ucol_equal;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
659 Strength function (Handle) ucol_getStrength;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
660 void function (Handle, Strength strength) ucol_setStrength;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
661 uint function (char *objLoc, char *dispLoc, wchar* result, uint resultLength, inout UErrorCode e) ucol_getDisplayName;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
662 uint function (Handle, char *locale, char *buffer, uint capacity, inout UErrorCode e) ucol_getShortDefinitionString;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
663 uint function (char *source, char *destination, uint capacity, UParseError *parseError, inout UErrorCode e) ucol_normalizeShortDefinitionString;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
664 uint function (Handle, wchar* source, uint sourceLength, ubyte *result, uint resultLength) ucol_getSortKey;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
665 uint function (ubyte *source, uint sourceLength, BoundMode boundType, uint noOfLevels, ubyte *result, uint resultLength, inout UErrorCode e) ucol_getBound;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
666 void function (Handle, Version info) ucol_getVersion;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
667 void function (Handle, Version info) ucol_getUCAVersion;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
668 uint function (ubyte *src1, uint src1Length, ubyte *src2, uint src2Length, ubyte *dest, uint destCapacity) ucol_mergeSortkeys;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
669 void function (Handle, Attribute attr, AttributeValue value, inout UErrorCode e) ucol_setAttribute;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
670 AttributeValue function (Handle, Attribute attr, inout UErrorCode e) ucol_getAttribute;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
671 uint function (Handle, wchar* varTop, uint len, inout UErrorCode e) ucol_setVariableTop;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
672 uint function (Handle, inout UErrorCode e) ucol_getVariableTop;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
673 void function (Handle, uint varTop, inout UErrorCode e) ucol_restoreVariableTop;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
674 uint function (Handle, RuleOption delta, wchar* buffer, uint bufferLen) ucol_getRulesEx;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
675 char* function (Handle, ULocale.Type type, inout UErrorCode e) ucol_getLocaleByType;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
676 Handle function (Handle, inout UErrorCode e) ucol_getTailoredSet;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
677 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
678
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
679 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
680
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 static FunctionLoader.Bind[] targets =
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 {cast(void**) &ucol_open, "ucol_open"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
686 {cast(void**) &ucol_close, "ucol_close"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
687 {cast(void**) &ucol_openRules, "ucol_openRules"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
688 {cast(void**) &ucol_openFromShortString, "ucol_openFromShortString"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
689 {cast(void**) &ucol_getContractions, "ucol_getContractions"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
690 {cast(void**) &ucol_strcoll, "ucol_strcoll"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
691 {cast(void**) &ucol_greater, "ucol_greater"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
692 {cast(void**) &ucol_greaterOrEqual, "ucol_greaterOrEqual"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
693 {cast(void**) &ucol_equal, "ucol_equal"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
694 {cast(void**) &ucol_getStrength, "ucol_getStrength"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
695 {cast(void**) &ucol_setStrength, "ucol_setStrength"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
696 {cast(void**) &ucol_getDisplayName, "ucol_getDisplayName"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
697 {cast(void**) &ucol_getShortDefinitionString, "ucol_getShortDefinitionString"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
698 {cast(void**) &ucol_normalizeShortDefinitionString, "ucol_normalizeShortDefinitionString"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
699 {cast(void**) &ucol_getSortKey, "ucol_getSortKey"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
700 {cast(void**) &ucol_getBound, "ucol_getBound"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
701 {cast(void**) &ucol_getVersion, "ucol_getVersion"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
702 {cast(void**) &ucol_getUCAVersion, "ucol_getUCAVersion"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
703 {cast(void**) &ucol_mergeSortkeys, "ucol_mergeSortkeys"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
704 {cast(void**) &ucol_setAttribute, "ucol_setAttribute"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
705 {cast(void**) &ucol_getAttribute, "ucol_getAttribute"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
706 {cast(void**) &ucol_setVariableTop, "ucol_setVariableTop"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
707 {cast(void**) &ucol_getVariableTop, "ucol_getVariableTop"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
708 {cast(void**) &ucol_restoreVariableTop, "ucol_restoreVariableTop"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
709 {cast(void**) &ucol_getRulesEx, "ucol_getRulesEx"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
710 {cast(void**) &ucol_getLocaleByType, "ucol_getLocaleByType"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
711 {cast(void**) &ucol_getTailoredSet, "ucol_getTailoredSet"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
712 ];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
713
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
714 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
715
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
716 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
717
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
718 static this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
719 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
720 library = FunctionLoader.bind (icuin, targets);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
721 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
722
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
723 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
724
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
725 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
726
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
727 static ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
728 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
729 FunctionLoader.unbind (library);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
730 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
731 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
732