intl/icu/source/common/unicode/unifunct.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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
    13 #include "unicode/utypes.h"
    14 #include "unicode/uobject.h"
    16 /**
    17  * \file 
    18  * \brief C++ API: Unicode Functor
    19  */
    21 U_NAMESPACE_BEGIN
    23 class UnicodeMatcher;
    24 class UnicodeReplacer;
    25 class TransliterationRuleData;
    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 {
    35 public:
    37     /**
    38      * Destructor
    39      * @stable ICU 2.4
    40      */
    41     virtual ~UnicodeFunctor();
    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;
    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;
    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;
    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);
    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;
   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;
   110 protected:
   112     /**
   113      * Since this class has pure virtual functions,
   114      * a constructor can't be used.
   115      * @stable ICU 2.0
   116      */
   117     /*UnicodeFunctor();*/
   119 };
   121 /*inline UnicodeFunctor::UnicodeFunctor() {}*/
   123 U_NAMESPACE_END
   125 #endif

mercurial