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 00072 virtual UnicodeMatcher* toMatcher() const; 00073 00077 UnicodeString& toPattern(UnicodeString& result, 00078 UBool escapeUnprintable) const; 00079 00083 UBool matchesIndexValue(uint8_t v) const; 00084 00088 virtual UMatchDegree matches(const Replaceable& text, 00089 int32_t& offset, 00090 int32_t limit, 00091 UBool incremental); 00092 00096 virtual void setData(const TransliterationRuleData*) {} 00097 00103 virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); } 00104 00110 static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; } 00111 00117 virtual void addMatchSetTo(UnicodeSet& toUnionTo) const; 00118 00119 protected: 00120 00121 UnicodeFilter(); 00122 00123 private: 00124 00129 static const char fgClassID; 00130 }; 00131 00132 inline UnicodeFilter::UnicodeFilter() {} 00133 inline UnicodeFilter::~UnicodeFilter() {} 00134 00135 U_NAMESPACE_END 00136 00137 #endif