00001 /* 00002 * Copyright (C) 1999, International Business Machines Corporation and others. All Rights Reserved. 00003 ********************************************************************** 00004 * Date Name Description 00005 * 11/17/99 aliu Creation. 00006 ********************************************************************** 00007 */ 00008 #ifndef UNIFILT_H 00009 #define UNIFILT_H 00010 00011 #include "unicode/unifunct.h" 00012 #include "unicode/unimatch.h" 00013 00014 U_NAMESPACE_BEGIN 00015 00023 #define U_ETHER ((UChar)0xFFFF) 00024 00050 class U_COMMON_API UnicodeFilter : public UnicodeFunctor, public UnicodeMatcher { 00051 00052 public: 00057 virtual ~UnicodeFilter(); 00058 00066 virtual UBool contains(UChar32 c) const = 0; 00067 00073 virtual UnicodeMatcher* toMatcher() const; 00074 00079 virtual UMatchDegree matches(const Replaceable& text, 00080 int32_t& offset, 00081 int32_t limit, 00082 UBool incremental); 00083 00088 virtual void setData(const TransliterationRuleData*) {} 00089 00095 virtual inline UClassID getDynamicClassID() const = 0; 00096 00102 static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; } 00103 00104 protected: 00105 00109 UnicodeFilter(); 00110 00111 private: 00112 00117 static const char fgClassID; 00118 }; 00119 00120 inline UnicodeFilter::UnicodeFilter() {} 00121 inline UnicodeFilter::~UnicodeFilter() {} 00122 00123 U_NAMESPACE_END 00124 00125 #endif