/* * Copyright (c) 2020, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace JS { class SymbolObject : public Object { JS_OBJECT(SymbolObject, Object); public: static SymbolObject* create(GlobalObject&, Symbol&); SymbolObject(Symbol&, Object& prototype); virtual ~SymbolObject() override; Symbol& primitive_symbol() { return m_symbol; } const Symbol& primitive_symbol() const { return m_symbol; } const String& description() const { return m_symbol.description(); } bool is_global() const { return m_symbol.is_global(); } virtual Value value_of() const override { return Value(&m_symbol); } private: virtual void visit_edges(Visitor&) override; Symbol& m_symbol; }; }