#ifndef EnumerationMode_h
#define EnumerationMode_h
namespace JSC {
enum class DontEnumPropertiesMode {
Include,
Exclude
};
enum class SymbolPropertiesMode {
Include,
Exclude
};
enum class JSObjectPropertiesMode {
Include,
Exclude
};
class EnumerationMode {
public:
EnumerationMode(DontEnumPropertiesMode dontEnumPropertiesMode = DontEnumPropertiesMode::Exclude, SymbolPropertiesMode symbolPropertiesMode = SymbolPropertiesMode::Exclude, JSObjectPropertiesMode jsObjectPropertiesMode = JSObjectPropertiesMode::Include)
: m_dontEnumPropertiesMode(dontEnumPropertiesMode)
, m_symbolPropertiesMode(symbolPropertiesMode)
, m_jsObjectPropertiesMode(jsObjectPropertiesMode)
{
}
EnumerationMode(const EnumerationMode& mode, JSObjectPropertiesMode jsObjectPropertiesMode)
: m_dontEnumPropertiesMode(mode.m_dontEnumPropertiesMode)
, m_symbolPropertiesMode(mode.m_symbolPropertiesMode)
, m_jsObjectPropertiesMode(jsObjectPropertiesMode)
{
}
bool includeDontEnumProperties()
{
return m_dontEnumPropertiesMode == DontEnumPropertiesMode::Include;
}
bool includeSymbolProperties()
{
return m_symbolPropertiesMode == SymbolPropertiesMode::Include;
}
bool includeJSObjectProperties()
{
return m_jsObjectPropertiesMode == JSObjectPropertiesMode::Include;
}
private:
DontEnumPropertiesMode m_dontEnumPropertiesMode;
SymbolPropertiesMode m_symbolPropertiesMode;
JSObjectPropertiesMode m_jsObjectPropertiesMode;
};
}
#endif // EnumerationMode_h