1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru**********************************************************************
350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*   Copyright (C) 2001-2010, International Business Machines
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   Corporation and others.  All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru**********************************************************************
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   Date        Name        Description
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   07/03/01    aliu        Creation.
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru**********************************************************************
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef NORTRANS_H
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define NORTRANS_H
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_TRANSLITERATION
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/translit.h"
1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/normalizer2.h"
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A transliterator that performs normalization.
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @author Alan Liu
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass NormalizationTransliterator : public Transliterator {
2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    const Normalizer2 &fNorm2;
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public:
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Destructor.
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~NormalizationTransliterator();
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Copy constructor.
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    NormalizationTransliterator(const NormalizationTransliterator&);
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Transliterator API.
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return    A copy of the object.
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual Transliterator* clone(void) const;
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for the actual class.
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UClassID getDynamicClassID() const;
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * ICU "poor man's RTTI", returns a UClassID for this class.
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru protected:
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Implements {@link Transliterator#handleTransliterate}.
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param text          the buffer holding transliterated and
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                      untransliterated text
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param offset        the start and limit of the text, the position
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                      of the cursor, and the start and limit of transliteration.
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param incremental   if true, assume more text may be coming after
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                      pos.contextLimit. Otherwise, assume the text is complete.
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void handleTransliterate(Replaceable& text, UTransPosition& offset,
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                             UBool isIncremental) const;
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public:
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * System registration hook.  Public to Transliterator only.
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static void registerIDs();
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru private:
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Transliterator::Factory methods
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static Transliterator* _create(const UnicodeString& ID,
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                                   Token context);
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constructs a transliterator.  This method is private.
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Public users must use the factory method createInstance().
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    NormalizationTransliterator(const UnicodeString& id, const Normalizer2 &norm2);
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate:
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Assignment operator.
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    NormalizationTransliterator& operator=(const NormalizationTransliterator&);
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_TRANSLITERATION */
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
101