From 9540ca05ed4001b10d828afab95832518f7bd1b0 Mon Sep 17 00:00:00 2001 From: tqcq <99722391+tqcq@users.noreply.github.com> Date: Tue, 5 Mar 2024 09:45:08 +0800 Subject: [PATCH] feat update sled for linux --- 3rdparty/sled | 2 +- CMakeLists.txt | 4 +- runtime/reflection.h | 1 + runtime/test.gen.cc | 93 ++++++++++++++++++++++---------------------- src/main.cc | 11 +++--- 5 files changed, 56 insertions(+), 55 deletions(-) diff --git a/3rdparty/sled b/3rdparty/sled index 4402688..5900bdf 160000 --- a/3rdparty/sled +++ b/3rdparty/sled @@ -1 +1 @@ -Subproject commit 4402688c9c63e9885de1bf99cd718150b036ac7a +Subproject commit 5900bdf0f6adf9b01b7e6d3844d4ef1e4b3009c7 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2836b76..e8b5372 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,8 @@ add_executable(meta src/types/field.cc src/types/method.cc src/registry.cc - runtime/test.gen.cc - runtime/reflection.gen.cc + # runtime/test.gen.cc + # runtime/reflection.gen.cc ) ### add clang diff --git a/runtime/reflection.h b/runtime/reflection.h index c7b34fc..1766c82 100644 --- a/runtime/reflection.h +++ b/runtime/reflection.h @@ -7,6 +7,7 @@ #include #include #include +#include #include namespace meta { diff --git a/runtime/test.gen.cc b/runtime/test.gen.cc index f55438d..ae90b0e 100644 --- a/runtime/test.gen.cc +++ b/runtime/test.gen.cc @@ -4,12 +4,11 @@ /** * Class **/ -test::Test::Test_Class::Test_Class() -: ::meta::reflection::Class("test::Test", nullptr) -{ -} +test::Test::Test_Class::Test_Class() : ::meta::reflection::Class("test::Test", nullptr) {} -void test::Test::Test_Class::Register() { +void +test::Test::Test_Class::Register() +{ auto self = new test::Test::Test_Class(); auto clz = std::shared_ptr<::meta::reflection::Class>(self); // self->AddBaseClassProxy(); @@ -22,69 +21,71 @@ void test::Test::Test_Class::Register() { ::meta::reflection::Registry::Instance()->RegisterClass(clz); } -void test::Test::Test_Class::AddBaseClassProxy(std::shared_ptr<::meta::reflection::Class> base) { + +void +test::Test::Test_Class::AddBaseClassProxy(std::shared_ptr<::meta::reflection::Class> base) +{ AddBaseClass(base); } -void test::Test::Test_Class::AddMethodProxy(std::shared_ptr<::meta::reflection::Method> method) { + +void +test::Test::Test_Class::AddMethodProxy(std::shared_ptr<::meta::reflection::Method> method) +{ AddMethod(method); } -void test::Test::Test_Class::AddFieldProxy(std::shared_ptr<::meta::reflection::Field> field) { + +void +test::Test::Test_Class::AddFieldProxy(std::shared_ptr<::meta::reflection::Field> field) +{ AddField(field); } - /** * Field **/ -test::Test::Test_Field::Test_Field( - const std::string& name, - std::shared_ptr<::meta::reflection::Class> parent) -: ::meta::reflection::Field(name, parent) {} +test::Test::Test_Field::Test_Field(const std::string &name, + std::shared_ptr<::meta::reflection::Class> parent) + : ::meta::reflection::Field(name, parent) +{} -::meta::reflection::any test::Test::Test_Field::GetImpl(void* instance) const { - ::test::Test* obj = (::test::Test*)instance; +::meta::reflection::any +test::Test::Test_Field::GetImpl(void *instance) const +{ + ::test::Test *obj = (::test::Test *) instance; - if (strcmp(Name().c_str(), "length_") == 0) { - return obj->length_; - } - if (strcmp(Name().c_str(), "size_") == 0) { - return obj->size_; - } + if (strcmp(Name().c_str(), "length_") == 0) { return obj->length_; } + if (strcmp(Name().c_str(), "size_") == 0) { return obj->size_; } return ::meta::reflection::any{}; } -void test::Test::Test_Field::SetImpl(void* instance, const ::meta::reflection::any& value) const { - ::test::Test* obj = (::test::Test*)instance; - if(strcmp(Name().c_str(), "length_") == 0) { obj->length_ = ::meta::reflection::any_cast(value);} - if(strcmp(Name().c_str(), "size_") == 0) { obj->size_ = ::meta::reflection::any_cast(value);} +void +test::Test::Test_Field::SetImpl(void *instance, const ::meta::reflection::any &value) const +{ + ::test::Test *obj = (::test::Test *) instance; + if (strcmp(Name().c_str(), "length_") == 0) { + obj->length_ = ::meta::reflection::any_cast(value); + } + if (strcmp(Name().c_str(), "size_") == 0) { + obj->size_ = ::meta::reflection::any_cast(value); + } } - - /** * Method **/ -test::Test::Test_Method::Test_Method( - const std::string& name, - std::shared_ptr<::meta::reflection::Class> parent) -: ::meta::reflection::Method(name, parent) {} +test::Test::Test_Method::Test_Method(const std::string &name, + std::shared_ptr<::meta::reflection::Class> parent) + : ::meta::reflection::Method(name, parent) +{} -::meta::reflection::any test::Test::Test_Method::InvokeImpl(void* instance, const std::vector<::meta::reflection::any> ¶ms) const { - ::test::Test* obj = (::test::Test*)instance; +::meta::reflection::any +test::Test::Test_Method::InvokeImpl(void *instance, + const std::vector<::meta::reflection::any> ¶ms) const +{ + ::test::Test *obj = (::test::Test *) instance; - if (strcmp(Name().c_str(), "size") == 0) { - return - obj-> -size( - ); - } - if (strcmp(Name().c_str(), "length") == 0) { - return - obj-> -length( - ); - } + if (strcmp(Name().c_str(), "size") == 0) { return obj->size(); } + if (strcmp(Name().c_str(), "length") == 0) { return obj->length(); } return ::meta::reflection::any{}; } - diff --git a/src/main.cc b/src/main.cc index 7ae8e95..3d7e88c 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,7 +1,6 @@ #include "generators/base_generator.h" #include "reflection.h" #include "registry.h" -#include "test.gen.h" #include "types/class.h" #include "clang/parser.h" #include @@ -126,7 +125,7 @@ main(int argc, char *argv[]) Generator generator2("template/class_proxy_source.inja", "runtime/test.gen.cc"); generator2.Generate(); - ::meta::reflection::Registry::RegisterAll(); + // ::meta::reflection::Registry::RegisterAll(); TestFunc(); return 0; } @@ -137,13 +136,13 @@ TestFunc() auto clz = ::meta::reflection::Registry::Instance()->GetClass("test::Test"); if (clz) { LOGI(kTag, "class={}", clz->Name()); - ::test::Test test; + // ::test::Test test; auto size_method = clz->GetMethod("size"); auto size_field = clz->GetField("size_"); for (int i = 0; i < 10; i++) { - size_field->Set(&test, i); - LOGI(kTag, "size_field={}", size_field->GetAndCast(&test)); - LOGI(kTag, "size_invoke={}", size_method->InvokeAndCast(&test)); + // size_field->Set(&test, i); + // LOGI(kTag, "size_field={}", size_field->GetAndCast(&test)); + // LOGI(kTag, "size_invoke={}", size_method->InvokeAndCast(&test)); } } else { LOGE(kTag, "class not found");