1 /* 2 ******************************************************************************* 3 * 4 * Copyright (C) 2001-2007, International Business Machines 5 * Corporation and others. All Rights Reserved. 6 * 7 ******************************************************************************* 8 * file name: casetrn.h 9 * encoding: US-ASCII 10 * tab size: 8 (not used) 11 * indentation:4 12 * 13 * created on: 2004sep03 14 * created by: Markus W. Scherer 15 * 16 * Implementation class for lower-/upper-/title-casing transliterators. 17 */ 18 19 #ifndef __CASETRN_H__ 20 #define __CASETRN_H__ 21 22 #include "unicode/utypes.h" 23 24 #if !UCONFIG_NO_TRANSLITERATION 25 26 #include "unicode/translit.h" 27 #include "ucase.h" 28 29 U_NAMESPACE_BEGIN 30 31 /** 32 * A transliterator that performs locale-sensitive 33 * case mapping. 34 */ 35 class U_I18N_API CaseMapTransliterator : public Transliterator { 36 public: 37 /** 38 * Constructs a transliterator. 39 * @param loc the given locale. 40 * @param id the transliterator ID. 41 * @param map the full case mapping function (see ucase.h) 42 */ 43 CaseMapTransliterator(const UnicodeString &id, UCaseMapFull *map); 44 45 /** 46 * Destructor. 47 */ 48 virtual ~CaseMapTransliterator(); 49 50 /** 51 * Copy constructor. 52 */ 53 CaseMapTransliterator(const CaseMapTransliterator&); 54 55 /** 56 * Transliterator API. 57 * @return a copy of the object. 58 */ 59 virtual Transliterator* clone(void) const; 60 61 /** 62 * ICU "poor man's RTTI", returns a UClassID for the actual class. 63 */ 64 virtual UClassID getDynamicClassID() const; 65 66 /** 67 * ICU "poor man's RTTI", returns a UClassID for this class. 68 */ 69 static UClassID U_EXPORT2 getStaticClassID(); 70 71 protected: 72 /** 73 * Implements {@link Transliterator#handleTransliterate}. 74 * @param text the buffer holding transliterated and 75 * untransliterated text 76 * @param offset the start and limit of the text, the position 77 * of the cursor, and the start and limit of transliteration. 78 * @param incremental if true, assume more text may be coming after 79 * pos.contextLimit. Otherwise, assume the text is complete. 80 */ 81 virtual void handleTransliterate(Replaceable& text, 82 UTransPosition& offsets, 83 UBool isIncremental) const; 84 85 const UCaseProps *fCsp; 86 UCaseMapFull *fMap; 87 88 private: 89 /** 90 * Assignment operator. 91 */ 92 CaseMapTransliterator& operator=(const CaseMapTransliterator&); 93 94 }; 95 96 U_NAMESPACE_END 97 98 /** case context iterator using a Replaceable. This must be a C function because it is a callback. */ 99 U_CFUNC UChar32 U_CALLCONV 100 utrans_rep_caseContextIterator(void *context, int8_t dir); 101 102 #endif /* #if !UCONFIG_NO_TRANSLITERATION */ 103 104 #endif 105