diff --git a/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi.h.txt b/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi.h.txt index da7899da92..9ec81ac52d 100644 --- a/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi.h.txt +++ b/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi.h.txt @@ -15,7 +15,7 @@ // Portable Embedded Scripting API -#define PESAPI_VERSION 10 +#define PESAPI_VERSION 11 #define PESAPI_EXTERN @@ -141,6 +141,7 @@ PESAPI_EXTERN pesapi_value pesapi_create_double(pesapi_env env, double value); PESAPI_EXTERN pesapi_value pesapi_create_string_utf8(pesapi_env env, const char* str, size_t length); PESAPI_EXTERN pesapi_value pesapi_create_binary(pesapi_env env, void* str, size_t length); PESAPI_EXTERN pesapi_value pesapi_create_array(pesapi_env env); +PESAPI_EXTERN pesapi_value pesapi_create_object(pesapi_env env); PESAPI_EXTERN bool pesapi_get_value_bool(pesapi_env env, pesapi_value value); PESAPI_EXTERN int32_t pesapi_get_value_int32(pesapi_env env, pesapi_value value); @@ -230,7 +231,7 @@ PESAPI_EXTERN void pesapi_set_method_info(pesapi_property_descriptor properties, pesapi_callback method, void* userdata, pesapi_signature_info signature_info); PESAPI_EXTERN void pesapi_set_property_info(pesapi_property_descriptor properties, size_t index, const char* name, bool is_static, - pesapi_callback getter, pesapi_callback setter, void* userdata, pesapi_type_info type_info); + pesapi_callback getter, pesapi_callback setter, void* getter_userdata, void* setter_userdata, pesapi_type_info type_info); PESAPI_EXTERN void pesapi_define_class(const void* type_id, const void* super_type_id, const char* type_name, pesapi_constructor constructor, pesapi_finalize finalize, size_t property_count, pesapi_property_descriptor properties, diff --git a/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi_adpt.c.txt b/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi_adpt.c.txt index a7e4ad999b..9536de98b1 100644 --- a/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi_adpt.c.txt +++ b/unity/Assets/core/upm/Editor/Resources/puerts/xil2cpp/pesapi_adpt.c.txt @@ -82,6 +82,12 @@ pesapi_value pesapi_create_array (pesapi_env env) { return pesapi_create_array_ptr(env); } +typedef pesapi_value (*pesapi_create_objectType)(pesapi_env env); +static pesapi_create_objectType pesapi_create_object_ptr; +pesapi_value pesapi_create_object (pesapi_env env) { + return pesapi_create_object_ptr(env); +} + typedef bool (*pesapi_get_value_boolType)(pesapi_env env, pesapi_value value); static pesapi_get_value_boolType pesapi_get_value_bool_ptr; bool pesapi_get_value_bool (pesapi_env env, pesapi_value value) { @@ -466,10 +472,10 @@ void pesapi_set_method_info (pesapi_property_descriptor properties, size_t index pesapi_set_method_info_ptr(properties, index, name, is_static, method, userdata, signature_info); } -typedef void (*pesapi_set_property_infoType)(pesapi_property_descriptor properties, size_t index, const char* name, bool is_static,pesapi_callback getter, pesapi_callback setter, void* userdata, pesapi_type_info type_info); +typedef void (*pesapi_set_property_infoType)(pesapi_property_descriptor properties, size_t index, const char* name, bool is_static,pesapi_callback getter, pesapi_callback setter, void* getter_userdata, void* setter_userdata, pesapi_type_info type_info); static pesapi_set_property_infoType pesapi_set_property_info_ptr; -void pesapi_set_property_info (pesapi_property_descriptor properties, size_t index, const char* name, bool is_static,pesapi_callback getter, pesapi_callback setter, void* userdata, pesapi_type_info type_info) { - pesapi_set_property_info_ptr(properties, index, name, is_static, getter, setter, userdata, type_info); +void pesapi_set_property_info (pesapi_property_descriptor properties, size_t index, const char* name, bool is_static,pesapi_callback getter, pesapi_callback setter, void* getter_userdata, void* setter_userdata, pesapi_type_info type_info) { + pesapi_set_property_info_ptr(properties, index, name, is_static, getter, setter, getter_userdata, setter_userdata, type_info); } typedef void (*pesapi_define_classType)(const void* type_id, const void* super_type_id, const char* type_name,pesapi_constructor constructor, pesapi_finalize finalize, size_t property_count, pesapi_property_descriptor properties,void* userdata); @@ -506,74 +512,75 @@ void pesapi_init(pesapi_func_ptr* func_array){ pesapi_create_string_utf8_ptr = (pesapi_create_string_utf8Type)func_array[8]; pesapi_create_binary_ptr = (pesapi_create_binaryType)func_array[9]; pesapi_create_array_ptr = (pesapi_create_arrayType)func_array[10]; - pesapi_get_value_bool_ptr = (pesapi_get_value_boolType)func_array[11]; - pesapi_get_value_int32_ptr = (pesapi_get_value_int32Type)func_array[12]; - pesapi_get_value_uint32_ptr = (pesapi_get_value_uint32Type)func_array[13]; - pesapi_get_value_int64_ptr = (pesapi_get_value_int64Type)func_array[14]; - pesapi_get_value_uint64_ptr = (pesapi_get_value_uint64Type)func_array[15]; - pesapi_get_value_double_ptr = (pesapi_get_value_doubleType)func_array[16]; - pesapi_get_value_string_utf8_ptr = (pesapi_get_value_string_utf8Type)func_array[17]; - pesapi_get_value_binary_ptr = (pesapi_get_value_binaryType)func_array[18]; - pesapi_get_array_length_ptr = (pesapi_get_array_lengthType)func_array[19]; - pesapi_is_null_ptr = (pesapi_is_nullType)func_array[20]; - pesapi_is_undefined_ptr = (pesapi_is_undefinedType)func_array[21]; - pesapi_is_boolean_ptr = (pesapi_is_booleanType)func_array[22]; - pesapi_is_int32_ptr = (pesapi_is_int32Type)func_array[23]; - pesapi_is_uint32_ptr = (pesapi_is_uint32Type)func_array[24]; - pesapi_is_int64_ptr = (pesapi_is_int64Type)func_array[25]; - pesapi_is_uint64_ptr = (pesapi_is_uint64Type)func_array[26]; - pesapi_is_double_ptr = (pesapi_is_doubleType)func_array[27]; - pesapi_is_string_ptr = (pesapi_is_stringType)func_array[28]; - pesapi_is_object_ptr = (pesapi_is_objectType)func_array[29]; - pesapi_is_function_ptr = (pesapi_is_functionType)func_array[30]; - pesapi_is_binary_ptr = (pesapi_is_binaryType)func_array[31]; - pesapi_is_array_ptr = (pesapi_is_arrayType)func_array[32]; - pesapi_native_object_to_value_ptr = (pesapi_native_object_to_valueType)func_array[33]; - pesapi_get_native_object_ptr_ptr = (pesapi_get_native_object_ptrType)func_array[34]; - pesapi_get_native_object_typeid_ptr = (pesapi_get_native_object_typeidType)func_array[35]; - pesapi_is_instance_of_ptr = (pesapi_is_instance_ofType)func_array[36]; - pesapi_boxing_ptr = (pesapi_boxingType)func_array[37]; - pesapi_unboxing_ptr = (pesapi_unboxingType)func_array[38]; - pesapi_update_boxed_value_ptr = (pesapi_update_boxed_valueType)func_array[39]; - pesapi_is_boxed_value_ptr = (pesapi_is_boxed_valueType)func_array[40]; - pesapi_get_args_len_ptr = (pesapi_get_args_lenType)func_array[41]; - pesapi_get_arg_ptr = (pesapi_get_argType)func_array[42]; - pesapi_get_env_ptr = (pesapi_get_envType)func_array[43]; - pesapi_get_this_ptr = (pesapi_get_thisType)func_array[44]; - pesapi_get_holder_ptr = (pesapi_get_holderType)func_array[45]; - pesapi_get_userdata_ptr = (pesapi_get_userdataType)func_array[46]; - pesapi_get_constructor_userdata_ptr = (pesapi_get_constructor_userdataType)func_array[47]; - pesapi_add_return_ptr = (pesapi_add_returnType)func_array[48]; - pesapi_throw_by_string_ptr = (pesapi_throw_by_stringType)func_array[49]; - pesapi_create_env_ref_ptr = (pesapi_create_env_refType)func_array[50]; - pesapi_get_env_from_ref_ptr = (pesapi_get_env_from_refType)func_array[51]; - pesapi_duplicate_env_ref_ptr = (pesapi_duplicate_env_refType)func_array[52]; - pesapi_release_env_ref_ptr = (pesapi_release_env_refType)func_array[53]; - pesapi_open_scope_ptr = (pesapi_open_scopeType)func_array[54]; - pesapi_has_caught_ptr = (pesapi_has_caughtType)func_array[55]; - pesapi_get_exception_as_string_ptr = (pesapi_get_exception_as_stringType)func_array[56]; - pesapi_close_scope_ptr = (pesapi_close_scopeType)func_array[57]; - pesapi_create_value_ref_ptr = (pesapi_create_value_refType)func_array[58]; - pesapi_duplicate_value_ref_ptr = (pesapi_duplicate_value_refType)func_array[59]; - pesapi_release_value_ref_ptr = (pesapi_release_value_refType)func_array[60]; - pesapi_get_value_from_ref_ptr = (pesapi_get_value_from_refType)func_array[61]; - pesapi_set_ref_weak_ptr = (pesapi_set_ref_weakType)func_array[62]; - pesapi_set_owner_ptr = (pesapi_set_ownerType)func_array[63]; - pesapi_get_property_ptr = (pesapi_get_propertyType)func_array[64]; - pesapi_set_property_ptr = (pesapi_set_propertyType)func_array[65]; - pesapi_get_property_uint32_ptr = (pesapi_get_property_uint32Type)func_array[66]; - pesapi_set_property_uint32_ptr = (pesapi_set_property_uint32Type)func_array[67]; - pesapi_call_function_ptr = (pesapi_call_functionType)func_array[68]; - pesapi_eval_ptr = (pesapi_evalType)func_array[69]; - pesapi_alloc_type_infos_ptr = (pesapi_alloc_type_infosType)func_array[70]; - pesapi_set_type_info_ptr = (pesapi_set_type_infoType)func_array[71]; - pesapi_create_signature_info_ptr = (pesapi_create_signature_infoType)func_array[72]; - pesapi_alloc_property_descriptors_ptr = (pesapi_alloc_property_descriptorsType)func_array[73]; - pesapi_set_method_info_ptr = (pesapi_set_method_infoType)func_array[74]; - pesapi_set_property_info_ptr = (pesapi_set_property_infoType)func_array[75]; - pesapi_define_class_ptr = (pesapi_define_classType)func_array[76]; - pesapi_class_type_info_ptr = (pesapi_class_type_infoType)func_array[77]; - pesapi_find_type_id_ptr = (pesapi_find_type_idType)func_array[78]; + pesapi_create_object_ptr = (pesapi_create_objectType)func_array[11]; + pesapi_get_value_bool_ptr = (pesapi_get_value_boolType)func_array[12]; + pesapi_get_value_int32_ptr = (pesapi_get_value_int32Type)func_array[13]; + pesapi_get_value_uint32_ptr = (pesapi_get_value_uint32Type)func_array[14]; + pesapi_get_value_int64_ptr = (pesapi_get_value_int64Type)func_array[15]; + pesapi_get_value_uint64_ptr = (pesapi_get_value_uint64Type)func_array[16]; + pesapi_get_value_double_ptr = (pesapi_get_value_doubleType)func_array[17]; + pesapi_get_value_string_utf8_ptr = (pesapi_get_value_string_utf8Type)func_array[18]; + pesapi_get_value_binary_ptr = (pesapi_get_value_binaryType)func_array[19]; + pesapi_get_array_length_ptr = (pesapi_get_array_lengthType)func_array[20]; + pesapi_is_null_ptr = (pesapi_is_nullType)func_array[21]; + pesapi_is_undefined_ptr = (pesapi_is_undefinedType)func_array[22]; + pesapi_is_boolean_ptr = (pesapi_is_booleanType)func_array[23]; + pesapi_is_int32_ptr = (pesapi_is_int32Type)func_array[24]; + pesapi_is_uint32_ptr = (pesapi_is_uint32Type)func_array[25]; + pesapi_is_int64_ptr = (pesapi_is_int64Type)func_array[26]; + pesapi_is_uint64_ptr = (pesapi_is_uint64Type)func_array[27]; + pesapi_is_double_ptr = (pesapi_is_doubleType)func_array[28]; + pesapi_is_string_ptr = (pesapi_is_stringType)func_array[29]; + pesapi_is_object_ptr = (pesapi_is_objectType)func_array[30]; + pesapi_is_function_ptr = (pesapi_is_functionType)func_array[31]; + pesapi_is_binary_ptr = (pesapi_is_binaryType)func_array[32]; + pesapi_is_array_ptr = (pesapi_is_arrayType)func_array[33]; + pesapi_native_object_to_value_ptr = (pesapi_native_object_to_valueType)func_array[34]; + pesapi_get_native_object_ptr_ptr = (pesapi_get_native_object_ptrType)func_array[35]; + pesapi_get_native_object_typeid_ptr = (pesapi_get_native_object_typeidType)func_array[36]; + pesapi_is_instance_of_ptr = (pesapi_is_instance_ofType)func_array[37]; + pesapi_boxing_ptr = (pesapi_boxingType)func_array[38]; + pesapi_unboxing_ptr = (pesapi_unboxingType)func_array[39]; + pesapi_update_boxed_value_ptr = (pesapi_update_boxed_valueType)func_array[40]; + pesapi_is_boxed_value_ptr = (pesapi_is_boxed_valueType)func_array[41]; + pesapi_get_args_len_ptr = (pesapi_get_args_lenType)func_array[42]; + pesapi_get_arg_ptr = (pesapi_get_argType)func_array[43]; + pesapi_get_env_ptr = (pesapi_get_envType)func_array[44]; + pesapi_get_this_ptr = (pesapi_get_thisType)func_array[45]; + pesapi_get_holder_ptr = (pesapi_get_holderType)func_array[46]; + pesapi_get_userdata_ptr = (pesapi_get_userdataType)func_array[47]; + pesapi_get_constructor_userdata_ptr = (pesapi_get_constructor_userdataType)func_array[48]; + pesapi_add_return_ptr = (pesapi_add_returnType)func_array[49]; + pesapi_throw_by_string_ptr = (pesapi_throw_by_stringType)func_array[50]; + pesapi_create_env_ref_ptr = (pesapi_create_env_refType)func_array[51]; + pesapi_get_env_from_ref_ptr = (pesapi_get_env_from_refType)func_array[52]; + pesapi_duplicate_env_ref_ptr = (pesapi_duplicate_env_refType)func_array[53]; + pesapi_release_env_ref_ptr = (pesapi_release_env_refType)func_array[54]; + pesapi_open_scope_ptr = (pesapi_open_scopeType)func_array[55]; + pesapi_has_caught_ptr = (pesapi_has_caughtType)func_array[56]; + pesapi_get_exception_as_string_ptr = (pesapi_get_exception_as_stringType)func_array[57]; + pesapi_close_scope_ptr = (pesapi_close_scopeType)func_array[58]; + pesapi_create_value_ref_ptr = (pesapi_create_value_refType)func_array[59]; + pesapi_duplicate_value_ref_ptr = (pesapi_duplicate_value_refType)func_array[60]; + pesapi_release_value_ref_ptr = (pesapi_release_value_refType)func_array[61]; + pesapi_get_value_from_ref_ptr = (pesapi_get_value_from_refType)func_array[62]; + pesapi_set_ref_weak_ptr = (pesapi_set_ref_weakType)func_array[63]; + pesapi_set_owner_ptr = (pesapi_set_ownerType)func_array[64]; + pesapi_get_property_ptr = (pesapi_get_propertyType)func_array[65]; + pesapi_set_property_ptr = (pesapi_set_propertyType)func_array[66]; + pesapi_get_property_uint32_ptr = (pesapi_get_property_uint32Type)func_array[67]; + pesapi_set_property_uint32_ptr = (pesapi_set_property_uint32Type)func_array[68]; + pesapi_call_function_ptr = (pesapi_call_functionType)func_array[69]; + pesapi_eval_ptr = (pesapi_evalType)func_array[70]; + pesapi_alloc_type_infos_ptr = (pesapi_alloc_type_infosType)func_array[71]; + pesapi_set_type_info_ptr = (pesapi_set_type_infoType)func_array[72]; + pesapi_create_signature_info_ptr = (pesapi_create_signature_infoType)func_array[73]; + pesapi_alloc_property_descriptors_ptr = (pesapi_alloc_property_descriptorsType)func_array[74]; + pesapi_set_method_info_ptr = (pesapi_set_method_infoType)func_array[75]; + pesapi_set_property_info_ptr = (pesapi_set_property_infoType)func_array[76]; + pesapi_define_class_ptr = (pesapi_define_classType)func_array[77]; + pesapi_class_type_info_ptr = (pesapi_class_type_infoType)func_array[78]; + pesapi_find_type_id_ptr = (pesapi_find_type_idType)func_array[79]; #endif } diff --git a/unity/native_src_il2cpp/Inc/PesapiBackend.hpp b/unity/native_src_il2cpp/Inc/PesapiBackend.hpp index 2f7ab9268a..83382b2535 100644 --- a/unity/native_src_il2cpp/Inc/PesapiBackend.hpp +++ b/unity/native_src_il2cpp/Inc/PesapiBackend.hpp @@ -181,13 +181,13 @@ struct API for (const auto& prop : Cdb.properties_) { pesapi_set_property_info(properties, pos++, prop.Name, false, reinterpret_cast(prop.Getter), - reinterpret_cast(prop.Setter), nullptr, nullptr); + reinterpret_cast(prop.Setter), nullptr, nullptr, nullptr); } for (const auto& prop : Cdb.variables_) { pesapi_set_property_info(properties, pos++, prop.Name, true, reinterpret_cast(prop.Getter), - reinterpret_cast(prop.Setter), nullptr, nullptr); + reinterpret_cast(prop.Setter), nullptr, nullptr, nullptr); } pesapi_finalize finalize = Finalize; diff --git a/unity/native_src_il2cpp/Inc/V8Backend.hpp b/unity/native_src_il2cpp/Inc/V8Backend.hpp index da3f554326..33de8141c7 100644 --- a/unity/native_src_il2cpp/Inc/V8Backend.hpp +++ b/unity/native_src_il2cpp/Inc/V8Backend.hpp @@ -187,11 +187,11 @@ struct API ClassDef.Methods = s_methods_.data(); s_properties_ = std::move(Cdb.properties_); - s_properties_.push_back(JSPropertyInfo{nullptr, nullptr, nullptr, nullptr}); + s_properties_.push_back(JSPropertyInfo{nullptr, nullptr, nullptr, nullptr, nullptr}); ClassDef.Properties = s_properties_.data(); s_variables_ = std::move(Cdb.variables_); - s_variables_.push_back(JSPropertyInfo{nullptr, nullptr, nullptr, nullptr}); + s_variables_.push_back(JSPropertyInfo{nullptr, nullptr, nullptr, nullptr, nullptr}); ClassDef.Variables = s_variables_.data(); s_constructorInfos_ = std::move(Cdb.constructorInfos_); diff --git a/unity/native_src_il2cpp/Inc/pesapi.h b/unity/native_src_il2cpp/Inc/pesapi.h index da7899da92..9ec81ac52d 100644 --- a/unity/native_src_il2cpp/Inc/pesapi.h +++ b/unity/native_src_il2cpp/Inc/pesapi.h @@ -15,7 +15,7 @@ // Portable Embedded Scripting API -#define PESAPI_VERSION 10 +#define PESAPI_VERSION 11 #define PESAPI_EXTERN @@ -141,6 +141,7 @@ PESAPI_EXTERN pesapi_value pesapi_create_double(pesapi_env env, double value); PESAPI_EXTERN pesapi_value pesapi_create_string_utf8(pesapi_env env, const char* str, size_t length); PESAPI_EXTERN pesapi_value pesapi_create_binary(pesapi_env env, void* str, size_t length); PESAPI_EXTERN pesapi_value pesapi_create_array(pesapi_env env); +PESAPI_EXTERN pesapi_value pesapi_create_object(pesapi_env env); PESAPI_EXTERN bool pesapi_get_value_bool(pesapi_env env, pesapi_value value); PESAPI_EXTERN int32_t pesapi_get_value_int32(pesapi_env env, pesapi_value value); @@ -230,7 +231,7 @@ PESAPI_EXTERN void pesapi_set_method_info(pesapi_property_descriptor properties, pesapi_callback method, void* userdata, pesapi_signature_info signature_info); PESAPI_EXTERN void pesapi_set_property_info(pesapi_property_descriptor properties, size_t index, const char* name, bool is_static, - pesapi_callback getter, pesapi_callback setter, void* userdata, pesapi_type_info type_info); + pesapi_callback getter, pesapi_callback setter, void* getter_userdata, void* setter_userdata, pesapi_type_info type_info); PESAPI_EXTERN void pesapi_define_class(const void* type_id, const void* super_type_id, const char* type_name, pesapi_constructor constructor, pesapi_finalize finalize, size_t property_count, pesapi_property_descriptor properties, diff --git a/unity/native_src_il2cpp/Src/PesapiAddonLoad.cpp b/unity/native_src_il2cpp/Src/PesapiAddonLoad.cpp index 2aff8937d2..a4ad06bd3b 100644 --- a/unity/native_src_il2cpp/Src/PesapiAddonLoad.cpp +++ b/unity/native_src_il2cpp/Src/PesapiAddonLoad.cpp @@ -40,19 +40,20 @@ static pesapi_func_ptr funcs[] = {(pesapi_func_ptr) &pesapi_create_null, (pesapi (pesapi_func_ptr) &pesapi_create_boolean, (pesapi_func_ptr) &pesapi_create_int32, (pesapi_func_ptr) &pesapi_create_uint32, (pesapi_func_ptr) &pesapi_create_int64, (pesapi_func_ptr) &pesapi_create_uint64, (pesapi_func_ptr) &pesapi_create_double, (pesapi_func_ptr) &pesapi_create_string_utf8, (pesapi_func_ptr) &pesapi_create_binary, (pesapi_func_ptr) &pesapi_create_array, - (pesapi_func_ptr) &pesapi_get_value_bool, (pesapi_func_ptr) &pesapi_get_value_int32, (pesapi_func_ptr) &pesapi_get_value_uint32, - (pesapi_func_ptr) &pesapi_get_value_int64, (pesapi_func_ptr) &pesapi_get_value_uint64, - (pesapi_func_ptr) &pesapi_get_value_double, (pesapi_func_ptr) &pesapi_get_value_string_utf8, - (pesapi_func_ptr) &pesapi_get_value_binary, (pesapi_func_ptr) &pesapi_get_array_length, (pesapi_func_ptr) &pesapi_is_null, - (pesapi_func_ptr) &pesapi_is_undefined, (pesapi_func_ptr) &pesapi_is_boolean, (pesapi_func_ptr) &pesapi_is_int32, - (pesapi_func_ptr) &pesapi_is_uint32, (pesapi_func_ptr) &pesapi_is_int64, (pesapi_func_ptr) &pesapi_is_uint64, - (pesapi_func_ptr) &pesapi_is_double, (pesapi_func_ptr) &pesapi_is_string, (pesapi_func_ptr) &pesapi_is_object, - (pesapi_func_ptr) &pesapi_is_function, (pesapi_func_ptr) &pesapi_is_binary, (pesapi_func_ptr) &pesapi_is_array, - (pesapi_func_ptr) &pesapi_native_object_to_value, (pesapi_func_ptr) &pesapi_get_native_object_ptr, - (pesapi_func_ptr) &pesapi_get_native_object_typeid, (pesapi_func_ptr) &pesapi_is_instance_of, (pesapi_func_ptr) &pesapi_boxing, - (pesapi_func_ptr) &pesapi_unboxing, (pesapi_func_ptr) &pesapi_update_boxed_value, (pesapi_func_ptr) &pesapi_is_boxed_value, - (pesapi_func_ptr) &pesapi_get_args_len, (pesapi_func_ptr) &pesapi_get_arg, (pesapi_func_ptr) &pesapi_get_env, - (pesapi_func_ptr) &pesapi_get_this, (pesapi_func_ptr) &pesapi_get_holder, (pesapi_func_ptr) &pesapi_get_userdata, + (pesapi_func_ptr) &pesapi_create_object, (pesapi_func_ptr) &pesapi_get_value_bool, (pesapi_func_ptr) &pesapi_get_value_int32, + (pesapi_func_ptr) &pesapi_get_value_uint32, (pesapi_func_ptr) &pesapi_get_value_int64, + (pesapi_func_ptr) &pesapi_get_value_uint64, (pesapi_func_ptr) &pesapi_get_value_double, + (pesapi_func_ptr) &pesapi_get_value_string_utf8, (pesapi_func_ptr) &pesapi_get_value_binary, + (pesapi_func_ptr) &pesapi_get_array_length, (pesapi_func_ptr) &pesapi_is_null, (pesapi_func_ptr) &pesapi_is_undefined, + (pesapi_func_ptr) &pesapi_is_boolean, (pesapi_func_ptr) &pesapi_is_int32, (pesapi_func_ptr) &pesapi_is_uint32, + (pesapi_func_ptr) &pesapi_is_int64, (pesapi_func_ptr) &pesapi_is_uint64, (pesapi_func_ptr) &pesapi_is_double, + (pesapi_func_ptr) &pesapi_is_string, (pesapi_func_ptr) &pesapi_is_object, (pesapi_func_ptr) &pesapi_is_function, + (pesapi_func_ptr) &pesapi_is_binary, (pesapi_func_ptr) &pesapi_is_array, (pesapi_func_ptr) &pesapi_native_object_to_value, + (pesapi_func_ptr) &pesapi_get_native_object_ptr, (pesapi_func_ptr) &pesapi_get_native_object_typeid, + (pesapi_func_ptr) &pesapi_is_instance_of, (pesapi_func_ptr) &pesapi_boxing, (pesapi_func_ptr) &pesapi_unboxing, + (pesapi_func_ptr) &pesapi_update_boxed_value, (pesapi_func_ptr) &pesapi_is_boxed_value, (pesapi_func_ptr) &pesapi_get_args_len, + (pesapi_func_ptr) &pesapi_get_arg, (pesapi_func_ptr) &pesapi_get_env, (pesapi_func_ptr) &pesapi_get_this, + (pesapi_func_ptr) &pesapi_get_holder, (pesapi_func_ptr) &pesapi_get_userdata, (pesapi_func_ptr) &pesapi_get_constructor_userdata, (pesapi_func_ptr) &pesapi_add_return, (pesapi_func_ptr) &pesapi_throw_by_string, (pesapi_func_ptr) &pesapi_create_env_ref, (pesapi_func_ptr) &pesapi_get_env_from_ref, (pesapi_func_ptr) &pesapi_duplicate_env_ref, (pesapi_func_ptr) &pesapi_release_env_ref, (pesapi_func_ptr) &pesapi_open_scope, diff --git a/unity/native_src_il2cpp/Src/PesapiV8Impl.cpp b/unity/native_src_il2cpp/Src/PesapiV8Impl.cpp index 488b8982d9..960bb41745 100644 --- a/unity/native_src_il2cpp/Src/PesapiV8Impl.cpp +++ b/unity/native_src_il2cpp/Src/PesapiV8Impl.cpp @@ -150,6 +150,12 @@ pesapi_value pesapi_create_array(pesapi_env env) return v8impl::PesapiValueFromV8LocalValue(v8::Array::New(context->GetIsolate())); } +pesapi_value pesapi_create_object(pesapi_env env) +{ + auto context = v8impl::V8LocalContextFromPesapiEnv(env); + return v8impl::PesapiValueFromV8LocalValue(v8::Object::New(context->GetIsolate())); +} + bool pesapi_get_value_bool(pesapi_env env, pesapi_value pvalue) { auto context = v8impl::V8LocalContextFromPesapiEnv(env); @@ -704,7 +710,8 @@ struct pesapi_property_descriptor__ pesapi_callback method; pesapi_callback getter; pesapi_callback setter; - void* data; + void* data0; + void* data1; union { @@ -745,18 +752,19 @@ void pesapi_set_method_info(pesapi_property_descriptor properties, size_t index, properties[index].name = name; properties[index].is_static = is_static; properties[index].method = method; - properties[index].data = data; + properties[index].data0 = data; properties[index].info.signature_info = signature_info; } void pesapi_set_property_info(pesapi_property_descriptor properties, size_t index, const char* name, bool is_static, - pesapi_callback getter, pesapi_callback setter, void* data, pesapi_type_info type_info) + pesapi_callback getter, pesapi_callback setter, void* getter_userdata, void* setter_userdata, pesapi_type_info type_info) { properties[index].name = name; properties[index].is_static = is_static; properties[index].getter = getter; properties[index].setter = setter; - properties[index].data = data; + properties[index].data0 = getter_userdata; + properties[index].data1 = setter_userdata; properties[index].info.type_info = type_info; } @@ -838,17 +846,17 @@ void pesapi_define_class(const void* type_id, const void* super_type_id, const c if (p->is_static) { p_variables.push_back({p->name, reinterpret_cast(p->getter), - reinterpret_cast(p->setter), p->data}); + reinterpret_cast(p->setter), p->data0, p->data1}); } else { p_properties.push_back({p->name, reinterpret_cast(p->getter), - reinterpret_cast(p->setter), p->data}); + reinterpret_cast(p->setter), p->data0, p->data1}); } } else if (p->method != nullptr) { - puerts::JSFunctionInfo finfo{p->name, reinterpret_cast(p->method), p->data}; + puerts::JSFunctionInfo finfo{p->name, reinterpret_cast(p->method), p->data0}; if (p->is_static) { p_functions.push_back(finfo);