#pragma once
#include "JSWrapperObject.h"
#include "Symbol.h"
namespace JSC {
class SymbolObject : public JSWrapperObject {
public:
typedef JSWrapperObject Base;
static SymbolObject* create(VM& vm, Structure* structure)
{
Symbol* symbol = Symbol::create(vm);
SymbolObject* object = new (NotNull, allocateCell<SymbolObject>(vm.heap)) SymbolObject(vm, structure);
object->finishCreation(vm, symbol);
return object;
}
static SymbolObject* create(VM& vm, Structure* structure, Symbol* symbol)
{
SymbolObject* object = new (NotNull, allocateCell<SymbolObject>(vm.heap)) SymbolObject(vm, structure);
object->finishCreation(vm, symbol);
return object;
}
static SymbolObject* create(VM&, JSGlobalObject*, Symbol*);
DECLARE_EXPORT_INFO;
Symbol* internalValue() const { return asSymbol(JSWrapperObject::internalValue()); }
static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
}
static JSValue defaultValue(const JSObject*, ExecState*, PreferredPrimitiveType);
static String toStringName(const JSObject*, ExecState*);
protected:
JS_EXPORT_PRIVATE void finishCreation(VM&, Symbol*);
JS_EXPORT_PRIVATE SymbolObject(VM&, Structure*);
};
}