ICU 63.1 63.1

caniter.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 1996-2014, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 *******************************************************************************
8 */
9
10 #ifndef CANITER_H
11 #define CANITER_H
12
13 #include "unicode/utypes.h"
14
15 #if !UCONFIG_NO_NORMALIZATION
16
17 #include "unicode/uobject.h"
18 #include "unicode/unistr.h"
19
29 #ifndef CANITER_SKIP_ZEROES
30 #define CANITER_SKIP_ZEROES TRUE
31 #endif
32
33 U_NAMESPACE_BEGIN
34
35 class Hashtable;
36 class Normalizer2;
37 class Normalizer2Impl;
38
74 class U_COMMON_API CanonicalIterator U_FINAL : public UObject {
75 public:
82 CanonicalIterator(const UnicodeString &source, UErrorCode &status);
83
88 virtual ~CanonicalIterator();
89
95 UnicodeString getSource();
96
101 void reset();
102
110 UnicodeString next();
111
119 void setSource(const UnicodeString &newSource, UErrorCode &status);
120
121 #ifndef U_HIDE_INTERNAL_API
122
131 static void U_EXPORT2 permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status);
132 #endif /* U_HIDE_INTERNAL_API */
133
139 static UClassID U_EXPORT2 getStaticClassID();
140
146 virtual UClassID getDynamicClassID() const;
147
148 private:
149 // ===================== PRIVATES ==============================
150 // private default constructor
151 CanonicalIterator();
152
153
158 CanonicalIterator(const CanonicalIterator& other);
159
164 CanonicalIterator& operator=(const CanonicalIterator& other);
165
166 // fields
167 UnicodeString source;
168 UBool done;
169
170 // 2 dimensional array holds the pieces of the string with
171 // their different canonically equivalent representations
172 UnicodeString **pieces;
173 int32_t pieces_length;
174 int32_t *pieces_lengths;
175
176 // current is used in iterating to combine pieces
177 int32_t *current;
178 int32_t current_length;
179
180 // transient fields
181 UnicodeString buffer;
182
183 const Normalizer2 &nfd;
184 const Normalizer2Impl &nfcImpl;
185
186 // we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
187 UnicodeString *getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status); //private String[] getEquivalents(String segment)
188
189 //Set getEquivalents2(String segment);
190 Hashtable *getEquivalents2(Hashtable *fillinResult, const char16_t *segment, int32_t segLen, UErrorCode &status);
191 //Hashtable *getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status);
192
198 //Set extract(int comp, String segment, int segmentPos, StringBuffer buffer);
199 Hashtable *extract(Hashtable *fillinResult, UChar32 comp, const char16_t *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
200 //Hashtable *extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
201
202 void cleanPieces();
203
204 };
205
206 U_NAMESPACE_END
207
208 #endif /* #if !UCONFIG_NO_NORMALIZATION */
209
210 #endif
icu::CanonicalIterator
This class allows one to iterate through all the strings that are canonically equivalent to a given...
Definition: caniter.h:74
unistr.h
C++ API: Unicode String.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:90
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:137
icu::Normalizer2
Unicode normalization functionality for standard Unicode normalization or for using custom mapping ta...
Definition: normalizer2.h:83
UChar32
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:389
icu::UObject::getDynamicClassID
virtual UClassID getDynamicClassID() const
ICU4C "poor man&#39;s RTTI", returns a UClassID for the actual ICU class.
uobject.h
C++ API: Common ICU base class UObject.
U_NAMESPACE_END
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:138
UErrorCode
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:401
U_FINAL
#define U_FINAL
Defined to the C++11 "final" keyword if available.
Definition: umachine.h:140
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
U_COMMON_API
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside...
Definition: utypes.h:300
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:289
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:220
UBool
int8_t UBool
The ICU boolean type.
Definition: umachine.h:225