1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // © 2016 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- /*
- **********************************************************************
- * Copyright (C) 2013, International Business Machines
- * Corporation and others. All Rights Reserved.
- **********************************************************************
- *
- * scriptset.h
- *
- * created on: 2013 Jan 7
- * created by: Andy Heninger
- */
- #ifndef __SCRIPTSET_H__
- #define __SCRIPTSET_H__
- #include "unicode/utypes.h"
- #include "unicode/uobject.h"
- #include "unicode/uscript.h"
- #include "uelement.h"
- U_NAMESPACE_BEGIN
- //-------------------------------------------------------------------------------
- //
- // ScriptSet - A bit set representing a set of scripts.
- //
- // This class was originally used exclusively with script sets appearing
- // as part of the spoof check whole script confusable binary data. Its
- // use has since become more general, but the continued use to wrap
- // prebuilt binary data does constrain the design.
- //
- //-------------------------------------------------------------------------------
- class U_I18N_API ScriptSet: public UMemory {
- public:
- static constexpr int32_t SCRIPT_LIMIT = 224; // multiple of 32!
- ScriptSet();
- ScriptSet(const ScriptSet &other);
- ~ScriptSet();
- bool operator == (const ScriptSet &other) const;
- bool operator != (const ScriptSet &other) const {return !(*this == other);}
- ScriptSet & operator = (const ScriptSet &other);
- UBool test(UScriptCode script, UErrorCode &status) const;
- ScriptSet &Union(const ScriptSet &other);
- ScriptSet &set(UScriptCode script, UErrorCode &status);
- ScriptSet &reset(UScriptCode script, UErrorCode &status);
- ScriptSet &intersect(const ScriptSet &other);
- ScriptSet &intersect(UScriptCode script, UErrorCode &status);
- UBool intersects(const ScriptSet &other) const; // Sets contain at least one script in common.
- UBool contains(const ScriptSet &other) const; // All set bits in other are also set in this.
- ScriptSet &setAll();
- ScriptSet &resetAll();
- int32_t countMembers() const;
- int32_t hashCode() const;
- int32_t nextSetBit(int32_t script) const;
- UBool isEmpty() const;
- UnicodeString &displayScripts(UnicodeString &dest) const; // append script names to dest string.
- ScriptSet & parseScripts(const UnicodeString &scriptsString, UErrorCode &status); // Replaces ScriptSet contents.
- // Wraps around UScript::getScriptExtensions() and adds the corresponding scripts to this instance.
- void setScriptExtensions(UChar32 codePoint, UErrorCode& status);
- private:
- uint32_t bits[SCRIPT_LIMIT / 32];
- };
- U_NAMESPACE_END
- U_CAPI UBool U_EXPORT2
- uhash_compareScriptSet(const UElement key1, const UElement key2);
- U_CAPI int32_t U_EXPORT2
- uhash_hashScriptSet(const UElement key);
- U_CAPI void U_EXPORT2
- uhash_deleteScriptSet(void *obj);
- U_CAPI UBool U_EXPORT2
- uhash_equalsScriptSet(const UElement key1, const UElement key2);
- #endif // __SCRIPTSET_H_
|