00001 /****************************************************************************** 00002 * Copyright © {1996-1999}, International Business Machines Corporation and others. All Rights Reserved. 00003 ****************************************************************************** 00004 * Created by: Mark Davis, Helena Shih 00005 * 00006 * Modification History: 00007 * Date Name Description 00008 * 00009 * 8/18/97 helena Added internal API documentation. 00010 * 8/14/98 erm Synched with 1.2 version of PatternEntry.java 00011 * 04/23/99 stephen Removed EDecompositionMode, merged with 00012 * Normalizer::EMode 00013 */ 00014 00015 #ifndef PTNENTRY_H 00016 #define PTNENTRY_H 00017 00018 #include "unicode/utypes.h" 00019 #include "unicode/unistr.h" 00020 #include "unicode/coll.h" 00021 #include "unicode/normlzr.h" 00022 00023 /* forward declarations */ 00024 class MergeCollation; 00025 class PointerToPatternEntry; 00026 class VectorOfPointersToPatternEntry; 00027 00034 class PatternEntry 00035 { 00036 00037 friend class MergeCollation; 00038 friend class PointerToPatternEntry; 00039 friend class VectorOfPointersToPatternEntry; 00040 00041 public: 00042 00047 void appendQuotedExtension(UnicodeString& toAddTo) const; 00048 00052 void appendQuotedChars(UnicodeString& toAddTo) const; 00053 00059 UBool equals(const PatternEntry& other) const; 00060 00066 int32_t getStrength(void) const; 00067 00073 const UnicodeString& getExtension(UnicodeString& ext) const; 00074 00080 const UnicodeString& getChars(UnicodeString& chars) const; 00081 00087 class Parser 00088 { 00089 public: 00090 Parser(const UnicodeString &patternStr, Normalizer::EMode decompMode); 00091 00092 Parser(const Parser &that); 00093 00094 Parser &operator=(const Parser &that); 00095 00096 ~Parser(); 00097 00098 PatternEntry *next(UErrorCode &status); 00099 00100 private: 00101 UnicodeString pattern; 00102 int32_t index; 00103 Normalizer::EMode fDecompMode; 00104 00105 UnicodeString newChars; 00106 UnicodeString newExtensions; 00107 }; 00108 00109 friend class Parser; 00110 00111 00115 UnicodeString& toString(UnicodeString&) const; 00116 00117 private: 00118 00121 PatternEntry(); 00122 00126 PatternEntry(int32_t strength, 00127 const UnicodeString& chars, 00128 const UnicodeString& extension, 00129 Normalizer::EMode decompMode); 00133 PatternEntry(const PatternEntry& other); 00137 ~PatternEntry(); 00138 00141 const PatternEntry& operator=(const PatternEntry& other); 00142 00151 void addToBuffer(UnicodeString& toAddTo, 00152 UBool showExtension, 00153 UBool showWhiteSpace, 00154 const PatternEntry* lastEntry) const; 00155 00161 static void appendQuoted(const UnicodeString& chars, UnicodeString& toAddTo); 00162 00176 static UBool isSpecialChar(UChar ch); 00177 00178 int32_t strength; 00179 UnicodeString chars; 00180 UnicodeString extension; 00181 00182 static const int32_t RESET; 00183 static const int32_t UNSET; 00184 }; 00185 00186 00187 #endif // _PTNENTRY