1 /*
2 **********************************************************************
3 *   Copyright (C) 2001-2007, International Business Machines
4 *   Corporation and others.  All Rights Reserved.
5 **********************************************************************
6 *   Date        Name        Description
7 *   06/06/01    aliu        Creation.
8 **********************************************************************
9 */
10 #ifndef UNI2NAME_H
11 #define UNI2NAME_H
12 
13 #include "unicode/utypes.h"
14 
15 #if !UCONFIG_NO_TRANSLITERATION
16 
17 #include "unicode/translit.h"
18 
19 U_NAMESPACE_BEGIN
20 
21 /**
22  * A transliterator that performs character to name mapping.
23  * It generates the Perl syntax \N{name}.
24  * @author Alan Liu
25  */
26 class UnicodeNameTransliterator : public Transliterator {
27 
28  public:
29 
30     /**
31      * Constructs a transliterator.
32      * @param adoptedFilter the filter to be adopted.
33      */
34     UnicodeNameTransliterator(UnicodeFilter* adoptedFilter = 0);
35 
36     /**
37      * Destructor.
38      */
39     virtual ~UnicodeNameTransliterator();
40 
41     /**
42      * Copy constructor.
43      */
44     UnicodeNameTransliterator(const UnicodeNameTransliterator&);
45 
46     /**
47      * Transliterator API.
48      */
49     virtual Transliterator* clone(void) const;
50 
51     /**
52      * ICU "poor man's RTTI", returns a UClassID for the actual class.
53      */
54     virtual UClassID getDynamicClassID() const;
55 
56     /**
57      * ICU "poor man's RTTI", returns a UClassID for this class.
58      */
59     U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
60 
61  protected:
62 
63     /**
64      * Implements {@link Transliterator#handleTransliterate}.
65      * @param text        the buffer holding transliterated and
66      *                    untransliterated text
67      * @param offset      the start and limit of the text, the position
68      *                    of the cursor, and the start and limit of transliteration.
69      * @param incremental if true, assume more text may be coming after
70      *                    pos.contextLimit.  Otherwise, assume the text is complete.
71      */
72     virtual void handleTransliterate(Replaceable& text, UTransPosition& offset,
73                                      UBool isIncremental) const;
74 
75 private:
76     /**
77      * Assignment operator.
78      */
79     UnicodeNameTransliterator& operator=(const UnicodeNameTransliterator&);
80 
81 };
82 
83 U_NAMESPACE_END
84 
85 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
86 
87 #endif
88