Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
QuickJSRuntime.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/script_core/lifetime_registry/scripting/TypedObjectHandle.h"
7#include "mc/deps/script_core/reflection/scripting/Privilege.h"
8#include "mc/deps/script_core/runtime/scripting/FutureStatus.h"
9#include "mc/deps/script_core/runtime/scripting/Result_deprecated.h"
10#include "mc/deps/script_core/runtime/scripting/StringBasedRuntime.h"
11
12// auto generated forward declare list
13// clang-format off
14struct JSContext;
15struct JSModuleDef;
16namespace Scripting { class DependencyLocator; }
17namespace Scripting { class IBreakpointValidator; }
18namespace Scripting { class IDebuggerController; }
19namespace Scripting { class IDebuggerTransport; }
20namespace Scripting { class IDependencyLoader; }
21namespace Scripting { class IPrinter; }
22namespace Scripting { class IWatchdog; }
23namespace Scripting { class RegistryManager; }
24namespace Scripting { class ResultAny; }
25namespace Scripting { class ScriptContext; }
26namespace Scripting { struct ClosureType; }
27namespace Scripting { struct CoRoutineResult; }
28namespace Scripting { struct ContextConfig; }
29namespace Scripting { struct ContextId; }
30namespace Scripting { struct FutureType; }
31namespace Scripting { struct IRuntimeMetadata; }
32namespace Scripting { struct ModuleBindingBundle; }
33namespace Scripting { struct PromiseType; }
34namespace Scripting { struct RuntimeStats; }
35namespace Scripting { struct TypeNameInfo; }
36namespace Scripting { struct WatchdogSettings; }
37namespace Scripting::QuickJS { struct MallocFunctions; }
38// clang-format on
39
40namespace Scripting::QuickJS {
41
42class QuickJSRuntime : public ::Scripting::StringBasedRuntime,
43 public ::std::enable_shared_from_this<::Scripting::QuickJS::QuickJSRuntime> {
44public:
45 // member variables
46 // NOLINTBEGIN
59 // NOLINTEND
60
61public:
62 // prevent constructor by default
63 QuickJSRuntime& operator=(QuickJSRuntime const&);
64 QuickJSRuntime(QuickJSRuntime const&);
65 QuickJSRuntime();
66
67public:
68 // virtual functions
69 // NOLINTBEGIN
70 virtual ~QuickJSRuntime() /*override*/ = default;
71
72 virtual ::Scripting::IRuntimeMetadata* getMetadata() const /*override*/;
73
74 virtual void moveToThread() /*override*/;
75
76 virtual ::std::optional<::Scripting::ScriptContext> createContext(
79 ::Scripting::IPrinter* printer,
80 ::Scripting::ContextConfig const& config
81 ) /*override*/;
82
83 virtual void destroyContext(::Scripting::ContextId contextId) /*override*/;
84
85 virtual ::Scripting::ResultAny runString(
86 ::Scripting::ContextId contextId,
87 ::std::string const& scriptName,
88 ::std::string const& scriptData,
89 ::std::optional<::Scripting::Privilege> privilege
90 ) /*override*/;
91
92 virtual ::Scripting::ResultAny call(
93 ::Scripting::ContextId contextId,
95 ::entt::meta_any* args,
96 uint argc,
97 ::entt::meta_type const& expectedReturnType,
98 ::std::optional<::Scripting::Privilege> privilege
99 ) /*override*/;
100
101 virtual ::Scripting::ResultAny resolve(
102 ::Scripting::ContextId contextId,
104 ::entt::meta_any& arg
105 ) /*override*/;
106
107 virtual ::Scripting::ResultAny reject(
108 ::Scripting::ContextId contextId,
110 ::entt::meta_any& arg
111 ) /*override*/;
112
113 virtual ::Scripting::FutureStatus getFutureStatus(
114 ::Scripting::ContextId contextId,
116 ) const /*override*/;
117
118 virtual ::Scripting::ResultAny getFutureResult(
119 ::Scripting::ContextId contextId,
121 ::entt::meta_type const& expectedResultType
122 ) const /*override*/;
123
124 virtual ::Scripting::Result_deprecated<::Scripting::CoRoutineResult>
125 executeCoroutines(::std::optional<::Scripting::Privilege> privilege) /*override*/;
126
127 virtual bool hasPendingJobs() /*override*/;
128
129 virtual ::Scripting::IDebuggerController* enableDebugger(
132 ) /*override*/;
133
134 virtual void disableDebugger() /*override*/;
135
136 virtual void startProfiler() /*override*/;
137
138 virtual void stopProfiler(
139 ::std::function<void(::std::string_view)> captureCb,
140 ::std::optional<::std::reference_wrapper<::std::string const>> savePathOpt
141 ) /*override*/;
142
143 virtual ::Scripting::RuntimeStats computeRuntimeStats() const /*override*/;
144
145 virtual ::std::optional<::Scripting::TypeNameInfo>
146 getNameForType(::Scripting::ContextId contextId, ::entt::meta_type const& type, bool allowUnknownTypes) const
147 /*override*/;
148
149 virtual ::Scripting::IWatchdog* enableWatchdog(::Scripting::WatchdogSettings settings) /*override*/;
150
151 virtual void disableWatchdog() /*override*/;
152
153 virtual ::Scripting::IWatchdog* getWatchdog() const /*override*/;
154 // NOLINTEND
155
156public:
157 // member functions
158 // NOLINTBEGIN
160 ::Scripting::RegistryManager& registryManager,
161 ::std::unique_ptr<::Scripting::IRuntimeMetadata> metadata,
163 ::std::unique_ptr<::Scripting::QuickJS::MallocFunctions> mallocFns,
164 ::std::function<
165 ::std::string(::std::string_view const&, ::std::string const&, ::std::vector<::std::string> const&)>
166 normalizerFn
167 );
168 // NOLINTEND
169
170public:
171 // static functions
172 // NOLINTBEGIN
173 MCNAPI static int
174 _moduleImportAllowed(::JSContext* ctx, char const* baseName, char const* moduleName, void* opaque);
175
176 MCNAPI static ::JSModuleDef* _moduleLoader(::JSContext* ctx, char const* moduleName, void* opaque);
177
178 MCNAPI static char*
179 _moduleNameNormalizer(::JSContext* ctx, char const* baseName, char const* moduleName, void* opaque);
180
181 MCNAPI static void _onProfilerCapture(void* opaque, char const* capture);
182 // NOLINTEND
183
184public:
185 // constructor thunks
186 // NOLINTBEGIN
187 MCNAPI void* $ctor(
188 ::Scripting::RegistryManager& registryManager,
189 ::std::unique_ptr<::Scripting::IRuntimeMetadata> metadata,
191 ::std::unique_ptr<::Scripting::QuickJS::MallocFunctions> mallocFns,
192 ::std::function<
193 ::std::string(::std::string_view const&, ::std::string const&, ::std::vector<::std::string> const&)>
194 normalizerFn
195 );
196 // NOLINTEND
197
198public:
199 // virtual function thunks
200 // NOLINTBEGIN
201 MCNAPI ::Scripting::IRuntimeMetadata* $getMetadata() const;
202
203 MCNAPI void $moveToThread();
204
205 MCNAPI ::std::optional<::Scripting::ScriptContext> $createContext(
208 ::Scripting::IPrinter* printer,
209 ::Scripting::ContextConfig const& config
210 );
211
213
214 MCNAPI ::Scripting::ResultAny $runString(
215 ::Scripting::ContextId contextId,
216 ::std::string const& scriptName,
217 ::std::string const& scriptData,
218 ::std::optional<::Scripting::Privilege> privilege
219 );
220
221 MCNAPI ::Scripting::ResultAny $call(
222 ::Scripting::ContextId contextId,
224 ::entt::meta_any* args,
225 uint argc,
226 ::entt::meta_type const& expectedReturnType,
227 ::std::optional<::Scripting::Privilege> privilege
228 );
229
230 MCNAPI ::Scripting::ResultAny $resolve(
231 ::Scripting::ContextId contextId,
233 ::entt::meta_any& arg
234 );
235
236 MCNAPI ::Scripting::ResultAny $reject(
237 ::Scripting::ContextId contextId,
239 ::entt::meta_any& arg
240 );
241
242 MCNAPI ::Scripting::FutureStatus $getFutureStatus(
243 ::Scripting::ContextId contextId,
245 ) const;
246
247 MCNAPI ::Scripting::ResultAny $getFutureResult(
248 ::Scripting::ContextId contextId,
250 ::entt::meta_type const& expectedResultType
251 ) const;
252
253 MCNAPI ::Scripting::Result_deprecated<::Scripting::CoRoutineResult>
254 $executeCoroutines(::std::optional<::Scripting::Privilege> privilege);
255
256 MCNAPI bool $hasPendingJobs();
257
258 MCNAPI ::Scripting::IDebuggerController*
260
261 MCNAPI void $disableDebugger();
262
263 MCNAPI void $startProfiler();
264
265 MCNAPI void $stopProfiler(
266 ::std::function<void(::std::string_view)> captureCb,
267 ::std::optional<::std::reference_wrapper<::std::string const>> savePathOpt
268 );
269
270 MCNAPI ::Scripting::RuntimeStats $computeRuntimeStats() const;
271
272 MCNAPI ::std::optional<::Scripting::TypeNameInfo>
273 $getNameForType(::Scripting::ContextId contextId, ::entt::meta_type const& type, bool allowUnknownTypes) const;
274
275 MCNAPI ::Scripting::IWatchdog* $enableWatchdog(::Scripting::WatchdogSettings settings);
276
277 MCNAPI void $disableWatchdog();
278
279 MCNAPI ::Scripting::IWatchdog* $getWatchdog() const;
280
281
282 // NOLINTEND
283};
284
285} // namespace Scripting::QuickJS
Definition DependencyLocator.h:7
Definition IBreakpointValidator.h:7
Definition IDebuggerController.h:7
Definition IDebuggerTransport.h:7
Definition IDependencyLoader.h:12
Definition IPrinter.h:13
Definition IWatchdog.h:13
MCAPI void * $ctor(::Scripting::RegistryManager &registryManager, ::std::unique_ptr<::Scripting::IRuntimeMetadata > metadata, ::Scripting::DependencyLocator *locator, ::std::unique_ptr<::Scripting::QuickJS::MallocFunctions > mallocFns, ::std::function< ::std::string(::std::string_view const &, ::std::string const &, ::std::vector<::std::string > const &)> normalizerFn)
MCAPI::Scripting::FutureStatus $getFutureStatus(::Scripting::ContextId contextId, ::Scripting::TypedObjectHandle<::Scripting::FutureType > futureHandle) const
MCAPI::Scripting::IWatchdog * $getWatchdog() const
static MCAPI int _moduleImportAllowed(::JSContext *ctx, char const *baseName, char const *moduleName, void *opaque)
static MCAPI void _onProfilerCapture(void *opaque, char const *capture)
MCAPI QuickJSRuntime(::Scripting::RegistryManager &registryManager, ::std::unique_ptr<::Scripting::IRuntimeMetadata > metadata, ::Scripting::DependencyLocator *locator, ::std::unique_ptr<::Scripting::QuickJS::MallocFunctions > mallocFns, ::std::function< ::std::string(::std::string_view const &, ::std::string const &, ::std::vector<::std::string > const &)> normalizerFn)
static MCAPI ::JSModuleDef * _moduleLoader(::JSContext *ctx, char const *moduleName, void *opaque)
MCAPI::Scripting::IRuntimeMetadata * $getMetadata() const
MCAPI ::std::optional<::Scripting::TypeNameInfo > $getNameForType(::Scripting::ContextId contextId, ::entt::meta_type const &type, bool allowUnknownTypes) const
static MCAPI char * _moduleNameNormalizer(::JSContext *ctx, char const *baseName, char const *moduleName, void *opaque)
MCAPI void $destroyContext(::Scripting::ContextId contextId)
MCAPI ::Scripting::Result_deprecated<::Scripting::CoRoutineResult > $executeCoroutines(::std::optional<::Scripting::Privilege > privilege)
MCAPI ::std::optional<::Scripting::ScriptContext > $createContext(::Scripting::ModuleBindingBundle &&bindings, ::Scripting::IDependencyLoader *loader, ::Scripting::IPrinter *printer, ::Scripting::ContextConfig const &config)
MCAPI::Scripting::ResultAny $resolve(::Scripting::ContextId contextId, ::Scripting::TypedObjectHandle<::Scripting::PromiseType > promise, ::entt::meta_any &arg)
MCAPI::Scripting::IWatchdog * $enableWatchdog(::Scripting::WatchdogSettings settings)
MCAPI::Scripting::RuntimeStats $computeRuntimeStats() const
MCAPI::Scripting::ResultAny $runString(::Scripting::ContextId contextId, ::std::string const &scriptName, ::std::string const &scriptData, ::std::optional<::Scripting::Privilege > privilege)
MCAPI::Scripting::ResultAny $getFutureResult(::Scripting::ContextId contextId, ::Scripting::TypedObjectHandle<::Scripting::FutureType > futureHandle, ::entt::meta_type const &expectedResultType) const
MCAPI::Scripting::ResultAny $reject(::Scripting::ContextId contextId, ::Scripting::TypedObjectHandle<::Scripting::PromiseType > promise, ::entt::meta_any &arg)
MCAPI void $stopProfiler(::std::function< void(::std::string_view)> captureCb, ::std::optional<::std::reference_wrapper<::std::string const > > savePathOpt)
MCAPI::Scripting::ResultAny $call(::Scripting::ContextId contextId, ::Scripting::TypedObjectHandle<::Scripting::ClosureType > closureHandle, ::entt::meta_any *args, uint argc, ::entt::meta_type const &expectedReturnType, ::std::optional<::Scripting::Privilege > privilege)
MCAPI::Scripting::IDebuggerController * $enableDebugger(::Scripting::IDebuggerTransport &transport, ::Scripting::IBreakpointValidator &validator)
Definition RegistryManager.h:12
Definition ResultAny.h:7
Definition ScriptContext.h:19
Definition StringBasedRuntime.h:18
Definition JSContext.h:5
Definition JSModuleDef.h:8
Definition ClosureType.h:7
Definition CoRoutineResult.h:7
Definition ContextConfig.h:20
Definition ContextId.h:7
Definition FutureType.h:7
Definition IRuntimeMetadata.h:7
Definition ModuleBindingBundle.h:15
Definition PromiseType.h:7
Definition MallocFunctions.h:7
Definition RuntimeStats.h:7
Definition TypeNameInfo.h:7
Definition TypedObjectHandle.h:8
Definition WatchdogSettings.h:7
Definition ctx.h:5
Definition Alias.h:14