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