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; }
28namespace Scripting::Reflection {
class IFunction; }
31namespace Scripting::QuickJS {
34MCNAPI ::JSValue ConvertJSValueArgsToNativeAnys(
36 ::Scripting::Reflection::IFunction* funcPtr,
39 ::std::array<::entt::meta_any, 16>& outArgsAsAnys
42MCNAPI ::JSValue CopyJSValueArrayToNativeSequenceContainer(
45 ::entt::meta_sequence_container& view,
46 ::entt::meta_type
const&
49MCNAPI ::JSValue CopyJSValueObjectToNativeAssociativeContainer(
52 ::entt::meta_associative_container& view,
53 ::entt::meta_type
const&
56MCNAPI ::Scripting::QuickJS::ArrayProxy CreateArrayProxy(::JSContext* ctx);
58MCNAPI ::std::unique_ptr<::Scripting::ClassBinding>
59CreateIteratorReturnClassBinding(::Scripting::IteratorBinding& iteratorBinding);
61MCNAPI ::entt::meta_any ExceptionWriter(::JSContext* ctx);
64GenericFreeFunctionCaller(::JSContext* ctx, ::JSValue argc,
int argv, ::JSValue* funcDataVal,
int, ::JSValue*);
66MCNAPI ::JSValue GenericObjectFunctionCaller(
76GenericReflectionCtorCaller(::JSContext* ctx, ::JSValue newTarget,
int argc, ::JSValue* argv,
int jsClassIdMagic);
79GenericReflectionPropertyGetter(::JSContext* ctx, ::JSValue thisVal,
int funcDataVal, ::JSValue*,
int, ::JSValue*);
82GenericReflectionPropertySetter(::JSContext* ctx, ::JSValue thisVal,
int argv, ::JSValue* funcDataVal,
int, ::JSValue*);
84MCNAPI ::std::string GetClassNameFromJSValue(::JSContext* ctx, ::JSValue target);
86MCNAPI ::Scripting::ObjectHandle GetNativeObjectHandleFromJSValue(::JSValue jsValue);
88MCNAPI ::Scripting::QuickJS::RuntimeUserData* GetRuntimeUserDataFromContext(::JSContext* ctx);
90MCNAPI
void InitializeBakedProperties(
93 ::Scripting::ObjectHandle objectHandle,
94 ::Scripting::QuickJS::ContextUserData* contextData,
95 ::Scripting::QuickJS::RegisteredClass
const* registeredClass
98MCNAPI ::std::string JSAtomCStringToString(::JSContext* ctx, uint jsAtom);
100MCNAPI ::entt::meta_any JSErrorToNativeAny(::JSContext* ctx, ::JSValue jsValue);
102MCNAPI ::std::string JSValueCStringToString(::JSContext* ctx, ::JSValue jsValue);
104MCNAPI ::entt::meta_any JSValueToBaseError(::JSContext* ctx, ::JSValue jsValue);
106MCNAPI ::std::variant<::entt::meta_any, ::JSValue>
107JSValueToNativeAny(::JSContext* ctx, ::JSValue jsValue, ::entt::meta_type
const& type);
109MCNAPI ::std::variant<::entt::meta_any, ::JSValue> JSValueToNativeInterface(
112 ::Scripting::QuickJS::ContextUserData* contextData,
113 ::entt::meta_type
const& type,
114 ::Scripting::InterfaceBinding
const& interfaceBinding
117MCNAPI ::JSValue NativeAnyToJSProtoClass(
120 ::entt::meta_any& any,
121 ::Scripting::QuickJS::RegisteredClass
const& registeredClass,
122 ::Scripting::QuickJS::ContextUserData& contextData
125MCNAPI ::JSValue NativeAnyToJSProtoError(
128 ::entt::meta_any& any,
129 ::Scripting::QuickJS::RegisteredError
const& registeredError,
130 ::Scripting::QuickJS::ContextUserData& contextData
133MCNAPI ::Scripting::QuickJS::ArgConversionResult
134NativeAnyToJSValue(::JSContext* ctx, ::entt::meta_any& any,
bool addRef,
bool allowCopy);
136MCNAPI ::Scripting::QuickJS::ArgConversionResult
137NativeEnumToJSValue(::JSContext* ctx, ::entt::meta_any& any,
bool addRef,
bool allowCopy);
139MCNAPI ::JSValue NativeErrorToJSValue(::JSContext* ctx, ::entt::meta_any& any);
141MCNAPI ::JSValue NativeErrorToJSValueInternal(
143 ::Scripting::QuickJS::ContextUserData& any,
144 ::entt::meta_any& jsClassId,
146 ::Scripting::LifetimeRegistry&
149MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeInterfaceToJSValue(
151 ::entt::meta_any& any,
152 ::Scripting::QuickJS::RegisteredInterface
const& registeredInterface,
157MCNAPI ::JSValue NativeObjectHandleToJSProtoClass(
160 ::Scripting::ObjectHandle objectHandle,
161 ::Scripting::QuickJS::RegisteredClass
const& registeredClass,
162 ::Scripting::LifetimeRegistry& registry
165MCNAPI ::JSValue NativeObjectHandleToJSProtoError(
168 ::Scripting::ObjectHandle objectHandle,
169 ::Scripting::QuickJS::RegisteredError
const& registeredError,
170 ::Scripting::LifetimeRegistry& registry
173MCNAPI ::JSValue NativeObjectHandleToJSValue(
175 ::Scripting::ObjectHandle objectHandle,
178 ::Scripting::QuickJS::NativeObjectOwnership
181MCNAPI ::Scripting::QuickJS::ArgConversionResult NativeRegisteredEnumToJSValue(
183 ::entt::meta_any& any,
184 ::Scripting::QuickJS::RegisteredEnum
const& registeredEnum
187MCNAPI ::JSValue PrintError(::JSContext* ctx, ::JSValue argc,
int argv, ::JSValue*);
189MCNAPI ::JSValue PrintInfo(::JSContext* ctx, ::JSValue argc,
int argv, ::JSValue*);
191MCNAPI ::JSValue PrintWarn(::JSContext* ctx, ::JSValue argc,
int argv, ::JSValue*);
193MCNAPI ::JSValue ThrowEngineErrorToJS(::JSContext* ctx, ::std::string
const& msg);
195MCNAPI ::JSValue ThrowJSTypeErrorWithContext(::JSContext*, ::Scripting::QuickJS::ContextUserData&,
char const*, ...);
197MCNAPI ::JSTypedArrayEnum ToJSTypedArrayEnum(::entt::meta_type
const& type);
199MCNAPI ::std::string WriteObject(::JSContext* ctx, ::JSValue val);
201MCNAPI ::std::optional<::std::string> getAssociativeContainerKeyName(::JSContext* ctx, ::JSValue jsValue, uint idx);
203MCNAPI ::std::optional<::Scripting::StrongObjectHandle> getHandleFromObjectFactory(
205 ::Scripting::QuickJS::ContextUserData& contextData,
206 ::Scripting::ObjectFactory
const& objectFactory
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 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