Skip to content

Commit

Permalink
[unity]更新p-api
Browse files Browse the repository at this point in the history
  • Loading branch information
chexiongsheng committed Sep 13, 2024
1 parent 1dade64 commit 440a470
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 99 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

// Portable Embedded Scripting API

#define PESAPI_VERSION 10
#define PESAPI_VERSION 11

#define PESAPI_EXTERN

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
}
Expand Down
4 changes: 2 additions & 2 deletions unity/native_src_il2cpp/Inc/PesapiBackend.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,13 +181,13 @@ struct API
for (const auto& prop : Cdb.properties_)
{
pesapi_set_property_info(properties, pos++, prop.Name, false, reinterpret_cast<FunctionCallbackType>(prop.Getter),
reinterpret_cast<FunctionCallbackType>(prop.Setter), nullptr, nullptr);
reinterpret_cast<FunctionCallbackType>(prop.Setter), nullptr, nullptr, nullptr);
}

for (const auto& prop : Cdb.variables_)
{
pesapi_set_property_info(properties, pos++, prop.Name, true, reinterpret_cast<FunctionCallbackType>(prop.Getter),
reinterpret_cast<FunctionCallbackType>(prop.Setter), nullptr, nullptr);
reinterpret_cast<FunctionCallbackType>(prop.Setter), nullptr, nullptr, nullptr);
}

pesapi_finalize finalize = Finalize;
Expand Down
4 changes: 2 additions & 2 deletions unity/native_src_il2cpp/Inc/V8Backend.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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_);
Expand Down
5 changes: 3 additions & 2 deletions unity/native_src_il2cpp/Inc/pesapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

// Portable Embedded Scripting API

#define PESAPI_VERSION 10
#define PESAPI_VERSION 11

#define PESAPI_EXTERN

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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,
Expand Down
Loading

0 comments on commit 440a470

Please sign in to comment.