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