]> git.saurik.com Git - apple/icu.git/blob - icuSources/i18n/titletrn.h
ICU-66108.tar.gz
[apple/icu.git] / icuSources / i18n / titletrn.h
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (C) 2001-2007, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 **********************************************************************
8 * Date Name Description
9 * 05/24/01 aliu Creation.
10 **********************************************************************
11 */
12 #ifndef TITLETRN_H
13 #define TITLETRN_H
14
15 #include "unicode/utypes.h"
16
17 #if !UCONFIG_NO_TRANSLITERATION
18
19 #include "unicode/translit.h"
20 #include "ucase.h"
21 #include "casetrn.h"
22
23 U_NAMESPACE_BEGIN
24
25 /**
26 * A transliterator that converts all letters (as defined by
27 * <code>UCharacter.isLetter()</code>) to lower case, except for those
28 * letters preceded by non-letters. The latter are converted to title
29 * case using <code>u_totitle()</code>.
30 * @author Alan Liu
31 */
32 class TitlecaseTransliterator : public CaseMapTransliterator {
33 public:
34
35 /**
36 * Constructs a transliterator.
37 * @param loc the given locale.
38 */
39 TitlecaseTransliterator();
40
41 /**
42 * Destructor.
43 */
44 virtual ~TitlecaseTransliterator();
45
46 /**
47 * Copy constructor.
48 */
49 TitlecaseTransliterator(const TitlecaseTransliterator&);
50
51 /**
52 * Transliterator API.
53 * @return a copy of the object.
54 */
55 virtual TitlecaseTransliterator* clone() const;
56
57 /**
58 * ICU "poor man's RTTI", returns a UClassID for the actual class.
59 */
60 virtual UClassID getDynamicClassID() const;
61
62 /**
63 * ICU "poor man's RTTI", returns a UClassID for this class.
64 */
65 U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
66
67 protected:
68
69 /**
70 * Implements {@link Transliterator#handleTransliterate}.
71 * @param text the buffer holding transliterated and
72 * untransliterated text
73 * @param offset the start and limit of the text, the position
74 * of the cursor, and the start and limit of transliteration.
75 * @param incremental if true, assume more text may be coming after
76 * pos.contextLimit. Otherwise, assume the text is complete.
77 */
78 virtual void handleTransliterate(Replaceable& text, UTransPosition& offset,
79 UBool isIncremental) const;
80
81 private:
82 /**
83 * Assignment operator.
84 */
85 TitlecaseTransliterator& operator=(const TitlecaseTransliterator&);
86 };
87
88 U_NAMESPACE_END
89
90 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
91
92 #endif