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