Movatterモバイル変換


[0]ホーム

URL:


ICU 78.1  78.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 U_SHOW_CPLUSPLUS_API
16 
17 #if !UCONFIG_NO_NORMALIZATION
18 
19 #include "unicode/uobject.h"
20 #include "unicode/unistr.h"
21 
31 #ifndef CANITER_SKIP_ZEROES
32 #define CANITER_SKIP_ZEROES true
33 #endif
34 
35 U_NAMESPACE_BEGIN
36 
37 classHashtable;
38 classNormalizer2;
39 classNormalizer2Impl;
40 
76 classU_COMMON_APICanonicalIterator final :publicUObject {
77 public:
84 CanonicalIterator(constUnicodeString &source,UErrorCode &status);
85 
90 virtual~CanonicalIterator();
91 
97 UnicodeStringgetSource();
98 
103 voidreset();
104 
112 UnicodeStringnext();
113 
121 voidsetSource(constUnicodeString &newSource,UErrorCode &status);
122 
123 #ifndef U_HIDE_INTERNAL_API
134 staticvoid U_EXPORT2permute(UnicodeString &source,UBool skipZeros, Hashtable *result,UErrorCode &status, int32_t depth=0);
135 #endif/* U_HIDE_INTERNAL_API */
136 
142 staticUClassID U_EXPORT2getStaticClassID();
143 
149 virtualUClassIDgetDynamicClassID()const override;
150 
151 private:
152 // ===================== PRIVATES ==============================
153 // private default constructor
154 CanonicalIterator() =delete;
155 
156 
160 CanonicalIterator(constCanonicalIterator& other) =delete;
161 
165 CanonicalIterator& operator=(constCanonicalIterator& other) =delete;
166 
167 // fields
168 UnicodeString source;
169 UBool done;
170 
171 // 2 dimensional array holds the pieces of the string with
172 // their different canonically equivalent representations
173 UnicodeString **pieces;
174  int32_t pieces_length;
175  int32_t *pieces_lengths;
176 
177 // current is used in iterating to combine pieces
178  int32_t *current;
179  int32_t current_length;
180 
181 // transient fields
182 UnicodeString buffer;
183 
184 constNormalizer2 *nfd;
185 const Normalizer2Impl *nfcImpl;
186 
187 // we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
188 UnicodeString *getEquivalents(constUnicodeString &segment, int32_t &result_len,UErrorCode &status);//private String[] getEquivalents(String segment)
189 
190 //Set getEquivalents2(String segment);
191  Hashtable *getEquivalents2(Hashtable *fillinResult,const char16_t *segment, int32_t segLen,UErrorCode &status);
192 //Hashtable *getEquivalents2(const UnicodeString &segment, int32_t segLen, UErrorCode &status);
193 
199 //Set extract(int comp, String segment, int segmentPos, StringBuffer buffer);
200  Hashtable *extract(Hashtable *fillinResult,UChar32 comp,const char16_t *segment, int32_t segLen, int32_t segmentPos,UErrorCode &status);
201 //Hashtable *extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status);
202 
203 void cleanPieces();
204 
205 };
206 
207 U_NAMESPACE_END
208 
209 #endif/* #if !UCONFIG_NO_NORMALIZATION */
210 
211 #endif/* U_SHOW_CPLUSPLUS_API */
212 
213 #endif
icu::CanonicalIterator
This class allows one to iterate through all the strings that are canonically equivalent to a given s...
Definition:caniter.h:76
icu::CanonicalIterator::reset
void reset()
Resets the iterator so that one can start again from the beginning.
icu::CanonicalIterator::next
UnicodeString next()
Get the next canonically equivalent string.
icu::CanonicalIterator::permute
static void permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status, int32_t depth=0)
Dumb recursive implementation of permutation.
icu::CanonicalIterator::getStaticClassID
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
icu::CanonicalIterator::setSource
void setSource(const UnicodeString &newSource, UErrorCode &status)
Set a new source for this iterator.
icu::CanonicalIterator::getDynamicClassID
virtual UClassID getDynamicClassID() const override
ICU "poor man's RTTI", returns a UClassID for the actual class.
icu::CanonicalIterator::CanonicalIterator
CanonicalIterator(const UnicodeString &source, UErrorCode &status)
Construct a CanonicalIterator object.
icu::CanonicalIterator::getSource
UnicodeString getSource()
Gets the NFD form of the current source we are iterating over.
icu::CanonicalIterator::~CanonicalIterator
virtual ~CanonicalIterator()
Destructor Cleans pieces.
icu::Normalizer2
Unicode normalization functionality for standard Unicode normalization or for using custom mapping ta...
Definition:normalizer2.h:85
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition:uobject.h:222
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition:unistr.h:303
UChar32
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition:umachine.h:449
UBool
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition:umachine.h:269
unistr.h
C++ API: Unicode String.
uobject.h
C++ API: Common ICU base class UObject.
UClassID
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition:uobject.h:96
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition:utypes.h:509
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:315

Generated by doxygen 1.9.1
[8]ページ先頭

©2009-2025 Movatter.jp