1 /* 2 ********************************************************************** 3 * Copyright (C) 2013, International Business Machines 4 * Corporation and others. All Rights Reserved. 5 ********************************************************************** 6 * 7 * scriptset.h 8 * 9 * created on: 2013 Jan 7 10 * created by: Andy Heninger 11 */ 12 13 #ifndef __SCRIPTSET_H__ 14 #define __SCRIPTSET_H__ 15 16 #include "unicode/utypes.h" 17 #include "unicode/uobject.h" 18 #include "unicode/uscript.h" 19 20 #include "uelement.h" 21 22 U_NAMESPACE_BEGIN 23 24 //------------------------------------------------------------------------------- 25 // 26 // ScriptSet - A bit set representing a set of scripts. 27 // 28 // This class was originally used exclusively with script sets appearing 29 // as part of the spoof check whole script confusable binary data. Its 30 // use has since become more general, but the continued use to wrap 31 // prebuilt binary data does constrain the design. 32 // 33 //------------------------------------------------------------------------------- 34 class U_I18N_API ScriptSet: public UMemory { 35 public: 36 ScriptSet(); 37 ScriptSet(const ScriptSet &other); 38 ~ScriptSet(); 39 40 UBool operator == (const ScriptSet &other) const; 41 ScriptSet & operator = (const ScriptSet &other); 42 43 UBool test(UScriptCode script, UErrorCode &status) const; 44 ScriptSet &Union(const ScriptSet &other); 45 ScriptSet &set(UScriptCode script, UErrorCode &status); 46 ScriptSet &reset(UScriptCode script, UErrorCode &status); 47 ScriptSet &intersect(const ScriptSet &other); 48 ScriptSet &intersect(UScriptCode script, UErrorCode &status); 49 UBool intersects(const ScriptSet &other) const; // Sets contain at least one script in commmon. 50 UBool contains(const ScriptSet &other) const; // All set bits in other are also set in this. 51 52 ScriptSet &setAll(); 53 ScriptSet &resetAll(); 54 int32_t countMembers() const; 55 int32_t hashCode() const; 56 int32_t nextSetBit(int32_t script) const; 57 58 UnicodeString &displayScripts(UnicodeString &dest) const; // append script names to dest string. 59 ScriptSet & parseScripts(const UnicodeString &scriptsString, UErrorCode &status); // Replaces ScriptSet contents. 60 61 private: 62 uint32_t bits[6]; 63 }; 64 65 U_NAMESPACE_END 66 67 U_CAPI UBool U_EXPORT2 68 uhash_compareScriptSet(const UElement key1, const UElement key2); 69 70 U_CAPI int32_t U_EXPORT2 71 uhash_hashScriptSet(const UElement key); 72 73 U_CAPI void U_EXPORT2 74 uhash_deleteScriptSet(void *obj); 75 76 #endif // __SCRIPTSET_H__ 77