1 /* 2 ********************************************************************** 3 * Copyright (C) 2001-2007, International Business Machines 4 * Corporation and others. All Rights Reserved. 5 ********************************************************************** 6 * Date Name Description 7 * 07/03/01 aliu Creation. 8 ********************************************************************** 9 */ 10 #ifndef NORTRANS_H 11 #define NORTRANS_H 12 13 #include "unicode/utypes.h" 14 15 #if !UCONFIG_NO_TRANSLITERATION 16 17 #include "unicode/translit.h" 18 #include "unicode/normlzr.h" 19 20 U_NAMESPACE_BEGIN 21 22 /** 23 * A transliterator that performs normalization. 24 * @author Alan Liu 25 */ 26 class NormalizationTransliterator : public Transliterator { 27 28 /** 29 * The normalization mode of this transliterator. 30 */ 31 UNormalizationMode fMode; 32 33 /** 34 * Normalization options for this transliterator. 35 */ 36 int32_t options; 37 38 public: 39 40 /** 41 * Destructor. 42 */ 43 virtual ~NormalizationTransliterator(); 44 45 /** 46 * Copy constructor. 47 */ 48 NormalizationTransliterator(const NormalizationTransliterator&); 49 50 /** 51 * Transliterator API. 52 * @return A copy of the object. 53 */ 54 virtual Transliterator* clone(void) const; 55 56 /** 57 * ICU "poor man's RTTI", returns a UClassID for the actual class. 58 */ 59 virtual UClassID getDynamicClassID() const; 60 61 /** 62 * ICU "poor man's RTTI", returns a UClassID for this class. 63 */ 64 U_I18N_API static UClassID U_EXPORT2 getStaticClassID(); 65 66 protected: 67 68 /** 69 * Implements {@link Transliterator#handleTransliterate}. 70 * @param text the buffer holding transliterated and 71 * untransliterated text 72 * @param offset the start and limit of the text, the position 73 * of the cursor, and the start and limit of transliteration. 74 * @param incremental if true, assume more text may be coming after 75 * pos.contextLimit. Otherwise, assume the text is complete. 76 */ 77 virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, 78 UBool isIncremental) const; 79 public: 80 81 /** 82 * System registration hook. Public to Transliterator only. 83 */ 84 static void registerIDs(); 85 86 private: 87 88 // Transliterator::Factory methods 89 static Transliterator* _create(const UnicodeString& ID, 90 Token context); 91 92 /** 93 * Constructs a transliterator. This method is private. 94 * Public users must use the factory method createInstance(). 95 */ 96 NormalizationTransliterator(const UnicodeString& id, 97 UNormalizationMode mode, int32_t opt); 98 99 private: 100 /** 101 * Assignment operator. 102 */ 103 NormalizationTransliterator& operator=(const NormalizationTransliterator&); 104 }; 105 106 U_NAMESPACE_END 107 108 #endif /* #if !UCONFIG_NO_TRANSLITERATION */ 109 110 #endif 111