Skip to content

Commit 889316a

Browse files
committed
用更标准的调用注册api的方式
1 parent d42219d commit 889316a

1 file changed

Lines changed: 30 additions & 49 deletions

File tree

‎unity/native/papi-python/test/papi_py_base_test.cpp‎

Lines changed: 30 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,15 @@
55
#include "TypeInfo.hpp"
66
#include "PString.h"
77

8-
namespace pesapi
9-
{
10-
namespace regimpl
11-
{
12-
pesapi_registry pesapi_create_registry();
13-
pesapi_type_info pesapi_alloc_type_infos(size_t count);
14-
void pesapi_set_type_info(
15-
pesapi_type_info type_infos, size_t index, const char* name, int is_pointer, int is_const, int is_ref, int is_primitive);
16-
pesapi_signature_info pesapi_create_signature_info(
17-
pesapi_type_info return_type, size_t parameter_count, pesapi_type_info parameter_types);
18-
const char* str_dup(const char* str);
19-
void pesapi_define_class(pesapi_registry registry, const void* type_id, const void* super_type_id, const char* module_name,
20-
const char* type_name, pesapi_constructor constructor, pesapi_finalize finalize, void* data, int copy_str);
21-
void pesapi_set_property_info_size(
22-
pesapi_registry registry, const void* type_id, int method_count, int function_count, int property_count, int variable_count);
23-
void pesapi_set_method_info(pesapi_registry registry, const void* type_id, int index, const char* name, int is_static,
24-
pesapi_callback method, void* data, int copy_str);
25-
void pesapi_set_property_info(pesapi_registry registry, const void* type_id, int index, const char* name, int is_static,
26-
pesapi_callback getter, pesapi_callback setter, void* getter_data, void* setter_data, int copy_str);
27-
void* pesapi_get_class_data(pesapi_registry _registry, const void* type_id, int force_load);
28-
void pesapi_on_class_not_found(pesapi_registry registry, pesapi_class_not_found_callback callback);
29-
void pesapi_class_type_info(pesapi_registry registry, const char* proto_magic_id, const void* type_id, const void* constructor_info,
30-
const void* methods_info, const void* functions_info, const void* properties_info, const void* variables_info);
31-
const void* pesapi_find_type_id(pesapi_registry registry, const char* module_name, const char* type_name);
32-
int pesapi_trace_native_object_lifecycle(
33-
pesapi_registry registry, const void* type_id, pesapi_on_native_object_enter on_enter, pesapi_on_native_object_exit on_exit);
34-
} // namespace regimpl
35-
} // namespace pesapi
8+
#ifdef __cplusplus
9+
extern "C" {
10+
#endif
11+
12+
pesapi_registry_api* GetRegisterApi();
13+
14+
#ifdef __cplusplus
15+
}
16+
#endif
3617

