os/textandloc/fontservices/textshaperplugin/IcuSource/common/unicode/unifunct.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /*
     2 **********************************************************************
     3 *   Copyright (c) 2002-2005, International Business Machines Corporation
     4 *   and others.  All Rights Reserved.
     5 **********************************************************************
     6 *   Date        Name        Description
     7 *   01/14/2002  aliu        Creation.
     8 **********************************************************************
     9 */
    10 #ifndef UNIFUNCT_H
    11 #define UNIFUNCT_H
    12 
    13 #include "unicode/utypes.h"
    14 #include "unicode/uobject.h"
    15 
    16 /**
    17  * \file 
    18  * \brief C++ API: Unicode Functor
    19  */
    20  
    21 U_NAMESPACE_BEGIN
    22 
    23 class UnicodeMatcher;
    24 class UnicodeReplacer;
    25 class TransliterationRuleData;
    26 
    27 /**
    28  * <code>UnicodeFunctor</code> is an abstract base class for objects
    29  * that perform match and/or replace operations on Unicode strings.
    30  * @author Alan Liu
    31  * @stable ICU 2.4
    32  */
    33 class U_COMMON_API UnicodeFunctor : public UObject {
    34 
    35 public:
    36 
    37     /**
    38      * Destructor
    39      * @stable ICU 2.4
    40      */
    41     virtual ~UnicodeFunctor();
    42 
    43     /**
    44      * Return a copy of this object.  All UnicodeFunctor objects
    45      * have to support cloning in order to allow classes using
    46      * UnicodeFunctor to implement cloning.
    47      * @stable ICU 2.4
    48      */
    49     virtual UnicodeFunctor* clone() const = 0;
    50 
    51     /**
    52      * Cast 'this' to a UnicodeMatcher* pointer and return the
    53      * pointer, or null if this is not a UnicodeMatcher*.  Subclasses
    54      * that mix in UnicodeMatcher as a base class must override this.
    55      * This protocol is required because a pointer to a UnicodeFunctor
    56      * cannot be cast to a pointer to a UnicodeMatcher, since
    57      * UnicodeMatcher is a mixin that does not derive from
    58      * UnicodeFunctor.
    59      * @stable ICU 2.4
    60      */
    61     virtual UnicodeMatcher* toMatcher() const;
    62 
    63     /**
    64      * Cast 'this' to a UnicodeReplacer* pointer and return the
    65      * pointer, or null if this is not a UnicodeReplacer*.  Subclasses
    66      * that mix in UnicodeReplacer as a base class must override this.
    67      * This protocol is required because a pointer to a UnicodeFunctor
    68      * cannot be cast to a pointer to a UnicodeReplacer, since
    69      * UnicodeReplacer is a mixin that does not derive from
    70      * UnicodeFunctor.
    71      * @stable ICU 2.4
    72      */
    73     virtual UnicodeReplacer* toReplacer() const;
    74 
    75     /**
    76      * Return the class ID for this class.  This is useful only for
    77      * comparing to a return value from getDynamicClassID().
    78      * @return          The class ID for all objects of this class.
    79      * @stable ICU 2.0
    80      */
    81     static UClassID U_EXPORT2 getStaticClassID(void);
    82 
    83     /**
    84      * Returns a unique class ID <b>polymorphically</b>.  This method
    85      * is to implement a simple version of RTTI, since not all C++
    86      * compilers support genuine RTTI.  Polymorphic operator==() and
    87      * clone() methods call this method.
    88      *
    89      * <p>Concrete subclasses of UnicodeFunctor should use the macro
    90      *    UOBJECT_DEFINE_RTTI_IMPLEMENTATION from uobject.h to
    91      *    provide definitios getStaticClassID and getDynamicClassID.
    92      *
    93      * @return The class ID for this object. All objects of a given
    94      * class have the same class ID.  Objects of other classes have
    95      * different class IDs.
    96      * @stable ICU 2.4
    97      */
    98     virtual UClassID getDynamicClassID(void) const = 0;
    99 
   100     /**
   101      * Set the data object associated with this functor.  The data
   102      * object provides context for functor-to-standin mapping.  This
   103      * method is required when assigning a functor to a different data
   104      * object.  This function MAY GO AWAY later if the architecture is
   105      * changed to pass data object pointers through the API.
   106      * @internal ICU 2.1
   107      */
   108     virtual void setData(const TransliterationRuleData*) = 0;
   109 
   110 protected:
   111 
   112     /**
   113      * Since this class has pure virtual functions,
   114      * a constructor can't be used.
   115      * @stable ICU 2.0
   116      */
   117     /*UnicodeFunctor();*/
   118 
   119 };
   120 
   121 /*inline UnicodeFunctor::UnicodeFunctor() {}*/
   122 
   123 U_NAMESPACE_END
   124 
   125 #endif