00001 /* 00002 ********************************************************************** 00003 * Copyright © {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 class UnicodeFilter; 00016 00037 class U_I18N_API UnicodeToHexTransliterator : public Transliterator { 00038 00039 private: 00040 00041 // Character constants defined here to avoid ASCII dependency 00042 enum { 00043 ZERO = 0x0030, // '0' 00044 POUND = 0x0023, // '#' 00045 BACKSLASH = 0x005C // '\\' 00046 }; 00047 00048 static const UChar HEX_DIGITS[32]; 00049 00053 static const char* _ID; 00054 00058 UnicodeString pattern; 00059 00063 UnicodeString prefix; 00064 00068 UnicodeString suffix; 00069 00074 int8_t minDigits; 00075 00080 UBool uppercase; 00081 00082 public: 00083 00096 UnicodeToHexTransliterator(const UnicodeString& pattern, 00097 UBool isUppercase, 00098 UnicodeFilter* adoptedFilter, 00099 UErrorCode& status); 00100 00108 UnicodeToHexTransliterator(const UnicodeString& pattern, 00109 UErrorCode& status); 00110 00116 UnicodeToHexTransliterator(UnicodeFilter* adoptedFilter = 0); 00117 00122 virtual ~UnicodeToHexTransliterator(); 00123 00128 UnicodeToHexTransliterator(const UnicodeToHexTransliterator&); 00129 00134 UnicodeToHexTransliterator& operator=(const UnicodeToHexTransliterator&); 00135 00140 virtual Transliterator* clone(void) const; 00141 00169 void applyPattern(const UnicodeString& thePattern, UErrorCode& status); 00170 00175 const UnicodeString& toPattern(void) const; 00176 00181 virtual UBool isUppercase(void) const; 00182 00187 virtual void setUppercase(UBool outputUppercase); 00188 00193 virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets, 00194 UBool isIncremental) const; 00195 }; 00196 00197 inline UnicodeToHexTransliterator::~UnicodeToHexTransliterator() {} 00198 00199 #endif