LeviLamina
Loading...
Searching...
No Matches
QuickJS.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/scripting/quickjs/NativeObjectOwnership.h"
7#include "mc/external/quickjs/JSTypedArrayEnum.h"
8
9// auto generated forward declare list
10// clang-format off
11struct JSContext;
12struct JSValue;
13namespace Scripting { class LifetimeRegistry; }
14namespace Scripting { class StrongObjectHandle; }
15namespace Scripting { struct ClassBinding; }
16namespace Scripting { struct FunctionBinding; }
17namespace Scripting { struct InterfaceBinding; }
18namespace Scripting { struct IteratorBinding; }
19namespace Scripting { struct ObjectFactory; }
20namespace Scripting { struct ObjectHandle; }
21namespace Scripting::QuickJS { class ContextUserData; }
22namespace Scripting::QuickJS { class RegisteredClass; }
23namespace Scripting::QuickJS { class RegisteredEnum; }
24namespace Scripting::QuickJS { class RegisteredInterface; }
25namespace Scripting::QuickJS { class RuntimeUserData; }
26namespace Scripting::QuickJS { struct ArgConversionResult; }
27namespace Scripting::QuickJS { struct ArrayProxy; }
28namespace Scripting::QuickJS { struct PropertyGetSet; }
29namespace Scripting::Reflection { class IFunction; }
30// clang-format on
31
32namespace Scripting::QuickJS {
33// functions
34// NOLINTBEGIN
35MCNAPI ::JSValue ConvertJSValueArgsToNativeAnys(
36 ::JSContext* ctx,
37 ::Scripting::Reflection::IFunction* funcPtr,
38 uint jsArgCount,
39 ::JSValue* jsArgs,
40 ::std::array<::entt::meta_any, 16>& outArgsAsAnys
41);
42
43MCNAPI ::JSValue CopyJSValueArrayToNativeSequenceContainer(
44 ::JSContext* ctx,
45 ::JSValue jsArray,
46 ::entt::meta_sequence_container& view,
47 ::entt::meta_type const& type
48);
49
50MCNAPI ::JSValue CopyJSValueObjectToNativeAssociativeContainer(
51 ::JSContext* ctx,
52 ::JSValue jsValue,
53 ::entt::meta_associative_container& view,
54 ::entt::meta_type const& type
55);
56
57MCNAPI ::Scripting::QuickJS::ArrayProxy CreateArrayProxy(::JSContext* ctx);
58
59MCNAPI ::Scripting::FunctionBinding CreateIteratorNextFunctionBinding(::Scripting::IteratorBinding& iteratorBinding);
60
61MCNAPI ::std::unique_ptr<::Scripting::ClassBinding>
62CreateIteratorReturnClassBinding(::Scripting::IteratorBinding& iteratorBinding);
63
64MCNAPI ::entt::meta_any ExceptionWriter(::JSContext* ctx);
65
66MCNAPI ::JSValue GenericFreeFunctionCaller(
67 ::JSContext* ctx,
68 ::JSValue thisVal,
69 int argc,
70 ::JSValue* argv,
71 int magic,
72 ::JSValue* funcDataVal
73);
74
75MCNAPI ::JSValue GenericObjectFunctionCaller(
76 ::JSContext* ctx,
77 ::JSValue thisVal,
78 int argc,
79 ::JSValue* argv,
80 int magic,
81 ::JSValue* funcDataVal
82);
83
84MCNAPI ::JSValue
85GenericReflectionCtorCaller(::JSContext* ctx, ::JSValue newTarget, int argc, ::JSValue* argv, int jsClassIdMagic);
86
87MCNAPI ::JSValue GenericReflectionPropertyGetter(
88 ::JSContext* ctx,
89 ::JSValue thisVal,
90 int argc,
91 ::JSValue* argv,
92 int magic,
93 ::JSValue* funcDataVal
94);
95
96MCNAPI ::JSValue GenericReflectionPropertySetter(
97 ::JSContext* ctx,
98 ::JSValue thisVal,
99 int argc,
100 ::JSValue* argv,
101 int magic,
102 ::JSValue* funcDataVal
103);
104
105MCNAPI ::std::string GetClassNameFromJSValue(::JSContext* ctx, ::JSValue target);
106
107MCNAPI ::Scripting::ObjectHandle GetNativeObjectHandleFromJSValue(::JSValue jsValue);
108
109MCNAPI ::Scripting::QuickJS::PropertyGetSet const&
110GetPropertyGetSetFromJSFuncData(::JSContext* ctx, ::JSValue* funcDataVal);
111
112MCNAPI ::Scripting::QuickJS::RuntimeUserData* GetRuntimeUserDataFromContext(::JSContext* ctx);
113
114MCNAPI bool HasNativeObjectHandle(::JSValue jsValue);
115
116MCNAPI void InitializeBakedProperties(
117 ::JSContext* ctx,
118 ::JSValue obj,
119 ::Scripting::ObjectHandle objectHandle,
120 ::Scripting::QuickJS::ContextUserData* contextData,
121 ::Scripting::QuickJS::RegisteredClass const* registeredClass
122);
123
124MCNAPI ::std::string JSAtomCStringToString(::JSContext* ctx, uint jsAtom);
125
126MCNAPI ::entt::meta_any JSErrorToNativeAny(::JSContext* ctx, ::JSValue jsValue);
127
128MCNAPI ::std::string JSValueCStringToString(::JSContext* ctx, ::JSValue jsValue);
129
130MCNAPI bool JSValueIsInfinite(::JSValue const& value);
131
132MCNAPI bool JSValueIsNan(::JSValue const& value);
133
134MCNAPI ::entt::meta_any JSValueToBaseError(::JSContext* ctx, ::JSValue jsValue);
135
136MCNAPI ::std::variant<::entt::meta_any, ::JSValue>
137JSValueToNativeAny(::JSContext* ctx, ::JSValue jsValue, ::entt::meta_type const& type);
138
139MCNAPI ::std::variant<::entt::meta_any, ::JSValue> JSValueToNativeInterface(
140 ::JSContext* ctx,
141 ::JSValue jsValue,
142 ::Scripting::QuickJS::ContextUserData* contextData,
143 ::entt::meta_type const& type,
144 ::Scripting::InterfaceBinding const& interfaceBinding
145);
146
147MCNAPI ::JSValue NativeAnyToJSProtoClass(
148 ::JSContext* ctx,
149 ::JSValue newTarget,
150 ::entt::meta_any& any,
151 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
152 ::Scripting::QuickJS::ContextUserData& contextData
153);
154
155MCNAPI ::Scripting::QuickJS::ArgConversionResult
156NativeAnyToJSValue(::JSContext* ctx, ::entt::meta_any& any, bool addRef, bool allowCopy);
157
158MCNAPI ::Scripting::QuickJS::ArgConversionResult
159NativeEnumToJSValue(::JSContext* ctx, ::entt::meta_any& any, bool addRef, bool allowCopy);
160
161MCNAPI ::JSValue NativeErrorToJSValue(::JSContext* ctx, ::entt::meta_any& any);
162
163MCNAPI ::JSValue NativeErrorToJSValueInternal(
164 ::JSContext* ctx,
165 ::Scripting::QuickJS::ContextUserData& contextData,
166 ::entt::meta_any& any,
167 uint jsClassId,
168 ::Scripting::LifetimeRegistry& registry
169);
170
171MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeInterfaceToJSValue(
172 ::JSContext* ctx,
173 ::entt::meta_any& any,
174 ::Scripting::QuickJS::RegisteredInterface const& registeredInterface,
175 bool addRef,
176 bool allowCopy
177);
178
179MCNAPI ::JSValue NativeObjectHandleToJSProtoClass(
180 ::JSContext* ctx,
181 ::JSValue newTarget,
182 ::Scripting::ObjectHandle objectHandle,
183 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
184 ::Scripting::LifetimeRegistry& registry
185);
186
187MCNAPI ::JSValue NativeObjectHandleToJSValue(
188 ::JSContext* ctx,
189 ::Scripting::ObjectHandle objectHandle,
190 bool addRef,
191 bool allowCopy,
192 ::Scripting::QuickJS::NativeObjectOwnership ownership
193);
194
195MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeRegisteredEnumToJSValue(
196 ::JSContext* ctx,
197 ::entt::meta_any& any,
198 ::Scripting::QuickJS::RegisteredEnum const& registeredEnum
199);
200
201MCNAPI ::JSValue PrintError(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
202
203MCNAPI ::JSValue PrintInfo(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
204
205MCNAPI ::JSValue PrintWarn(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
206
207MCNAPI ::JSValue ThrowEngineErrorToJS(::JSContext* ctx, ::std::string const& msg);
208
209MCNAPI ::JSValue ThrowJSTypeErrorWithContext(::JSContext*, ::Scripting::QuickJS::ContextUserData&, char const*, ...);
210
211MCNAPI ::JSTypedArrayEnum ToJSTypedArrayEnum(::entt::meta_type const& type);
212
213MCNAPI ::Scripting::StrongObjectHandle getHandleFromObjectFactory(
214 ::JSContext* ctx,
215 ::Scripting::QuickJS::ContextUserData& contextData,
216 ::Scripting::ObjectFactory const& objectFactory
217);
218// NOLINTEND
219
220} // namespace Scripting::QuickJS
Definition LifetimeRegistry.h:19
Definition ContextUserData.h:18
Definition RegisteredClass.h:7
Definition RegisteredEnum.h:7
Definition RegisteredInterface.h:7
Definition RuntimeUserData.h:7
Definition IFunction.h:12
Definition StrongObjectHandle.h:13
Definition JSContext.h:5
Definition JSValue.h:5
Definition ClassBinding.h:19
Definition FunctionBinding.h:10
Definition InterfaceBinding.h:16
Definition IteratorBinding.h:15
Definition ObjectFactory.h:17
Definition ObjectHandle.h:7
Definition ArgConversionResult.h:7
Definition ArrayProxy.h:7
Definition PropertyGetSet.h:7