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(
38 uint jsArgCount,
39 ::JSValue* jsArgs,
40 ::std::array<::entt::meta_any, 16>& outArgsAsAnys
41);
42
43MCNAPI ::JSValue CopyJSValueArrayToNativeSequenceContainer(
45 ::JSValue jsArray,
46 ::entt::meta_sequence_container& view,
47 ::entt::meta_type const& type
48);
49
50MCNAPI ::JSValue CopyJSValueObjectToNativeAssociativeContainer(
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(
68 ::JSValue thisVal,
69 int argc,
70 ::JSValue* argv,
71 int magic,
72 ::JSValue* funcDataVal
73);
74
75MCNAPI ::JSValue GenericObjectFunctionCaller(
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(
89 ::JSValue thisVal,
90 int argc,
91 ::JSValue* argv,
92 int magic,
93 ::JSValue* funcDataVal
94);
95
96MCNAPI ::JSValue GenericReflectionPropertySetter(
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 uint GetJSArrayLength(::JSContext* ctx, ::JSValue jsArray);
108
109MCNAPI ::Scripting::ObjectHandle GetNativeObjectHandleFromJSValue(::JSValue jsValue);
110
111MCNAPI ::Scripting::QuickJS::PropertyGetSet const&
112GetPropertyGetSetFromJSFuncData(::JSContext* ctx, ::JSValue* funcDataVal);
113
114MCNAPI ::Scripting::QuickJS::RuntimeUserData* GetRuntimeUserDataFromContext(::JSContext* ctx);
115
116MCNAPI bool HasNativeObjectHandle(::JSValue jsValue);
117
118MCNAPI void InitializeBakedProperties(
120 ::JSValue obj,
121 ::Scripting::ObjectHandle objectHandle,
123 ::Scripting::QuickJS::RegisteredClass const* registeredClass
124);
125
126MCNAPI ::std::string JSAtomCStringToString(::JSContext* ctx, uint jsAtom);
127
128MCNAPI ::entt::meta_any JSErrorToNativeAny(::JSContext* ctx, ::JSValue jsValue);
129
130MCNAPI ::std::string JSValueCStringToString(::JSContext* ctx, ::JSValue jsValue);
131
132MCNAPI bool JSValueIsInfinite(::JSValue const& value);
133
134MCNAPI bool JSValueIsNan(::JSValue const& value);
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(
141 ::JSValue jsValue,
143 ::entt::meta_type const& type,
144 ::Scripting::InterfaceBinding const& interfaceBinding
145);
146
147MCNAPI ::JSValue NativeAnyToJSProtoClass(
149 ::JSValue newTarget,
150 ::entt::meta_any& any,
151 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
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(
166 ::entt::meta_any& any,
167 uint jsClassId,
169);
170
171MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeInterfaceToJSValue(
173 ::entt::meta_any& any,
174 ::Scripting::QuickJS::RegisteredInterface const& registeredInterface,
175 bool addRef,
176 bool allowCopy
177);
178
179MCNAPI ::JSValue NativeObjectHandleToJSProtoClass(
181 ::JSValue newTarget,
182 ::Scripting::ObjectHandle objectHandle,
183 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
185);
186
187MCNAPI ::JSValue NativeObjectHandleToJSValue(
189 ::Scripting::ObjectHandle objectHandle,
190 bool addRef,
191 bool allowCopy,
192 ::Scripting::QuickJS::NativeObjectOwnership ownership
193);
194
195MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeRegisteredEnumToJSValue(
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 ::entt::meta_any WriteError(::JSContext* ctx, ::JSValue exceptionVal);
214
215MCNAPI ::std::string WriteObject(::JSContext* ctx, ::JSValue val);
216
217MCNAPI double anyToDouble(::entt::meta_any const& any);
218
219MCNAPI ::std::string anyToString(::entt::meta_any const& any);
220
221MCNAPI ::Scripting::StrongObjectHandle getHandleFromObjectFactory(
224 ::Scripting::ObjectFactory const& objectFactory
225);
226// NOLINTEND
227
228} // namespace Scripting::QuickJS
Definition LifetimeRegistry.h:16
Definition ContextUserData.h:17
Definition RegisteredClass.h:7
Definition RegisteredEnum.h:7
Definition RegisteredInterface.h:7
Definition IFunction.h:12
Definition JSContext.h:5
Definition JSValue.h:5
Definition InterfaceBinding.h:16
Definition IteratorBinding.h:15
Definition ObjectFactory.h:17
Definition ObjectHandle.h:7
Definition ctx.h:5