00001 /* 00002 ********************************************************************** 00003 * Copyright (c) 2002, International Business Machines Corporation 00004 * and others. All Rights Reserved. 00005 ********************************************************************** 00006 * Date Name Description 00007 * 01/14/2002 aliu Creation. 00008 ********************************************************************** 00009 */ 00010 #ifndef UNIFUNCT_H 00011 #define UNIFUNCT_H 00012 00013 #include "unicode/utypes.h" 00014 #include "unicode/uobject.h" 00015 00016 U_NAMESPACE_BEGIN 00017 00018 class UnicodeMatcher; 00019 class UnicodeReplacer; 00020 class TransliterationRuleData; 00021 00027 class U_COMMON_API UnicodeFunctor : public UObject { 00028 00029 public: 00030 00034 virtual ~UnicodeFunctor(); 00035 00041 virtual UnicodeFunctor* clone() const = 0; 00042 00052 virtual UnicodeMatcher* toMatcher() const; 00053 00063 virtual UnicodeReplacer* toReplacer() const; 00064 00076 static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; } 00077 00100 virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }; 00101 00110 virtual void setData(const TransliterationRuleData*) = 0; 00111 00112 protected: 00113 00114 UnicodeFunctor(); 00115 00116 private: 00117 00122 static const char fgClassID; 00123 }; 00124 00125 inline UnicodeFunctor::UnicodeFunctor() {} 00126 inline UnicodeFunctor::~UnicodeFunctor() {} 00127 00128 U_NAMESPACE_END 00129 00130 #endif