Files
hot-step-cpp-ROCm/engine/vendor/vst3sdk/vstgui4/vstgui/uidescription-scripting/detail/viewscriptobject.h
T
2026-08-16 18:24:52 +07:00

52 lines
1.6 KiB
C++

// This file is part of VSTGUI. It is subject to the license terms
// in the LICENSE file found in the top-level directory of this
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
#pragma once
#include "scriptobject.h"
#include "../../lib/vstguifwd.h"
#include "../../uidescription/iuidescription.h"
#include <unordered_map>
//------------------------------------------------------------------------
namespace VSTGUI {
namespace ScriptingInternal {
struct IViewScriptObjectContext;
//------------------------------------------------------------------------
struct ViewScriptObject : ScriptObject,
TJS::IScriptVarLifeTimeObserver
{
ViewScriptObject (CView* view, IViewScriptObjectContext* context);
~ViewScriptObject () noexcept;
IViewScriptObjectContext* getContext () const { return context; }
void onDestroy (CScriptVar* v) override;
private:
CView* view {nullptr};
IViewScriptObjectContext* context {nullptr};
};
using ViewScriptMap = std::unordered_map<CView*, std::unique_ptr<ViewScriptObject>>;
//------------------------------------------------------------------------
struct IViewScriptObjectContext
{
virtual ~IViewScriptObjectContext () = default;
virtual IUIDescription* getUIDescription () const = 0;
virtual ViewScriptObject* addView (CView* view) = 0;
virtual ViewScriptMap::iterator removeView (CView* view) = 0;
virtual ScriptObject evalScript (std::string_view script) noexcept = 0;
virtual TJS::CScriptVar* getRoot () const = 0;
};
//------------------------------------------------------------------------
} // ScriptingInternal
} // VSTGUI