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
43public:
44 // ContextObject inner types declare
45 // clang-format off
47 // clang-format on
48
49 // ContextObject inner types define
51 public:
52 // member variables
53 // NOLINTBEGIN
56 // NOLINTEND
57
58 public:
59 // prevent constructor by default
63
64 public:
65 // member functions
66 // NOLINTBEGIN
68 // NOLINTEND
69
70 public:
71 // destructor thunk
72 // NOLINTBEGIN
73 MCFOLD void $dtor();
74 // NOLINTEND
75 };
76
77public:
78 // member variables
79 // NOLINTBEGIN
93 // NOLINTEND
94
95public:
96 // prevent constructor by default
97 ContextObject& operator=(ContextObject const&);
100
101public:
102 // member functions
103 // NOLINTBEGIN
104 MCAPI ContextObject(
105 ::Scripting::ContextId contextId,
106 ::JSContext* jsContext,
109 ::std::unique_ptr<::Scripting::ScriptObjectFactory>&& factory,
110 ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector>&& inspector,
111 ::Scripting::IPrinter* printer,
113 ::JSRuntime* contextConfig,
114 ::Scripting::ContextConfig const& jsRuntime
115 );
116
117 MCAPI void _bindGlobals(::Scripting::GlobalBinding const& global);
118
119 MCAPI void _bindModules(::std::vector<::Scripting::ModuleBinding> const& modules);
120
121 MCAPI void _bindPrint(::JSContext* ctx);
122
123 MCAPI void _resolvePromise(::JSValue jsResolutionFunc, ::entt::meta_any& arg);
124
125 MCAPI void addUnhandledPromiseRejection(void* promise, ::std::string const& message, bool isHandled);
126
127 MCAPI ::Scripting::ResultAny call(
129 ::entt::meta_any* args,
130 uint argc,
131 ::entt::meta_type const& expectedReturnType
132 );
133
134 MCAPI ::Scripting::ResultAny
135 getFutureResult(::Scripting::TypedObjectHandle<::Scripting::FutureType> futureHandle, ::entt::meta_type const&)
136 const;
137
138 MCAPI ::Scripting::TypeNameInfo getNameForType(::entt::meta_type const& type, bool allowUnknownTypes) const;
139
140 MCAPI ::JSModuleDef* loadScriptAsModule(char const* moduleName);
141
142 MCAPI ::Scripting::ResultAny run(::std::string const& scriptName, ::std::string const& scriptData);
143
144 MCAPI ~ContextObject();
145 // NOLINTEND
146
147public:
148 // static functions
149 // NOLINTBEGIN
150 MCAPI static void _bindClass(
152 ::JSModuleDef* jsModuleDef,
155 );
156
157 MCAPI static void
158 _bindError(::JSContext* ctx, ::JSModuleDef* moduleDef, ::Scripting::QuickJS::RegisteredError& registeredError);
159
160 MCAPI static ::std::unique_ptr<::Scripting::AnyAndJSValue> _createConstant(
163 ::JSValue target,
164 ::Scripting::ConstantFactory const& constantCreator
165 );
166
167 MCAPI static ::std::unique_ptr<::Scripting::AnyAndJSValue> _createEnumReverseConstant(
170 ::JSValue enumObj,
171 ::Scripting::EnumBinding const& enumBinding,
172 ::Scripting::ConstantFactory const& constantBinding
173 );
174
175 MCAPI static void _createFunction(
177 ::JSValue jsValue,
178 ::Scripting::FunctionBinding const& functionBinding,
179 ::JSValue jsCtorVal,
180 ::std::string const& className
181 );
182
183 MCAPI static void _createGlobalEnum(
186 ::Scripting::EnumBinding const& enumBinding
187 );
188
189 MCAPI static void _createGlobalFunction(::JSContext* ctx, ::Scripting::FunctionBinding const& functionBinding);
190
191 MCAPI static void _createGlobalObject(
194 ::Scripting::ObjectFactory const& objectFactory
195 );
196
197 MCAPI static void _createIterator(
199 ::JSModuleDef* jsModuleDef,
201 ::JSValue jsValue,
202 ::Scripting::IteratorBinding& iteratorBinding
203 );
204
205 MCAPI static void _createModuleEnum(
207 ::JSModuleDef* jsModuleDef,
209 ::Scripting::EnumBinding const& enumBinding
210 );
211
212 MCAPI static void _createModuleFunction(
214 ::JSModuleDef* jsModuleDef,
215 ::Scripting::FunctionBinding const& functionBinding
216 );
217
218 MCAPI static void _createModuleObject(
220 ::JSModuleDef* jsModuleDef,
222 ::Scripting::ObjectFactory const& objectFactory
223 );
224
225 MCAPI static void _createProperty(
227 ::JSValue jsValue,
228 ::Scripting::PropertyBinding const& propertyBinding,
229 ::std::string const& className
230 );
231
232 MCAPI static int _initializeModuleBinding(
234 ::JSModuleDef* jsModuleDef,
236 ::Scripting::ModuleBinding const& moduleBinding
237 );
238
239 MCAPI static int _moduleInitializer(::JSContext* ctx, ::JSModuleDef* jsModuleDef);
240 // NOLINTEND
241
242public:
243 // constructor thunks
244 // NOLINTBEGIN
245 MCAPI void* $ctor(
246 ::Scripting::ContextId contextId,
247 ::JSContext* jsContext,
250 ::std::unique_ptr<::Scripting::ScriptObjectFactory>&& factory,
251 ::std::unique_ptr<::Scripting::QuickJS::ObjectInspector>&& inspector,
252 ::Scripting::IPrinter* printer,
254 ::JSRuntime* contextConfig,
255 ::Scripting::ContextConfig const& jsRuntime
256 );
257 // NOLINTEND
258
259public:
260 // destructor thunk
261 // NOLINTBEGIN
262 MCAPI void $dtor();
263 // NOLINTEND
264};
265
266} // namespace Scripting::QuickJS
Definition IDependencyLoader.h:13
Definition IPrinter.h:12
Definition ContextObject.h:42
Definition ContextUserData.h:17
Definition RegisteredClass.h:7
Definition RegisteredError.h:7
Definition WeakLifetimeScope.h:12
Definition JSContext.h:5
Definition JSModuleDef.h:8
Definition JSRuntime.h:8
Definition JSValue.h:5
Definition ConstantFactory.h:15
Definition ContextConfig.h:7
Definition ContextId.h:7
Definition EnumBinding.h:15
Definition FunctionBinding.h:15
Definition GlobalBinding.h:7
Definition IteratorBinding.h:15
Definition ModuleBindingBundle.h:7
Definition ModuleBinding.h:7
Definition ObjectFactory.h:17
Definition PropertyBinding.h:10
Definition TypedObjectHandle.h:8
Definition ctx.h:5
Definition Alias.h:14