Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Header Files   Compound Members   File Members  

uniset.h

This is the verbatim text of the uniset.h include file.
/*
**********************************************************************
* Copyright © {1999}, International Business Machines Corporation and others. All Rights Reserved.
**********************************************************************
*   Date        Name        Description
*   10/20/99    alan        Creation.
**********************************************************************
*/

#ifndef UNICODESET_H
#define UNICODESET_H

#include "unicode/unifilt.h"
#include "unicode/utypes.h"
#include "unicode/unistr.h"

class ParsePosition;
class TransliterationRuleData;
class TransliterationRuleParser;
class TransliterationRule;

class U_I18N_API UnicodeSet : public UnicodeFilter {

    UnicodeString pairs;

    static const UnicodeString CATEGORY_NAMES;

    static UnicodeString* CATEGORY_PAIRS_CACHE;

    static const UnicodeString CATEGORY_CLOSE;

    static const UChar VARIABLE_REF_OPEN;
    
    static const UChar VARIABLE_REF_CLOSE;

    //----------------------------------------------------------------
    // Debugging and testing
    //----------------------------------------------------------------

public:

    const UnicodeString& getPairs(void) const;

    //----------------------------------------------------------------
    // Constructors &c
    //----------------------------------------------------------------

public:

    UnicodeSet();

    UnicodeSet(const UnicodeString& pattern,
               UErrorCode& status);

    UnicodeSet(int8_t category, UErrorCode& status);

    UnicodeSet(const UnicodeSet& o);

    virtual ~UnicodeSet();

    UnicodeSet& operator=(const UnicodeSet& o);

    virtual bool_t operator==(const UnicodeSet& o) const;

    bool_t operator!=(const UnicodeSet& o) const;

    virtual UnicodeFilter* clone() const;

    virtual int32_t hashCode(void) const;

    //----------------------------------------------------------------
    // Public API
    //----------------------------------------------------------------

    virtual void applyPattern(const UnicodeString& pattern,
                              UErrorCode& status);

    virtual UnicodeString& toPattern(UnicodeString& result) const;

    virtual int32_t size(void) const;

    virtual bool_t isEmpty(void) const;

    virtual bool_t contains(UChar first, UChar last) const;

    virtual bool_t contains(UChar c) const;

    virtual void add(UChar first, UChar last);

    virtual void add(UChar c);

    virtual void remove(UChar first, UChar last);

    virtual void remove(UChar c);

    virtual bool_t containsAll(const UnicodeSet& c) const;

    virtual void addAll(const UnicodeSet& c);

    virtual void retainAll(const UnicodeSet& c);

    virtual void removeAll(const UnicodeSet& c);

    virtual void complement(void);

    virtual void clear(void);

private:

    //----------------------------------------------------------------
    // RuleBasedTransliterator support
    //----------------------------------------------------------------

    friend class TransliterationRuleParser;
    friend class TransliterationRule;

    UnicodeSet(const UnicodeString& pattern, ParsePosition& pos,
               const TransliterationRuleData* data,
               UErrorCode& status);

    bool_t containsIndexValue(uint8_t v) const;

private:

    //----------------------------------------------------------------
    // Implementation: Pattern parsing
    //----------------------------------------------------------------

    static UnicodeString& parse(UnicodeString& pairsBuf /*result*/,
                                const UnicodeString& pattern,
                                ParsePosition& pos,
                                const TransliterationRuleData* data,
                                UErrorCode& status);

    //----------------------------------------------------------------
    // Implementation: Efficient in-place union & difference
    //----------------------------------------------------------------

    static void addPair(UnicodeString& pairs, UChar c, UChar d);

    static void removePair(UnicodeString& pairs, UChar c, UChar d);

    //----------------------------------------------------------------
    // Implementation: Fundamental operators
    //----------------------------------------------------------------

    static void doComplement(UnicodeString& pairs);

    static void doUnion(UnicodeString& pairs, const UnicodeString& c2);

    static void doDifference(UnicodeString& pairs, const UnicodeString& pairs2);

    static void doIntersection(UnicodeString& pairs, const UnicodeString& c2);

    //----------------------------------------------------------------
    // Implementation: Generation of pairs for Unicode categories
    //----------------------------------------------------------------

    static UnicodeString& getCategoryPairs(UnicodeString& result,
                                           const UnicodeString& catName,
                                           UErrorCode& status);

    static const UnicodeString& getCategoryPairs(int8_t cat);

    //----------------------------------------------------------------
    // Implementation: Utility methods
    //----------------------------------------------------------------

    static UChar charAfter(const UnicodeString& str, int32_t i);
};

inline bool_t UnicodeSet::operator!=(const UnicodeSet& o) const {
        return !operator==(o);
}

#endif

Generated at Thu Feb 10 15:31:16 2000 for icu by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999