ICU 62.1 62.1
translit.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) 1999-2014, International Business Machines
6* Corporation and others. All Rights Reserved.
7**********************************************************************
8* Date Name Description
9* 11/17/99 aliu Creation.
10**********************************************************************
11*/
12#ifndef TRANSLIT_H
13#define TRANSLIT_H
14
15#include "unicode/utypes.h"
16
22#if !UCONFIG_NO_TRANSLITERATION
23
24#include "unicode/uobject.h"
25#include "unicode/unistr.h"
26#include "unicode/parseerr.h"
27#include "unicode/utrans.h" // UTransPosition, UTransDirection
28#include "unicode/strenum.h"
29
31
32class UnicodeFilter;
33class UnicodeSet;
34class CompoundTransliterator;
35class TransliteratorParser;
36class NormalizationTransliterator;
37class TransliteratorIDParser;
38
244
245private:
246
250 UnicodeString ID;
251
258 UnicodeFilter* filter;
259
260 int32_t maximumContextLength;
261
262 public:
263
269 union Token {
274 int32_t integer;
279 void* pointer;
280 };
281
282#ifndef U_HIDE_INTERNAL_API
288 inline static Token integerToken(int32_t);
289
295 inline static Token pointerToken(void*);
296#endif /* U_HIDE_INTERNAL_API */
297
313 typedef Transliterator* (U_EXPORT2 *Factory)(const UnicodeString& ID, Token context);
314
315protected:
316
327
333
339
352 const UnicodeString* canon);
353
354 friend class TransliteratorParser; // for parseID()
355 friend class TransliteratorIDParser; // for createBasicInstance()
356 friend class TransliteratorAlias; // for setID()
357
358public:
359
365
380 virtual Transliterator* clone() const;
381
397 virtual int32_t transliterate(Replaceable& text,
398 int32_t start, int32_t limit) const;
399
405 virtual void transliterate(Replaceable& text) const;
406
471 virtual void transliterate(Replaceable& text, UTransPosition& index,
473 UErrorCode& status) const;
474
490 virtual void transliterate(Replaceable& text, UTransPosition& index,
492 UErrorCode& status) const;
493
507 virtual void transliterate(Replaceable& text, UTransPosition& index,
508 UErrorCode& status) const;
509
522 UTransPosition& index) const;
523
524private:
525
541 void _transliterate(Replaceable& text,
542 UTransPosition& index,
544 UErrorCode &status) const;
545
546protected:
547
628 UTransPosition& pos,
629 UBool incremental) const = 0;
630
631public:
644 UTransPosition& index,
645 UBool incremental) const;
646
647private:
648
676 virtual void filteredTransliterate(Replaceable& text,
677 UTransPosition& index,
679 UBool rollback) const;
680
681public:
682
696 int32_t getMaximumContextLength(void) const;
697
698protected:
699
707
708public:
709
720 virtual const UnicodeString& getID(void) const;
721
733
756 const Locale& inLocale,
758
766 const UnicodeFilter* getFilter(void) const;
767
778
790
811
829 UTransDirection dir,
832
844 UTransDirection dir,
846
863 const UnicodeString& rules,
864 UTransDirection dir,
867
881
894 int32_t countElements() const;
895
915 const Transliterator& getElement(int32_t index, UErrorCode& ec) const;
916
933
949
964
965public:
966
984 Factory factory,
985 Token context);
986
1009
1025 const UnicodeString& realID);
1026
1027protected:
1028
1029#ifndef U_HIDE_INTERNAL_API
1039 static void _registerFactory(const UnicodeString& id,
1040 Factory factory,
1041 Token context);
1042
1047
1052
1086 static void _registerSpecialInverse(const UnicodeString& target,
1089#endif /* U_HIDE_INTERNAL_API */
1090
1091public:
1092
1110 static void U_EXPORT2 unregister(const UnicodeString& ID);
1111
1112public:
1113
1124
1130 static int32_t U_EXPORT2 countAvailableSources(void);
1131
1143
1152 static int32_t U_EXPORT2 countAvailableTargets(const UnicodeString& source);
1153
1166 const UnicodeString& source,
1168
1176 static int32_t U_EXPORT2 countAvailableVariants(const UnicodeString& source,
1177 const UnicodeString& target);
1178
1193 const UnicodeString& source,
1194 const UnicodeString& target,
1196
1197protected:
1198
1199#ifndef U_HIDE_INTERNAL_API
1204 static int32_t _countAvailableSources(void);
1205
1210 static UnicodeString& _getAvailableSource(int32_t index,
1212
1217 static int32_t _countAvailableTargets(const UnicodeString& source);
1218
1223 static UnicodeString& _getAvailableTarget(int32_t index,
1224 const UnicodeString& source,
1226
1231 static int32_t _countAvailableVariants(const UnicodeString& source,
1232 const UnicodeString& target);
1233
1239 const UnicodeString& source,
1240 const UnicodeString& target,
1242#endif /* U_HIDE_INTERNAL_API */
1243
1244protected:
1245
1252 void setID(const UnicodeString& id);
1253
1254public:
1255
1267
1283 virtual UClassID getDynamicClassID(void) const = 0;
1284
1285private:
1286 static UBool initializeRegistry(UErrorCode &status);
1287
1288public:
1289#ifndef U_HIDE_OBSOLETE_API
1297 static int32_t U_EXPORT2 countAvailableIDs(void);
1298
1311 static const UnicodeString& U_EXPORT2 getAvailableID(int32_t index);
1312#endif /* U_HIDE_OBSOLETE_API */
1313};
1314
1315inline int32_t Transliterator::getMaximumContextLength(void) const {
1316 return maximumContextLength;
1317}
1318
1319inline void Transliterator::setID(const UnicodeString& id) {
1320 ID = id;
1321 // NUL-terminate the ID string, which is a non-aliased copy.
1322 ID.append((char16_t)0);
1323 ID.truncate(ID.length()-1);
1324}
1325
1326#ifndef U_HIDE_INTERNAL_API
1327inline Transliterator::Token Transliterator::integerToken(int32_t i) {
1328 Token t;
1329 t.integer = i;
1330 return t;
1331}
1332
1333inline Transliterator::Token Transliterator::pointerToken(void* p) {
1334 Token t;
1335 t.pointer = p;
1336 return t;
1337}
1338#endif /* U_HIDE_INTERNAL_API */
1339
1341
1342#endif /* #if !UCONFIG_NO_TRANSLITERATION */
1343
1344#endif
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:188
Replaceable is an abstract base class representing a string of characters that supports the replaceme...
Definition rep.h:73
Base class for 'pure' C++ implementations of uenum api.
Definition strenum.h:57
Transliterator is an abstract class that transliterates text from one format to another.
Definition translit.h:243
static Transliterator * createFromRules(const UnicodeString &ID, const UnicodeString &rules, UTransDirection dir, UParseError &parseError, UErrorCode &status)
Returns a Transliterator object constructed from the given rule string.
virtual UClassID getDynamicClassID(void) const =0
Returns a unique class ID polymorphically.
static UnicodeString & getAvailableVariant(int32_t index, const UnicodeString &source, const UnicodeString &target, UnicodeString &result)
Return a registered variant specifier for a given source-target pair.
virtual void transliterate(Replaceable &text) const
Transliterates an entire string in place.
static UClassID getStaticClassID(void)
Return the class ID for this class.
const UnicodeFilter * getFilter(void) const
Returns the filter used by this transliterator, or NULL if this transliterator uses no filter.
const Transliterator & getElement(int32_t index, UErrorCode &ec) const
Return an element that makes up this transliterator.
virtual const UnicodeString & getID(void) const
Returns a programmatic identifier for this transliterator.
void adoptFilter(UnicodeFilter *adoptedFilter)
Changes the filter used by this transliterator.
static int32_t countAvailableIDs(void)
Return the number of IDs currently registered with the system.
static UnicodeString & _getAvailableVariant(int32_t index, const UnicodeString &source, const UnicodeString &target, UnicodeString &result)
Non-mutexed internal method.
static void _registerAlias(const UnicodeString &aliasID, const UnicodeString &realID)
static void unregister(const UnicodeString &ID)
Unregisters a transliterator or class.
static UnicodeString & getDisplayName(const UnicodeString &ID, UnicodeString &result)
Returns a name for this transliterator that is appropriate for display to the user in the default loc...
virtual int32_t transliterate(Replaceable &text, int32_t start, int32_t limit) const
Transliterates a segment of a string, with optional filtering.
Transliterator & operator=(const Transliterator &)
Assignment operator.
virtual UnicodeSet & getTargetSet(UnicodeSet &result) const
Returns the set of all characters that may be generated as replacement text by this transliterator.
virtual void handleGetSourceSet(UnicodeSet &result) const
Framework method that returns the set of all characters that may be modified in the input text by thi...
static UnicodeString & getDisplayName(const UnicodeString &ID, const Locale &inLocale, UnicodeString &result)
Returns a name for this transliterator that is appropriate for display to the user in the given local...
static int32_t countAvailableSources(void)
Return the number of registered source specifiers.
Transliterator * createInverse(UErrorCode &status) const
Returns this transliterator's inverse.
static UnicodeString & getAvailableSource(int32_t index, UnicodeString &result)
Return a registered source specifier.
static Transliterator * createInstance(const UnicodeString &ID, UTransDirection dir, UErrorCode &status)
Returns a Transliterator object given its ID.
virtual ~Transliterator()
Destructor.
static void registerAlias(const UnicodeString &aliasID, const UnicodeString &realID)
Registers an ID string as an alias of another ID string.
static int32_t countAvailableVariants(const UnicodeString &source, const UnicodeString &target)
Return the number of registered variant specifiers for a given source-target pair.
static Transliterator * createBasicInstance(const UnicodeString &id, const UnicodeString *canon)
Create a transliterator from a basic ID.
virtual void transliterate(Replaceable &text, UTransPosition &index, UErrorCode &status) const
Transliterates the portion of the text buffer that can be transliterated unambiguosly.
virtual Transliterator * clone() const
Implements Cloneable.
virtual void handleTransliterate(Replaceable &text, UTransPosition &pos, UBool incremental) const =0
Abstract method that concrete subclasses define to implement their transliteration algorithm.
virtual void filteredTransliterate(Replaceable &text, UTransPosition &index, UBool incremental) const
Transliterate a substring of text, as specified by index, taking filters into account.
Transliterator *(* Factory)(const UnicodeString &ID, Token context)
A function that creates and returns a Transliterator.
Definition translit.h:313
static UnicodeString & _getAvailableTarget(int32_t index, const UnicodeString &source, UnicodeString &result)
Non-mutexed internal method.
static UnicodeString & getAvailableTarget(int32_t index, const UnicodeString &source, UnicodeString &result)
Return a registered target specifier for a given source.
static void _registerSpecialInverse(const UnicodeString &target, const UnicodeString &inverseTarget, UBool bidirectional)
Register two targets as being inverses of one another.
UnicodeSet & getSourceSet(UnicodeSet &result) const
Returns the set of all characters that may be modified in the input text by this Transliterator.
static int32_t _countAvailableSources(void)
Non-mutexed internal method.
static int32_t _countAvailableTargets(const UnicodeString &source)
Non-mutexed internal method.
virtual UnicodeString & toRules(UnicodeString &result, UBool escapeUnprintable) const
Create a rule string that can be passed to createFromRules() to recreate this transliterator.
virtual void transliterate(Replaceable &text, UTransPosition &index, const UnicodeString &insertion, UErrorCode &status) const
Transliterates the portion of the text buffer that can be transliterated unambiguosly after new text ...
static int32_t countAvailableTargets(const UnicodeString &source)
Return the number of registered target specifiers for a given source specifier.
Transliterator(const UnicodeString &ID, UnicodeFilter *adoptedFilter)
Default constructor.
Transliterator(const Transliterator &)
Copy constructor.
static void registerFactory(const UnicodeString &id, Factory factory, Token context)
Registers a factory function that creates transliterators of a given ID.
static UnicodeString & _getAvailableSource(int32_t index, UnicodeString &result)
Non-mutexed internal method.
void setMaximumContextLength(int32_t maxContextLength)
Method for subclasses to use to set the maximum context length.
static const UnicodeString & getAvailableID(int32_t index)
Return the index-th available ID.
static Transliterator * createInstance(const UnicodeString &ID, UTransDirection dir, UParseError &parseError, UErrorCode &status)
Returns a Transliterator object given its ID.
static void _registerFactory(const UnicodeString &id, Factory factory, Token context)
static void registerInstance(Transliterator *adoptedObj)
Registers an instance obj of a subclass of Transliterator with the system.
UnicodeFilter * orphanFilter(void)
Returns the filter used by this transliterator, or NULL if this transliterator uses no filter.
int32_t countElements() const
Return the number of elements that make up this transliterator.
virtual void finishTransliteration(Replaceable &text, UTransPosition &index) const
Finishes any pending transliterations that were waiting for more characters.
virtual void transliterate(Replaceable &text, UTransPosition &index, UChar32 insertion, UErrorCode &status) const
Transliterates the portion of the text buffer that can be transliterated unambiguosly after a new cha...
static void _registerInstance(Transliterator *adoptedObj)
static StringEnumeration * getAvailableIDs(UErrorCode &ec)
Return a StringEnumeration over the IDs available at the time of the call, including user-registered ...
static int32_t _countAvailableVariants(const UnicodeString &source, const UnicodeString &target)
Non-mutexed internal method.
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
UnicodeFilter defines a protocol for selecting a subset of the full range (U+0000 to U+10FFFF) of Uni...
Definition unifilt.h:61
A mutable set of Unicode characters and multicharacter strings.
Definition uniset.h:278
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:287
UBool truncate(int32_t targetLength)
Truncate this UnicodeString to the targetLength.
Definition unistr.h:4746
UnicodeString & append(const UnicodeString &srcText, int32_t srcStart, int32_t srcLength)
Append the characters in srcText in the range [srcStart, srcStart + srcLength) to the UnicodeString o...
Definition unistr.h:4638
C API: Parse Error Information.
C++ API: String Enumeration.
A UParseError struct is used to returned detailed information about parsing errors.
Definition parseerr.h:58
Position structure for utrans_transIncremental() incremental transliteration.
Definition utrans.h:122
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition umachine.h:400
int8_t UBool
The ICU boolean type.
Definition umachine.h:236
A context integer or pointer for a factory function, passed by value.
Definition translit.h:269
void * pointer
This token, interpreted as a native pointer.
Definition translit.h:279
int32_t integer
This token, interpreted as a 32-bit integer.
Definition translit.h:274
C++ API: Unicode String.
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition uobject.h:93
C API: Transliterator.
UTransDirection
Direction constant indicating the direction in a transliterator, e.g., the forward or reverse rules o...
Definition utrans.h:80
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition utypes.h:396
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:360
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition uversion.h:138
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition uversion.h:137