ObjectAdapter.h 782 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include "WallpaperEngine/Data/Utils/TypeCaster.h"
  3. #include "quickjs.h"
  4. namespace WallpaperEngine::Data::Model {
  5. class DynamicValue;
  6. }
  7. namespace WallpaperEngine::Scripting {
  8. class ScriptEngine;
  9. class ScriptableObject;
  10. }
  11. namespace WallpaperEngine::Scripting::Adapters {
  12. class ObjectAdapter : public Data::Utils::TypeCaster {
  13. public:
  14. explicit ObjectAdapter (ScriptEngine& engine);
  15. ~ObjectAdapter () override = default;
  16. virtual JSValue instantiate (ScriptableObject& object);
  17. virtual JSValue instantiate (Data::Model::DynamicValue& value);
  18. ScriptEngine& getEngine () const { return m_engine; }
  19. protected:
  20. void registerType (const JSClassDef& definition);
  21. ScriptEngine& m_engine;
  22. JSClassID m_classId;
  23. JSClassDef m_definition;
  24. };
  25. }