LeviLamina
Loading...
Searching...
No Matches
ContextObject.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/scripting/lifetime_registry/TypedObjectHandle.h"
7
8// auto generated forward declare list
9// clang-format off
10struct JSContext;
11struct JSModuleDef;
12struct JSRuntime;
13struct JSValue;
14namespace Scripting { class IDependencyLoader; }
15namespace Scripting { class IPrinter; }
16namespace Scripting { class ResultAny; }
17namespace Scripting { class ScriptObjectFactory; }
18namespace Scripting { class WeakLifetimeScope; }
19namespace Scripting { struct AnyAndJSValue; }
20namespace Scripting { struct ClosureType; }
21namespace Scripting { struct ConstantFactory; }
22namespace Scripting { struct ContextConfig; }
23namespace Scripting { struct ContextId; }
24namespace Scripting { struct EnumBinding; }
25namespace Scripting { struct FunctionBinding; }
26namespace Scripting { struct FutureType; }
27namespace Scripting { struct GlobalBinding; }
28namespace Scripting { struct IteratorBinding; }
29namespace Scripting { struct ModuleBinding; }
30namespace Scripting { struct ModuleBindingBundle; }
31namespace Scripting { struct ObjectFactory; }
32namespace Scripting { struct PropertyBinding; }
33namespace Scripting { struct TypeNameInfo; }
34namespace Scripting::QuickJS { class ContextUserData; }
35namespace Scripting::QuickJS { class ObjectInspector; }
36namespace Scripting::QuickJS { class RegisteredClass; }
37namespace Scripting::QuickJS { class RegisteredError; }
38// clang-format on
39
40namespace Scripting::QuickJS {
41
42class ContextObject {
43public:
44 // ContextObject inner types declare
45 // clang-format off
47 // clang-format on
48
49 // ContextObject inner types define
50 enum class ImportAllowedResult : int {
51 Success = 0,
52 FailRestricted = 1,
53 FailStaticImport = 2,
54 };
55
56 struct UnhandledPromiseRejectionEntry {
57 public:
58 // member variables
59 // NOLINTBEGIN
62 // NOLINTEND
63
64 public:
65 // prevent constructor by default
66 UnhandledPromiseRejectionEntry& operator=(UnhandledPromiseRejectionEntry const&);
67 UnhandledPromiseRejectionEntry(UnhandledPromiseRejectionEntry const&);
68 UnhandledPromiseRejectionEntry();
69 };
70
71public:
72 // member variables
73 // NOLINTBEGIN
87 // NOLINTEND
88
89public:
90 // prevent constructor by default
91 ContextObject& operator=(ContextObject const&);
92 ContextObject(ContextObject const&);
93 ContextObject();
94
95public:
96 // member functions
97 // NOLINTBEGIN
99 ::Scripting::ContextId contextId,
100 ::JSContext* jsContext,
103 ::std::unique_ptr<::Scripting::ScriptObjectFactory>&& factory,
104 ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector>&& inspector,
105 ::Scripting::IPrinter* printer,
107 ::JSRuntime* contextConfig,
109 );
110
111 MCNAPI void _bindGlobals(::Scripting::GlobalBinding const& global);
112
113 MCNAPI void _bindModules(::std::vector<::Scripting::ModuleBinding> const& modules);
114
116
117 MCNAPI ::JSModuleDef* _evalModuleWithErrors(
118 ::Scripting::ModuleBinding const& bindingModule,
119 ::std::string const& moduleName,
120 ::std::string const& js
121 );
122
123 MCNAPI void _resolvePromise(::JSValue jsResolutionFunc, ::entt::meta_any& arg);
124
125 MCNAPI void addUnhandledPromiseRejection(void* promise, ::entt::meta_any rejection, bool isHandled);
126
127 MCNAPI ::Scripting::ResultAny call(
129 ::entt::meta_any* args,
130 uint argc,
131 ::entt::meta_type const& expectedReturnType
132 );
133
134 MCNAPI ::Scripting::QuickJS::ContextObject::ImportAllowedResult
135 checkModuleImportAllowed(::std::string const& baseName, ::std::string const& moduleName, bool dynamicImport) const;
136
137 MCNAPI ::Scripting::ResultAny getFutureResult(
139 ::entt::meta_type const&
140 ) const;
141
142 MCNAPI ::Scripting::TypeNameInfo getNameForType(::entt::meta_type const& type, bool allowUnknownTypes) const;
143
144 MCNAPI ::JSModuleDef* loadScriptAsModule(::std::string const& moduleName);
145
147
148 MCNAPI ::Scripting::ResultAny run(::std::string const& scriptName, ::std::string const& scriptData);
149
151 // NOLINTEND
152
153public:
154 // static functions
155 // NOLINTBEGIN
156 MCNAPI static void _bindClass(
158 ::JSModuleDef* jsModuleDef,
161 );
162
163 MCNAPI static void
165
166 MCNAPI static ::std::unique_ptr<::Scripting::AnyAndJSValue> _createConstant(
169 ::JSValue target,
170 ::Scripting::ConstantFactory const& constantCreator
171 );
172
173 MCNAPI static ::JSValue _createConstructor(
175 ::JSModuleDef* jsModuleDef,
176 ::JSValue jsValue,
177 ::std::string const& name,
178 uint jsClassId
179 );
180
181 MCNAPI static ::std::unique_ptr<::Scripting::AnyAndJSValue> _createEnumReverseConstant(
184 ::JSValue enumObj,
185 ::Scripting::EnumBinding const& enumBinding,
186 ::Scripting::ConstantFactory const& constantBinding
187 );
188
189 MCNAPI static void _createFunction(
191 ::JSValue jsValue,
192 ::Scripting::FunctionBinding const& functionBinding,
193 ::JSValue jsCtorVal,
194 ::std::string const& className
195 );
196
197 MCNAPI static void _createGlobalEnum(
200 ::Scripting::EnumBinding const& enumBinding
201 );
202
203 MCNAPI static void _createGlobalFunction(::JSContext* ctx, ::Scripting::FunctionBinding const& functionBinding);
204
205 MCNAPI static void _createGlobalObject(
208 ::Scripting::ObjectFactory const& objectFactory
209 );
210
211 MCNAPI static void _createIterator(
213 ::JSModuleDef* jsModuleDef,
215 ::JSValue jsValue,
216 ::Scripting::IteratorBinding& iteratorBinding
217 );
218
219 MCNAPI static void _createModuleConstant(
221 ::JSModuleDef* jsModuleDef,
223 ::Scripting::ConstantFactory const& constantFactory
224 );
225
226 MCNAPI static void _createModuleEnum(
228 ::JSModuleDef* jsModuleDef,
230 ::Scripting::EnumBinding const& enumBinding
231 );
232
233 MCNAPI static void _createModuleFunction(
235 ::JSModuleDef* jsModuleDef,
236 ::Scripting::FunctionBinding const& functionBinding
237 );
238
239 MCNAPI static void _createModuleObject(
241 ::JSModuleDef* jsModuleDef,
243 ::Scripting::ObjectFactory const& objectFactory
244 );
245
246 MCNAPI static void _createProperty(
248 ::JSValue jsPrototype,
249 ::Scripting::PropertyBinding const& propertyBinding,
250 ::std::string const& className
251 );
252
253 MCNAPI static int _initializeModuleBinding(
255 ::JSModuleDef* jsModuleDef,
257 ::Scripting::ModuleBinding const& moduleBinding
258 );
259
260 MCNAPI static int _moduleInitializer(::JSContext* ctx, ::JSModuleDef* jsModuleDef);
261 // NOLINTEND
262
263public:
264 // constructor thunks
265 // NOLINTBEGIN
266 MCNAPI void* $ctor(
267 ::Scripting::ContextId contextId,
268 ::JSContext* jsContext,
271 ::std::unique_ptr<::Scripting::ScriptObjectFactory>&& factory,
272 ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector>&& inspector,
273 ::Scripting::IPrinter* printer,
275 ::JSRuntime* contextConfig,
277 );
278 // NOLINTEND
279
280public:
281 // destructor thunk
282 // NOLINTBEGIN
283 MCNAPI void $dtor();
284 // NOLINTEND
285};
286
287} // namespace Scripting::QuickJS
Definition IDependencyLoader.h:12
Definition IPrinter.h:13
static MCAPI ::std::unique_ptr<::Scripting::AnyAndJSValue > _createEnumReverseConstant(::JSContext *ctx, ::Scripting::QuickJS::ContextUserData &contextData, ::JSValue enumObj, ::Scripting::EnumBinding const &enumBinding, ::Scripting::ConstantFactory const &constantBinding)
MCAPI::Scripting::ResultAny run(::std::string const &scriptName, ::std::string const &scriptData)
static MCAPI void _createProperty(::JSContext *ctx, ::JSValue jsPrototype, ::Scripting::PropertyBinding const &propertyBinding, ::std::string const &className)
static MCAPI void _bindClass(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::QuickJS::RegisteredClass &registeredClass)
static MCAPI void _createModuleObject(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::ObjectFactory const &objectFactory)
MCAPI::Scripting::ResultAny getFutureResult(::Scripting::TypedObjectHandle<::Scripting::FutureType > futureHandle, ::entt::meta_type const &) const
static MCAPI void _createModuleEnum(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::EnumBinding const &enumBinding)
static MCAPI void _createGlobalObject(::JSContext *ctx, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::ObjectFactory const &objectFactory)
static MCAPI void _createIterator(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::JSValue jsValue, ::Scripting::IteratorBinding &iteratorBinding)
MCAPI::JSModuleDef * loadScriptAsModule(::std::string const &moduleName)
static MCAPI void _createGlobalEnum(::JSContext *ctx, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::EnumBinding const &enumBinding)
MCAPI ContextObject(::Scripting::ContextId contextId, ::JSContext *jsContext, ::Scripting::WeakLifetimeScope scope, ::Scripting::ModuleBindingBundle &&bindings, ::std::unique_ptr<::Scripting::ScriptObjectFactory > &&factory, ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector > &&inspector, ::Scripting::IPrinter *printer, ::Scripting::IDependencyLoader *loader, ::JSRuntime *contextConfig, ::Scripting::ContextConfig const &)
MCAPI void * $ctor(::Scripting::ContextId contextId, ::JSContext *jsContext, ::Scripting::WeakLifetimeScope scope, ::Scripting::ModuleBindingBundle &&bindings, ::std::unique_ptr<::Scripting::ScriptObjectFactory > &&factory, ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector > &&inspector, ::Scripting::IPrinter *printer, ::Scripting::IDependencyLoader *loader, ::JSRuntime *contextConfig, ::Scripting::ContextConfig const &)
MCAPI::Scripting::TypeNameInfo getNameForType(::entt::meta_type const &type, bool allowUnknownTypes) const
MCAPI void _bindPrint(::JSContext *ctx)
MCAPI::Scripting::QuickJS::ContextObject::ImportAllowedResult checkModuleImportAllowed(::std::string const &baseName, ::std::string const &moduleName, bool dynamicImport) const
MCAPI::Scripting::ResultAny call(::Scripting::TypedObjectHandle<::Scripting::ClosureType > closureHandle, ::entt::meta_any *args, uint argc, ::entt::meta_type const &expectedReturnType)
static MCAPI int _moduleInitializer(::JSContext *ctx, ::JSModuleDef *jsModuleDef)
MCAPI void _bindGlobals(::Scripting::GlobalBinding const &global)
MCAPI void _bindModules(::std::vector<::Scripting::ModuleBinding > const &modules)
static MCAPI void _createModuleConstant(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::ConstantFactory const &constantFactory)
static MCAPI ::std::unique_ptr<::Scripting::AnyAndJSValue > _createConstant(::JSContext *ctx, ::Scripting::QuickJS::ContextUserData &contextData, ::JSValue target, ::Scripting::ConstantFactory const &constantCreator)
MCAPI::JSModuleDef * _evalModuleWithErrors(::Scripting::ModuleBinding const &bindingModule, ::std::string const &moduleName, ::std::string const &js)
static MCAPI void _createGlobalFunction(::JSContext *ctx, ::Scripting::FunctionBinding const &functionBinding)
static MCAPI void _bindError(::JSContext *ctx, ::JSModuleDef *moduleDef, ::Scripting::QuickJS::RegisteredError &registeredError)
static MCAPI int _initializeModuleBinding(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::QuickJS::ContextUserData &contextData, ::Scripting::ModuleBinding const &moduleBinding)
static MCAPI void _createModuleFunction(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::Scripting::FunctionBinding const &functionBinding)
MCAPI void processUnhandledPromiseRejection()
MCAPI void addUnhandledPromiseRejection(void *promise, ::entt::meta_any rejection, bool isHandled)
static MCAPI void _createFunction(::JSContext *ctx, ::JSValue jsValue, ::Scripting::FunctionBinding const &functionBinding, ::JSValue jsCtorVal, ::std::string const &className)
MCAPI void _resolvePromise(::JSValue jsResolutionFunc, ::entt::meta_any &arg)
static MCAPI ::JSValue _createConstructor(::JSContext *ctx, ::JSModuleDef *jsModuleDef, ::JSValue jsValue, ::std::string const &name, uint jsClassId)
Definition ContextUserData.h:24
Definition ObjectInspector.h:16
Definition RegisteredClass.h:7
Definition RegisteredError.h:7
Definition ResultAny.h:7
Definition ScriptObjectFactory.h:7
Definition WeakLifetimeScope.h:14
Definition JSContext.h:5
Definition JSModuleDef.h:8
Definition JSRuntime.h:8
Definition JSValue.h:5
Definition AnyAndJSValue.h:15
Definition ClosureType.h:7
Definition ConstantFactory.h:15
Definition ContextConfig.h:20
Definition ContextId.h:7
Definition EnumBinding.h:15
Definition FunctionBinding.h:10
Definition FutureType.h:7
Definition GlobalBinding.h:7
Definition IteratorBinding.h:10
Definition ModuleBindingBundle.h:15
Definition ModuleBinding.h:23
Definition ObjectFactory.h:16
Definition PropertyBinding.h:10
Definition TypeNameInfo.h:7
Definition TypedObjectHandle.h:8
Definition ctx.h:5
Definition Alias.h:14