00001 /* 00002 ********************************************************************** 00003 * Copyright (C) 1999, International Business Machines Corporation and others. All Rights Reserved. 00004 ********************************************************************** 00005 * Date Name Description 00006 * 11/17/99 aliu Creation. 00007 ********************************************************************** 00008 */ 00009 #ifndef UNITOHEX_H 00010 #define UNITOHEX_H 00011 00012 #include "unicode/translit.h" 00013 #include "unicode/unistr.h" 00014 00015 U_NAMESPACE_BEGIN 00016 00017 class UnicodeFilter; 00018 00040 class U_I18N_API UnicodeToHexTransliterator : public Transliterator { 00041 00042 private: 00043 00044 // Character constants defined here to avoid ASCII dependency 00045 enum { 00046 ZERO = 0x0030, // '0' 00047 POUND = 0x0023, // '#' 00048 BACKSLASH = 0x005C // '\\' 00049 }; 00050 00051 static const UChar HEX_DIGITS[32]; 00052 00056 static const char _ID[]; 00057 00061 UnicodeString pattern; 00062 00066 UnicodeString prefix; 00067 00071 UnicodeString suffix; 00072 00077 int8_t minDigits; 00078 00083 UBool uppercase; 00084 00089 static const char fgClassID; 00090 00091 public: 00092 00105 UnicodeToHexTransliterator(const UnicodeString& pattern, 00106 UBool isUppercase, 00107 UnicodeFilter* adoptedFilter, 00108 UErrorCode& status); 00109 00118 UnicodeToHexTransliterator(const UnicodeString& pattern, 00119 UErrorCode& status); 00120 00126 UnicodeToHexTransliterator(UnicodeFilter* adoptedFilter = 0); 00127 00132 virtual ~UnicodeToHexTransliterator(); 00133 00138 UnicodeToHexTransliterator(const UnicodeToHexTransliterator&); 00139 00144 UnicodeToHexTransliterator& operator=(const UnicodeToHexTransliterator&); 00145 00150 virtual Transliterator* clone(void) const; 00151 00179 void applyPattern(const UnicodeString& thePattern, UErrorCode& status); 00180 00185 const UnicodeString& toPattern(void) const; 00186 00191 virtual UBool isUppercase(void) const; 00192 00197 virtual void setUppercase(UBool outputUppercase); 00198 00203 virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets, 00204 UBool isIncremental) const; 00205 00211 virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); } 00212 00218 static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; } 00219 }; 00220 00221 inline UnicodeToHexTransliterator::~UnicodeToHexTransliterator() {} 00222 00223 U_NAMESPACE_END 00224 00225 #endif