From 70b36783aebe4dc0035eb5f8e72504ddd96a3be2 Mon Sep 17 00:00:00 2001 From: Tristan Grespinet Date: Fri, 25 Nov 2022 17:03:49 +0100 Subject: [PATCH] Store an extra vector of KtProperty in Tool mode to preserve declaration order. (#390) --- src/kt_class.cpp | 15 +++++++++++++++ src/kt_class.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/kt_class.cpp b/src/kt_class.cpp index 6f2a99d1aa..42ba72b7ba 100644 --- a/src/kt_class.cpp +++ b/src/kt_class.cpp @@ -19,6 +19,10 @@ KtClass::~KtClass() { for (auto& constructor : constructors) { delete constructor; } + +#if TOOLS_ENABLED + property_list.clear(); +#endif } KtObject* KtClass::create_instance(jni::Env& env, const Variant** p_args, int p_arg_count, Object* p_owner) { @@ -104,6 +108,10 @@ void KtClass::fetch_properties(jni::Env& env) { for (int i = 0; i < propertiesArray.length(env); i++) { auto* ktProperty { new KtProperty(propertiesArray.get(env, i), ClassLoader::get_default_loader()) }; properties[ktProperty->get_name()] = ktProperty; +#if TOOLS_ENABLED + property_list.push_back(ktProperty); +#endif + #ifdef DEBUG_ENABLED LOG_VERBOSE(vformat("Fetched property %s for class %s", ktProperty->get_name(), name)); #endif @@ -145,7 +153,14 @@ void KtClass::get_method_list(List* p_list) { } void KtClass::get_property_list(List* p_list) { +#if TOOLS_ENABLED + uint32_t size = property_list.size(); + for (auto i = 0; i < size; i++) { + p_list->push_back(property_list[i]->get_member_info()); + } +#else get_member_list(p_list, properties); +#endif } void KtClass::get_signal_list(List* p_list) { diff --git a/src/kt_class.h b/src/kt_class.h index 45ed74f561..f76d8f58fa 100644 --- a/src/kt_class.h +++ b/src/kt_class.h @@ -49,6 +49,10 @@ class KtClass : public JavaInstanceWrapper { HashMap signal_infos; KtConstructor* constructors[MAX_CONSTRUCTOR_SIZE]; +#if TOOLS_ENABLED + LocalVector property_list; +#endif + StringName get_name(jni::Env& env); String get_registered_name(jni::Env& env);