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 ::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(
118 ::JSValue obj,
119 ::Scripting::ObjectHandle objectHandle,
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 ::std::variant<::entt::meta_any, ::JSValue>
135JSValueToNativeAny(::JSContext* ctx, ::JSValue jsValue, ::entt::meta_type const& type);
136
137MCNAPI ::std::variant<::entt::meta_any, ::JSValue> JSValueToNativeInterface(
139 ::JSValue jsValue,
141 ::entt::meta_type const& type,
142 ::Scripting::InterfaceBinding const& interfaceBinding
143);
144
145MCNAPI ::JSValue NativeAnyToJSProtoClass(
147 ::JSValue newTarget,
148 ::entt::meta_any& any,
149 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
151);
152
153MCNAPI ::Scripting::QuickJS::ArgConversionResult
154NativeAnyToJSValue(::JSContext* ctx, ::entt::meta_any& any, bool addRef, bool allowCopy);
155
156MCNAPI ::Scripting::QuickJS::ArgConversionResult
157NativeEnumToJSValue(::JSContext* ctx, ::entt::meta_any& any, bool addRef, bool allowCopy);
158
159MCNAPI ::JSValue NativeErrorToJSValue(::JSContext* ctx, ::entt::meta_any& any);
160
161MCNAPI ::JSValue NativeErrorToJSValueInternal(
164 ::entt::meta_any& any,
165 uint jsClassId,
167);
168
169MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeInterfaceToJSValue(
171 ::entt::meta_any& any,
172 ::Scripting::QuickJS::RegisteredInterface const& registeredInterface,
173 bool addRef,
174 bool allowCopy
175);
176
177MCNAPI ::JSValue NativeObjectHandleToJSProtoClass(
179 ::JSValue newTarget,
180 ::Scripting::ObjectHandle objectHandle,
181 ::Scripting::QuickJS::RegisteredClass const& registeredClass,
183);
184
185MCNAPI ::JSValue NativeObjectHandleToJSValue(
187 ::Scripting::ObjectHandle objectHandle,
188 bool addRef,
189 bool allowCopy,
190 ::Scripting::QuickJS::NativeObjectOwnership ownership
191);
192
193MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeRegisteredEnumToJSValue(
195 ::entt::meta_any& any,
196 ::Scripting::QuickJS::RegisteredEnum const& registeredEnum
197);
198
199MCNAPI ::JSValue PrintError(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
200
201MCNAPI ::JSValue PrintInfo(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
202
203MCNAPI ::JSValue PrintWarn(::JSContext* ctx, ::JSValue, int argc, ::JSValue* argv);
204
205MCNAPI ::JSValue ThrowEngineErrorToJS(::JSContext* ctx, ::std::string const& msg);
206
207MCNAPI ::JSValue ThrowJSTypeErrorWithContext(::JSContext*, ::Scripting::QuickJS::ContextUserData&, char const*, ...);
208
209MCNAPI ::JSTypedArrayEnum ToJSTypedArrayEnum(::entt::meta_type const& type);
210
211MCNAPI ::entt::meta_any WriteError(::JSContext* ctx, ::JSValue exceptionVal);
212
213MCNAPI ::std::string WriteObject(::JSContext* ctx, ::JSValue val);
214
215MCNAPI double anyToDouble(::entt::meta_any const& any);
216
217MCNAPI ::std::string anyToString(::entt::meta_any const& any);
218
219MCNAPI ::Scripting::StrongObjectHandle getHandleFromObjectFactory(
222 ::Scripting::ObjectFactory const& objectFactory
223);
224// NOLINTEND
225
226} // 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