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