Home | History | Annotate | Download | only in i18n
      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