00001 /* 00002 ********************************************************************** 00003 * Copyright (c) 2002-2003, 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 00028 class U_COMMON_API UnicodeFunctor : public UObject { 00029 00030 public: 00031 00036 virtual ~UnicodeFunctor(); 00037 00044 virtual UnicodeFunctor* clone() const = 0; 00045 00056 virtual UnicodeMatcher* toMatcher() const; 00057 00068 virtual UnicodeReplacer* toReplacer() const; 00069 00081 static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; } 00082 00106 virtual UClassID getDynamicClassID(void) const = 0; 00107 00116 virtual void setData(const TransliterationRuleData*) = 0; 00117 00118 protected: 00119 00123 UnicodeFunctor(); 00124 00125 private: 00126 00131 static const char fgClassID; 00132 }; 00133 00134 inline UnicodeFunctor::UnicodeFunctor() {} 00135 inline UnicodeFunctor::~UnicodeFunctor() {} 00136 00137 U_NAMESPACE_END 00138 00139 #endif