Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

uniset.h

00001 /* 00002 ********************************************************************** 00003 * Copyright (C) 1999, International Business Machines Corporation and others. All Rights Reserved. 00004 ********************************************************************** 00005 * Date Name Description 00006 * 10/20/99 alan Creation. 00007 ********************************************************************** 00008 */ 00009 00010 #ifndef UNICODESET_H 00011 #define UNICODESET_H 00012 00013 #include "unicode/unifilt.h" 00014 #include "unicode/utypes.h" 00015 #include "unicode/unistr.h" 00016 00017 U_NAMESPACE_BEGIN 00018 00019 class ParsePosition; 00020 class SymbolTable; 00021 class TransliterationRuleParser; 00022 class TransliterationRule; 00023 class Transliterator; 00024 class TransliteratorParser; 00025 00217 class U_I18N_API UnicodeSet : public UnicodeFilter { 00218 00219 int32_t len; // length of list used; 0 <= len <= capacity 00220 int32_t capacity; // capacity of list 00221 int32_t bufferCapacity; // capacity of buffer 00222 UChar32* list; // MUST be terminated with HIGH 00223 UChar32* buffer; // internal buffer, may be NULL 00224 00234 UnicodeString pat; 00235 00236 public: 00237 00241 static const UChar32 MIN_VALUE; 00242 00246 static const UChar32 MAX_VALUE; 00247 00248 //---------------------------------------------------------------- 00249 // Constructors &c 00250 //---------------------------------------------------------------- 00251 00252 public: 00253 00258 UnicodeSet(); 00259 00267 UnicodeSet(UChar32 start, UChar32 end); 00268 00277 UnicodeSet(const UnicodeString& pattern, 00278 UErrorCode& status); 00279 00286 UnicodeSet(int8_t category, UErrorCode& status); 00287 00292 UnicodeSet(const UnicodeSet& o); 00293 00298 virtual ~UnicodeSet(); 00299 00304 UnicodeSet& operator=(const UnicodeSet& o); 00305 00317 virtual UBool operator==(const UnicodeSet& o) const; 00318 00324 UBool operator!=(const UnicodeSet& o) const; 00325 00332 virtual UnicodeFunctor* clone() const; 00333 00341 virtual int32_t hashCode(void) const; 00342 00343 //---------------------------------------------------------------- 00344 // Public API 00345 //---------------------------------------------------------------- 00346 00355 void set(UChar32 start, UChar32 end); 00356 00361 static UBool resemblesPattern(const UnicodeString& pattern, 00362 int32_t pos); 00363 00373 virtual void applyPattern(const UnicodeString& pattern, 00374 UErrorCode& status); 00375 00388 virtual UnicodeString& toPattern(UnicodeString& result, 00389 UBool escapeUnprintable = FALSE) const; 00390 00398 virtual int32_t size(void) const; 00399 00406 virtual UBool isEmpty(void) const; 00407 00416 virtual UBool contains(UChar32 start, UChar32 end) const; 00417 00424 virtual UBool contains(UChar32 c) const; 00425 00429 UMatchDegree matches(const Replaceable& text, 00430 int32_t& offset, 00431 int32_t limit, 00432 UBool incremental); 00433 00441 int32_t indexOf(UChar32 c) const; 00442 00451 UChar32 charAt(int32_t index) const; 00452 00466 virtual void add(UChar32 start, UChar32 end); 00467 00474 void add(UChar32 c); 00475 00488 virtual void retain(UChar32 start, UChar32 end); 00489 00490 00495 void retain(UChar32 c); 00496 00509 virtual void remove(UChar32 start, UChar32 end); 00510 00517 void remove(UChar32 c); 00518 00525 virtual void complement(void); 00526 00540 virtual void complement(UChar32 start, UChar32 end); 00541 00542 00549 void complement(UChar32 c); 00550 00560 virtual UBool containsAll(const UnicodeSet& c) const; 00561 00562 private: 00563 friend class NormalizationTransliterator; 00564 // TODO: Make this public 00568 UBool containsAll(const UnicodeString& s) const; 00569 00570 public: 00571 00583 virtual void addAll(const UnicodeSet& c); 00584 00595 virtual void retainAll(const UnicodeSet& c); 00596 00607 virtual void removeAll(const UnicodeSet& c); 00608 00617 virtual void complementAll(const UnicodeSet& c); 00618 00624 virtual void clear(void); 00625 00632 virtual int32_t getRangeCount(void) const; 00633 00640 virtual UChar32 getRangeStart(int32_t index) const; 00641 00648 virtual UChar32 getRangeEnd(int32_t index) const; 00649 00654 virtual void compact(); 00655 00667 static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; } 00668 00676 virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }; 00677 00678 private: 00679 00680 static const char fgClassID; 00681 00682 private: 00683 00684 //---------------------------------------------------------------- 00685 // RuleBasedTransliterator support 00686 //---------------------------------------------------------------- 00687 00688 friend class Transliterator; 00689 friend class TransliteratorParser; 00690 friend class TransliteratorIDParser; 00691 friend class TransliterationRule; 00692 00711 UnicodeSet(const UnicodeString& pattern, ParsePosition& pos, 00712 const SymbolTable& symbols, 00713 UErrorCode& status); 00714 00720 UnicodeSet(const UnicodeString& pattern, ParsePosition& pos, 00721 UErrorCode& status); 00722 00728 virtual UBool matchesIndexValue(uint8_t v) const; 00729 00730 private: 00731 00732 //---------------------------------------------------------------- 00733 // Implementation: Pattern parsing 00734 //---------------------------------------------------------------- 00735 00760 void applyPattern(const UnicodeString& pattern, 00761 ParsePosition& pos, 00762 const SymbolTable* symbols, 00763 UErrorCode& status); 00764 00765 //---------------------------------------------------------------- 00766 // Implementation: Utility methods 00767 //---------------------------------------------------------------- 00768 00769 void ensureCapacity(int32_t newLen); 00770 00771 void ensureBufferCapacity(int32_t newLen); 00772 00773 void swapBuffers(void); 00774 00775 void _applyPattern(const UnicodeString& pattern, 00776 ParsePosition& pos, 00777 const SymbolTable* symbols, 00778 UnicodeString& rebuiltPat, 00779 UErrorCode& status); 00780 00781 UnicodeString& _toPattern(UnicodeString& result, 00782 UBool escapeUnprintable) const; 00783 00784 UnicodeString& _generatePattern(UnicodeString& result, 00785 UBool escapeUnprintable) const; 00786 00787 static void _appendToPat(UnicodeString& buf, UChar32 c, UBool escapeUnprintable); 00788 00789 //---------------------------------------------------------------- 00790 // Implementation: Fundamental operators 00791 //---------------------------------------------------------------- 00792 00793 void exclusiveOr(const UChar32* other, int32_t otherLen, int8_t polarity); 00794 00795 void add(const UChar32* other, int32_t otherLen, int8_t polarity); 00796 00797 void retain(const UChar32* other, int32_t otherLen, int8_t polarity); 00798 }; 00799 00800 inline UBool UnicodeSet::operator!=(const UnicodeSet& o) const { 00801 return !operator==(o); 00802 } 00803 00804 U_NAMESPACE_END 00805 00806 #endif

Generated on Fri Aug 13 09:53:50 2004 for ICU 2.1 by doxygen 1.3.7