From 99b0808dd0bb6b3aa9327308933868bcaa958d6e Mon Sep 17 00:00:00 2001 From: Guillaume Melquiond Date: Sun, 30 May 2010 17:02:22 +0000 Subject: [PATCH] Reduced compilation time and binary size by uninlining some destructors. --- src/serialization/binary_or_text.cpp | 3 +++ src/serialization/binary_or_text.hpp | 2 ++ src/terrain_filter.cpp | 4 ++++ src/terrain_filter.hpp | 3 ++- src/unit_types.cpp | 4 ++++ src/unit_types.hpp | 2 ++ src/widgets/button.cpp | 4 ++++ src/widgets/button.hpp | 3 ++- src/widgets/menu.cpp | 4 ++++ src/widgets/menu.hpp | 3 +++ 10 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/serialization/binary_or_text.cpp b/src/serialization/binary_or_text.cpp index cae47776b7f..123cfd05970 100644 --- a/src/serialization/binary_or_text.cpp +++ b/src/serialization/binary_or_text.cpp @@ -60,6 +60,9 @@ config_writer::config_writer( } } +config_writer::~config_writer() +{ +} void config_writer::write(const config &cfg) { diff --git a/src/serialization/binary_or_text.hpp b/src/serialization/binary_or_text.hpp index c578eef3c6a..c4d94857bab 100644 --- a/src/serialization/binary_or_text.hpp +++ b/src/serialization/binary_or_text.hpp @@ -42,6 +42,8 @@ class config_writer { public: config_writer(std::ostream &out, bool compress, int level = -1); + /** Default implementation, but defined out-of-line for efficiency reasons. */ + ~config_writer(); void write(const config &cfg); diff --git a/src/terrain_filter.cpp b/src/terrain_filter.cpp index 6e145776c60..6e587856054 100644 --- a/src/terrain_filter.cpp +++ b/src/terrain_filter.cpp @@ -29,6 +29,10 @@ static lg::log_domain log_engine("engine"); #define ERR_NG LOG_STREAM(err, log_engine) +terrain_filter::~terrain_filter() +{ +} + #ifdef _MSC_VER // This is a workaround for a VC bug; this constructor is never called // and so we don't care about the warnings this quick fix generates diff --git a/src/terrain_filter.hpp b/src/terrain_filter.hpp index 8092b17b03e..f39147beec2 100644 --- a/src/terrain_filter.hpp +++ b/src/terrain_filter.hpp @@ -38,7 +38,8 @@ public: terrain_filter(const vconfig& cfg, const unit_map& units, const bool flat_tod=false, const size_t max_loop=MAX_MAP_AREA); terrain_filter(const vconfig& cfg, const terrain_filter& original); - ~terrain_filter() {}; + /** Default implementation, but defined out-of-line for efficiency reasons. */ + ~terrain_filter(); terrain_filter(const terrain_filter &other); terrain_filter& operator=(const terrain_filter &other); diff --git a/src/unit_types.cpp b/src/unit_types.cpp index 08211469a7d..3953b00c422 100644 --- a/src/unit_types.cpp +++ b/src/unit_types.cpp @@ -70,6 +70,10 @@ attack_type::attack_type(const config& cfg) : } } +attack_type::~attack_type() +{ +} + std::string attack_type::accuracy_parry_description() const { if(accuracy_ == 0 && parry_ == 0) { diff --git a/src/unit_types.hpp b/src/unit_types.hpp index 7e800c8ca0b..28a201c7438 100644 --- a/src/unit_types.hpp +++ b/src/unit_types.hpp @@ -38,6 +38,8 @@ class attack_type public: attack_type(const config& cfg); + /** Default implementation, but defined out-of-line for efficiency reasons. */ + ~attack_type(); const t_string& name() const { return description_; } const std::string& id() const { return id_; } const std::string& type() const { return type_; } diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp index 23b2d9f1ba7..642264e8475 100644 --- a/src/widgets/button.cpp +++ b/src/widgets/button.cpp @@ -97,6 +97,10 @@ button::button(CVideo& video, const std::string& label, button::TYPE type, } } +button::~button() +{ +} + void button::calculate_size() { if (type_ == TYPE_IMAGE){ diff --git a/src/widgets/button.hpp b/src/widgets/button.hpp index 02c3e2bcbfd..8b6c117adee 100644 --- a/src/widgets/button.hpp +++ b/src/widgets/button.hpp @@ -39,7 +39,8 @@ public: std::string button_image="", SPACE_CONSUMPTION spacing=DEFAULT_SPACE, const bool auto_join=true); - virtual ~button() {} + /** Default implementation, but defined out-of-line for efficiency reasons. */ + virtual ~button(); void set_check(bool check); void set_active(bool active); bool checked() const; diff --git a/src/widgets/menu.cpp b/src/widgets/menu.cpp index cb6d1482cbd..92958b0e28f 100644 --- a/src/widgets/menu.cpp +++ b/src/widgets/menu.cpp @@ -203,6 +203,10 @@ menu::menu(CVideo& video, const std::vector& items, fill_items(items, true); } +menu::~menu() +{ +} + void menu::fill_items(const std::vector& items, bool strip_spaces) { for(std::vector::const_iterator itor = items.begin(); diff --git a/src/widgets/menu.hpp b/src/widgets/menu.hpp index d940b8f497f..f97cff7ee30 100644 --- a/src/widgets/menu.hpp +++ b/src/widgets/menu.hpp @@ -162,6 +162,9 @@ public: bool click_selects=false, int max_height=-1, int max_width=-1, const sorter* sorter_obj=NULL, style *menu_style=NULL, const bool auto_join=true); + /** Default implementation, but defined out-of-line for efficiency reasons. */ + ~menu(); + int selection() const; void move_selection(size_t id);