intl/icu/source/i18n/anytrans.h

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /*
     2 ***********************************************************************
     3 * Copyright (c) 2002-2007, International Business Machines Corporation
     4 * and others.  All Rights Reserved.
     5 ***********************************************************************
     6 * Date        Name        Description
     7 * 06/06/2002  aliu        Creation.
     8 ***********************************************************************
     9 */
    10 #ifndef _ANYTRANS_H_
    11 #define _ANYTRANS_H_
    13 #include "unicode/utypes.h"
    15 #if !UCONFIG_NO_TRANSLITERATION
    17 #include "unicode/translit.h"
    18 #include "unicode/uscript.h"
    19 #include "uhash.h"
    21 U_NAMESPACE_BEGIN
    23 /**
    24  * A transliterator named Any-T or Any-T/V, where T is the target
    25  * script and V is the optional variant, that uses multiple
    26  * transliterators, all going to T or T/V, all with script sources.
    27  * The target must be a script.  It partitions text into runs of the
    28  * same script, and then based on the script of each run,
    29  * transliterates from that script to the given target or
    30  * target/variant.  Adjacent COMMON or INHERITED script characters are
    31  * included in each run.
    32  *
    33  * @author Alan Liu
    34  */
    35 class AnyTransliterator : public Transliterator {
    37     /**
    38      * Cache mapping UScriptCode values to Transliterator*.
    39      */
    40     UHashtable* cache;
    42     /**
    43      * The target or target/variant string.
    44      */
    45     UnicodeString target;
    47     /**
    48      * The target script code.  Never USCRIPT_INVALID_CODE.
    49      */
    50     UScriptCode targetScript;
    52 public:
    54     /**
    55      * Destructor.
    56      */
    57     virtual ~AnyTransliterator();
    59     /**
    60      * Copy constructor.
    61      */
    62     AnyTransliterator(const AnyTransliterator&);
    64     /**
    65      * Transliterator API.
    66      */
    67     virtual Transliterator* clone() const;
    69     /**
    70      * Implements {@link Transliterator#handleTransliterate}.
    71      */
    72     virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
    73                                      UBool incremental) const;
    75     /**
    76      * ICU "poor man's RTTI", returns a UClassID for the actual class.
    77      */
    78     virtual UClassID getDynamicClassID() const;
    80     /**
    81      * ICU "poor man's RTTI", returns a UClassID for this class.
    82      */
    83     U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
    85 private:
    87     /**
    88      * Private constructor
    89      * @param id the ID of the form S-T or S-T/V, where T is theTarget
    90      * and V is theVariant.  Must not be empty.
    91      * @param theTarget the target name.  Must not be empty, and must
    92      * name a script corresponding to theTargetScript.
    93      * @param theVariant the variant name, or the empty string if
    94      * there is no variant
    95      * @param theTargetScript the script code corresponding to
    96      * theTarget.
    97      * @param ec error code, fails if the internal hashtable cannot be
    98      * allocated
    99      */
   100     AnyTransliterator(const UnicodeString& id,
   101                       const UnicodeString& theTarget,
   102                       const UnicodeString& theVariant,
   103                       UScriptCode theTargetScript,
   104                       UErrorCode& ec);
   106     /**
   107      * Returns a transliterator from the given source to our target or
   108      * target/variant.  Returns NULL if the source is the same as our
   109      * target script, or if the source is USCRIPT_INVALID_CODE.
   110      * Caches the result and returns the same transliterator the next
   111      * time.  The caller does NOT own the result and must not delete
   112      * it.
   113      */
   114     Transliterator* getTransliterator(UScriptCode source) const;
   116     /**
   117      * Registers standard transliterators with the system.  Called by
   118      * Transliterator during initialization.
   119      */
   120     static void registerIDs();
   122     friend class Transliterator; // for registerIDs()
   123 };
   125 U_NAMESPACE_END
   127 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
   129 #endif

mercurial