3718
namespace pesapi
3819
{
@@ -239,11 +220,11 @@ class PApiBaseTest : public ::testing::Test
239220
// 封装TestStructBase
240221
const int base_properties_count = 2;
241222

242-
registry = regimpl::pesapi_create_registry();
243-
regimpl::pesapi_set_property_info_size(registry, &g_dummy_base_type_id, 1, 0, base_properties_count, 0);
244-
regimpl::pesapi_set_property_info(registry, &g_dummy_base_type_id, 0, "b", false, BGetterWrap, BSetterWrap, NULL, NULL, 1);
245-
regimpl::pesapi_set_method_info(registry, &g_dummy_base_type_id, 1, "Foo", false, BaseFooWrap, NULL, false);
246-
regimpl::pesapi_define_class(registry,&g_dummy_base_type_id, nullptr,nullptr ,baseTypeName,
223+
registry = GetRegisterApi()->create_registry();
224+
GetRegisterApi()->set_property_info_size(registry, &g_dummy_base_type_id, 1, 0, base_properties_count, 0);
225+
GetRegisterApi()->set_property_info(registry, &g_dummy_base_type_id, 0, "b", false, BGetterWrap, BSetterWrap, NULL, NULL, 1);
226+
GetRegisterApi()->set_method_info(registry, &g_dummy_base_type_id, 1, "Foo", false, BaseFooWrap, NULL, false);
227+
GetRegisterApi()->define_class(registry,&g_dummy_base_type_id, nullptr,nullptr ,baseTypeName,
247228
[](struct pesapi_ffi* apis, pesapi_callback_info info) -> void* { // Ctor
248229
auto env = apis->get_env(info);
249230
auto p0 = apis->get_arg(info, 0);
@@ -256,19 +237,19 @@ class PApiBaseTest : public ::testing::Test
256237

257238
// 封装TestStruct
258239
const int properties_count = 6;
259-
regimpl::pesapi_set_property_info_size(registry, typeName, 3, 0, properties_count, 0);
260-
regimpl::pesapi_set_method_info(registry, &g_dummy_type_id, 0, "Add", true, AddWrap, NULL, NULL);
261-
regimpl::pesapi_set_method_info(registry, &g_dummy_type_id, 1, "Calc", false, CalcWrap, NULL, NULL);
262-
regimpl::pesapi_set_property_info(registry, &g_dummy_type_id, 2, "a", false, AGetterWrap, ASetterWrap, NULL, NULL, NULL);
263-
regimpl::pesapi_set_property_info(
240+
GetRegisterApi()->set_property_info_size(registry, typeName, 3, 0, properties_count, 0);
241+
GetRegisterApi()->set_method_info(registry, &g_dummy_type_id, 0, "Add", true, AddWrap, NULL, NULL);
242+
GetRegisterApi()->set_method_info(registry, &g_dummy_type_id, 1, "Calc", false, CalcWrap, NULL, NULL);
243+
GetRegisterApi()->set_property_info(registry, &g_dummy_type_id, 2, "a", false, AGetterWrap, ASetterWrap, NULL, NULL, NULL);
244+
GetRegisterApi()->set_property_info(
264245
registry, &g_dummy_type_id, 3, "ctor_count", true, CtorCountGetterWrap, CtorCountSetterWrap, NULL, NULL, NULL);
265-
regimpl::pesapi_set_method_info(registry, &g_dummy_type_id, 4, "GetSelf", false, GetSelfWrap, NULL, NULL);
266-
regimpl::pesapi_set_method_info(registry, &g_dummy_type_id, 5, "Inc", false, IncWrap, NULL, NULL);
267-
regimpl::pesapi_define_class(registry, &g_dummy_type_id, &g_dummy_base_type_id, nullptr, typeName, TestStructCtor,
246+
GetRegisterApi()->set_method_info(registry, &g_dummy_type_id, 4, "GetSelf", false, GetSelfWrap, NULL, NULL);
247+
GetRegisterApi()->set_method_info(registry, &g_dummy_type_id, 5, "Inc", false, IncWrap, NULL, NULL);
248+
GetRegisterApi()->define_class(registry, &g_dummy_type_id, &g_dummy_base_type_id, nullptr, typeName, TestStructCtor,
268249
TestStructFinalize, nullptr, false);
269250

270-
regimpl::pesapi_trace_native_object_lifecycle(registry, baseTypeName, OnObjEnter, OnObjExit);
271-
regimpl::pesapi_trace_native_object_lifecycle(registry, typeName, OnObjEnter, OnObjExit);
251+
GetRegisterApi()->trace_native_object_lifecycle(registry, baseTypeName, OnObjEnter, OnObjExit);
252+
GetRegisterApi()->trace_native_object_lifecycle(registry, typeName, OnObjEnter, OnObjExit);
272253
}
273254

274255
static void* BindData;
@@ -348,10 +329,10 @@ class PApiBaseTest : public ::testing::Test
348329
char buff[1024];
349330
size_t len = sizeof(buff);
350331
const char* className = apis->get_value_string_utf8(env, arg0, buff, &len);
351-
auto clsDef = (puerts::ScriptClassDefinition) regimpl::pesapi_find_type_id(registry, nullptr, className);
352-
if (clsDef.TypeId != nullptr)
332+
auto typeId = GetRegisterApi()->find_type_id(registry, nullptr, className);
333+
if (typeId != nullptr)
353334
{
354-
auto ret = apis->create_class(env, clsDef.TypeId);
335+
auto ret = apis->create_class(env, typeId);
355336
apis->add_return(info, ret);
356337
}
357338
else
@@ -395,9 +376,9 @@ TEST_F(PApiBaseTest, RegApi)
395376
{
396377
const void* typeId = "Test";
397378
int dummyTypeId = 0;
398-
regimpl::pesapi_define_class(registry, &dummyTypeId, nullptr, nullptr, "Test", nullptr, nullptr, nullptr, false);
399-
regimpl::pesapi_set_property_info_size(registry, &dummyTypeId, 0, 1, 0, 0);
400-
regimpl::pesapi_set_method_info(registry, &dummyTypeId, 0, "Foo", true, Foo, nullptr, false);
379+
GetRegisterApi()->define_class(registry, &dummyTypeId, nullptr, nullptr, "Test", nullptr, nullptr, nullptr, false);
380+
GetRegisterApi()->set_property_info_size(registry, &dummyTypeId, 0, 1, 0, 0);
381+
GetRegisterApi()->set_method_info(registry, &dummyTypeId, 0, "Foo", true, Foo, nullptr, false);
401382

402383
auto clsDef = puerts::FindClassByID((puerts::ScriptClassRegistry*)registry, &dummyTypeId);
403384
ASSERT_TRUE(clsDef != nullptr);

0 commit comments

Comments
 (0)