#pragma once namespace a8 { class MutableXObject : public XObject { protected: MutableXObject(); public: static a8::MutableXObject* NewObject(); static a8::MutableXObject* NewArray(); static std::shared_ptr CreateObject(); static std::shared_ptr CreateArray(); a8::MutableXObject& Push(a8::XValue val); a8::MutableXObject& Push(a8::MutableXObject& val); a8::MutableXObject& SetVal(const std::string& key, a8::XValue val); a8::MutableXObject& SetVal(const std::string& key, a8::XObject& val); a8::MutableXObject& SetVal(const std::string& key, a8::MutableXObject& val); }; }