00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef UNITOHEX_H
00010 #define UNITOHEX_H
00011
00012 #include "unicode/utypes.h"
00013
00014 #if !UCONFIG_NO_TRANSLITERATION
00015
00016 #include "unicode/translit.h"
00017
00018 #ifdef ICU_UNICODETOHEXTRANSLITERATOR_USE_DEPRECATES
00019 #include "unicode/unistr.h"
00020
00021 U_NAMESPACE_BEGIN
00022
00023 class UnicodeFilter;
00024
00046 class U_I18N_API UnicodeToHexTransliterator : public Transliterator {
00047
00048 private:
00049
00050
00051 enum {
00052 ZERO = 0x0030,
00053 POUND = 0x0023,
00054 BACKSLASH = 0x005C
00055 };
00056
00057 static const UChar HEX_DIGITS[32];
00058
00062 static const char _ID[];
00063
00067 UnicodeString pattern;
00068
00072 UnicodeString prefix;
00073
00077 UnicodeString suffix;
00078
00083 int8_t minDigits;
00084
00089 UBool uppercase;
00090
00095 static const char fgClassID;
00096
00097 public:
00098
00111 UnicodeToHexTransliterator(const UnicodeString& pattern,
00112 UBool isUppercase,
00113 UnicodeFilter* adoptedFilter,
00114 UErrorCode& status);
00115
00124 UnicodeToHexTransliterator(const UnicodeString& pattern,
00125 UErrorCode& status);
00126
00132 UnicodeToHexTransliterator(UnicodeFilter* adoptedFilter = 0);
00133
00138 virtual ~UnicodeToHexTransliterator();
00139
00144 UnicodeToHexTransliterator(const UnicodeToHexTransliterator&);
00145
00150 UnicodeToHexTransliterator& operator=(const UnicodeToHexTransliterator&);
00151
00156 virtual Transliterator* clone(void) const;
00157
00185 void applyPattern(const UnicodeString& thePattern, UErrorCode& status);
00186
00191 const UnicodeString& toPattern(void) const;
00192
00197 virtual UBool isUppercase(void) const;
00198
00203 virtual void setUppercase(UBool outputUppercase);
00204
00209 virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00210 UBool isIncremental) const;
00211
00217 virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
00218
00224 static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
00225 };
00226
00227 inline UnicodeToHexTransliterator::~UnicodeToHexTransliterator() {}
00228
00229 U_NAMESPACE_END
00230 #endif
00231
00232 #endif
00233
00234 #endif