3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/scripting/quickjs/NativeObjectOwnership.h"
7#include "mc/external/quickjs/JSTypedArrayEnum.h"
27namespace Scripting::QuickJS {
struct ArrayProxy; }
29namespace Scripting::Reflection {
class IFunction; }
32namespace Scripting::QuickJS {
35MCNAPI ::JSValue ConvertJSValueArgsToNativeAnys(
37 ::Scripting::Reflection::IFunction* funcPtr,
40 ::std::array<::entt::meta_any, 16>& outArgsAsAnys
43MCNAPI ::JSValue CopyJSValueArrayToNativeSequenceContainer(
46 ::entt::meta_sequence_container& view,
47 ::entt::meta_type
const& type
50MCNAPI ::JSValue CopyJSValueObjectToNativeAssociativeContainer(
53 ::entt::meta_associative_container& view,
54 ::entt::meta_type
const& type
57MCNAPI ::Scripting::QuickJS::ArrayProxy CreateArrayProxy(::JSContext* ctx);
59MCNAPI ::Scripting::FunctionBinding CreateIteratorNextFunctionBinding(::Scripting::IteratorBinding& iteratorBinding);
61MCNAPI ::std::unique_ptr<::Scripting::ClassBinding>
62CreateIteratorReturnClassBinding(::Scripting::IteratorBinding& iteratorBinding);
64MCNAPI ::entt::meta_any ExceptionWriter(::JSContext* ctx);
66MCNAPI ::JSValue GenericFreeFunctionCaller(
72 ::JSValue* funcDataVal
75MCNAPI ::JSValue GenericObjectFunctionCaller(
81 ::JSValue* funcDataVal
85GenericReflectionCtorCaller(::JSContext* ctx, ::JSValue newTarget,
int argc, ::JSValue* argv,
int jsClassIdMagic);
87MCNAPI ::JSValue GenericReflectionPropertyGetter(
93 ::JSValue* funcDataVal
96MCNAPI ::JSValue GenericReflectionPropertySetter(
102 ::JSValue* funcDataVal
105MCNAPI ::std::string GetClassNameFromJSValue(::JSContext* ctx, ::JSValue target);
107MCNAPI ::Scripting::ObjectHandle GetNativeObjectHandleFromJSValue(::JSValue jsValue);
109MCNAPI ::Scripting::QuickJS::PropertyGetSet
const&
110GetPropertyGetSetFromJSFuncData(::JSContext* ctx, ::JSValue* funcDataVal);
112MCNAPI ::Scripting::QuickJS::RuntimeUserData* GetRuntimeUserDataFromContext(::JSContext* ctx);
114MCNAPI
bool HasNativeObjectHandle(::JSValue jsValue);
116MCNAPI
void InitializeBakedProperties(
119 ::Scripting::ObjectHandle objectHandle,
120 ::Scripting::QuickJS::ContextUserData* contextData,
121 ::Scripting::QuickJS::RegisteredClass
const* registeredClass
124MCNAPI ::std::string JSAtomCStringToString(::JSContext* ctx, uint jsAtom);
126MCNAPI ::entt::meta_any JSErrorToNativeAny(::JSContext* ctx, ::JSValue jsValue);
128MCNAPI ::std::string JSValueCStringToString(::JSContext* ctx, ::JSValue jsValue);
130MCNAPI
bool JSValueIsInfinite(::JSValue
const& value);
132MCNAPI
bool JSValueIsNan(::JSValue
const& value);
134MCNAPI ::entt::meta_any JSValueToBaseError(::JSContext* ctx, ::JSValue jsValue);
136MCNAPI ::std::variant<::entt::meta_any, ::JSValue>
137JSValueToNativeAny(::JSContext* ctx, ::JSValue jsValue, ::entt::meta_type
const& type);
139MCNAPI ::std::variant<::entt::meta_any, ::JSValue> JSValueToNativeInterface(
142 ::Scripting::QuickJS::ContextUserData* contextData,
143 ::entt::meta_type
const& type,
144 ::Scripting::InterfaceBinding
const& interfaceBinding
147MCNAPI ::JSValue NativeAnyToJSProtoClass(
150 ::entt::meta_any& any,
151 ::Scripting::QuickJS::RegisteredClass
const& registeredClass,
152 ::Scripting::QuickJS::ContextUserData& contextData
155MCNAPI ::Scripting::QuickJS::ArgConversionResult
156NativeAnyToJSValue(::JSContext* ctx, ::entt::meta_any& any,
bool addRef,
bool allowCopy);
158MCNAPI ::Scripting::QuickJS::ArgConversionResult
159NativeEnumToJSValue(::JSContext* ctx, ::entt::meta_any& any,
bool addRef,
bool allowCopy);
161MCNAPI ::JSValue NativeErrorToJSValue(::JSContext* ctx, ::entt::meta_any& any);
163MCNAPI ::JSValue NativeErrorToJSValueInternal(
165 ::Scripting::QuickJS::ContextUserData& contextData,
166 ::entt::meta_any& any,
168 ::Scripting::LifetimeRegistry& registry
171MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeInterfaceToJSValue(
173 ::entt::meta_any& any,
174 ::Scripting::QuickJS::RegisteredInterface
const& registeredInterface,
179MCNAPI ::JSValue NativeObjectHandleToJSProtoClass(
182 ::Scripting::ObjectHandle objectHandle,
183 ::Scripting::QuickJS::RegisteredClass
const& registeredClass,
184 ::Scripting::LifetimeRegistry& registry
187MCNAPI ::JSValue NativeObjectHandleToJSValue(
189 ::Scripting::ObjectHandle objectHandle,
192 ::Scripting::QuickJS::NativeObjectOwnership ownership
195MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeRegisteredEnumToJSValue(
197 ::entt::meta_any& any,
198 ::Scripting::QuickJS::RegisteredEnum
const& registeredEnum
201MCNAPI ::JSValue PrintError(::JSContext* ctx, ::JSValue,
int argc, ::JSValue* argv);
203MCNAPI ::JSValue PrintInfo(::JSContext* ctx, ::JSValue,
int argc, ::JSValue* argv);
205MCNAPI ::JSValue PrintWarn(::JSContext* ctx, ::JSValue,
int argc, ::JSValue* argv);
207MCNAPI ::JSValue ThrowEngineErrorToJS(::JSContext* ctx, ::std::string
const& msg);
209MCNAPI ::JSValue ThrowJSTypeErrorWithContext(::JSContext*, ::Scripting::QuickJS::ContextUserData&,
char const*, ...);
211MCNAPI ::JSTypedArrayEnum ToJSTypedArrayEnum(::entt::meta_type
const& type);
213MCNAPI ::Scripting::StrongObjectHandle getHandleFromObjectFactory(
215 ::Scripting::QuickJS::ContextUserData& contextData,
216 ::Scripting::ObjectFactory
const& objectFactory
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 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