]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/casetrn.h
ICU-461.18.tar.gz
[apple/icu.git] / icuSources / i18n / casetrn.h
1 /*
2 *******************************************************************************
3 *
4 * Copyright (C) 2001-2008, 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 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 = 0;
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 U_I18N_API 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