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