From cf0b1da4fa43699b233dd76516ff3971beb366bb Mon Sep 17 00:00:00 2001 From: John Ralls Date: Fri, 20 Sep 2019 12:40:43 -0700 Subject: [PATCH] Remove GncOptionWrapper. Move the GncOptions into the GncOptionDB. This works with tests but might not with real reports. --- libgnucash/app-utils/gnc-optiondb.cpp | 23 +++++++++++------------ libgnucash/app-utils/gnc-optiondb.hpp | 10 +--------- libgnucash/app-utils/gnc-optiondb.i | 2 +- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/libgnucash/app-utils/gnc-optiondb.cpp b/libgnucash/app-utils/gnc-optiondb.cpp index 641bd1194d..733691fc2f 100644 --- a/libgnucash/app-utils/gnc-optiondb.cpp +++ b/libgnucash/app-utils/gnc-optiondb.cpp @@ -48,8 +48,7 @@ GncOptionDB::register_option(const char* section, GncOption&& option) GncOptionVec{})); db_section = std::prev(m_sections.end()); } - auto wrapper = std::make_shared(option, nullptr); - db_section->second.emplace_back(wrapper); + db_section->second.emplace_back(std::move(option)); } void @@ -66,9 +65,9 @@ GncOptionDB::unregister_option(const char* section, const char* name) db_section->second.erase( std::remove_if( db_section->second.begin(), db_section->second.end(), - [name](GncOptionWrapperPtr option) -> bool + [name](const GncOption& option) -> bool { - return option->m_option.get_name() == std::string{name}; + return option.get_name() == std::string{name}; })); } } @@ -91,13 +90,13 @@ GncOptionDB::lookup_option(const char* section, const char* name) const return SCM_BOOL_F; auto db_opt = std::find_if( db_section->second.begin(), db_section->second.end(), - [name](GncOptionWrapperPtr option) -> bool + [name](const GncOption& option) -> bool { - return option->m_option.get_name() == std::string{name}; + return option.get_name() == std::string{name}; }); - if (db_opt == db_section->second.end() || !*db_opt) + if (db_opt == db_section->second.end()) return SCM_BOOL_F; - return (*db_opt)->m_option.get_scm_value(); + return db_opt->get_scm_value(); } static const std::string empty_string; @@ -114,13 +113,13 @@ GncOptionDB::lookup_string_option(const char* section, const char* name) const return empty_string; auto db_opt = std::find_if( db_section->second.begin(), db_section->second.end(), - [name](GncOptionWrapperPtr option) -> bool + [name](const GncOption& option) -> bool { - return option->m_option.get_name() == std::string{name}; + return option.get_name() == std::string{name}; }); - if (db_opt == db_section->second.end() || !*db_opt) + if (db_opt == db_section->second.end()) return empty_string; - return (*db_opt)->m_option.get_value(); + return db_opt->get_value(); } bool diff --git a/libgnucash/app-utils/gnc-optiondb.hpp b/libgnucash/app-utils/gnc-optiondb.hpp index 69503c22c6..9fb25bd097 100644 --- a/libgnucash/app-utils/gnc-optiondb.hpp +++ b/libgnucash/app-utils/gnc-optiondb.hpp @@ -27,16 +27,8 @@ #include "gnc-option.hpp" class GncOptionDB; -struct GncOptionWrapper -{ - GncOptionWrapper(const GncOption& opt, void* ptr) : m_option{opt}, m_widget{ptr} {} - GncOptionWrapper(GncOption&& opt, void* ptr) : m_option{opt}, m_widget{ptr} {} - GncOption m_option; - void* m_widget; /* Don't want widget code in libgnucash! GObject closure?*/ -}; -using GncOptionWrapperPtr = std::shared_ptr; -using GncOptionVec = std::vector; +using GncOptionVec = std::vector; using GncOptionSection = std::pair; using GncOptionSectionPtr = std::shared_ptr; class GncOptionDB diff --git a/libgnucash/app-utils/gnc-optiondb.i b/libgnucash/app-utils/gnc-optiondb.i index d15c8598db..01689ef041 100644 --- a/libgnucash/app-utils/gnc-optiondb.i +++ b/libgnucash/app-utils/gnc-optiondb.i @@ -12,7 +12,7 @@ extern "C" SCM scm_init_sw_gnc_optiondb_module(void); %include %ignore OptionClassifier; +%ignore OptionUIItem; %ignore GncOption; -%ignore GncOptionWrapper; %include "gnc-optiondb.hpp"