From b40c666ad22328c992038b515573a9b5f1ae5a25 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Mon, 25 Jun 2018 18:38:00 +1100 Subject: [PATCH] Convert a bunch of C-style arrays to std::array --- src/addon/validation.cpp | 7 ++-- src/commandline_options.cpp | 4 +- src/game_initialization/connect_engine.cpp | 9 +++-- src/generators/lua_map_generator.cpp | 5 ++- src/replay.cpp | 13 +++--- src/units/types.cpp | 12 +++--- src/units/unit.cpp | 46 +++++++++++----------- 7 files changed, 51 insertions(+), 45 deletions(-) diff --git a/src/addon/validation.cpp b/src/addon/validation.cpp index 889c55569b39..b1ed5b70e72f 100644 --- a/src/addon/validation.cpp +++ b/src/addon/validation.cpp @@ -18,17 +18,18 @@ #include "serialization/unicode_cast.hpp" #include +#include #include #include const unsigned short default_campaignd_port = 15014; namespace { - const std::string addon_type_strings[] { + const std::array addon_type_strings {{ "unknown", "core", "campaign", "scenario", "campaign_sp_mp", "campaign_mp", "scenario_mp", "map_pack", "era", "faction", "mod_mp", /*"gui", */ "media", - "other", "" - }; + "other" + }}; // Reserved DOS device names on Windows XP and later. const std::set dos_device_names = { diff --git a/src/commandline_options.cpp b/src/commandline_options.cpp index bbd0bd1c8c29..0e6eebc84c7c 100644 --- a/src/commandline_options.cpp +++ b/src/commandline_options.cpp @@ -28,6 +28,8 @@ #include #include // for value, etc #include // for variables_map, etc + +#include #include // for operator<<, basic_ostream, etc namespace po = boost::program_options; @@ -502,7 +504,7 @@ void commandline_options::parse_log_domains_(const std::string &domains_string, } void commandline_options::parse_log_strictness (const std::string & severity ) { - static lg::logger const *loggers[] { &lg::err(), &lg::warn(), &lg::info(), &lg::debug() }; + static const std::array loggers {{&lg::err(), &lg::warn(), &lg::info(), &lg::debug()}}; for (const lg::logger * l : loggers ) { if (severity == l->get_name()) { lg::set_strict_severity(*l); diff --git a/src/game_initialization/connect_engine.cpp b/src/game_initialization/connect_engine.cpp index b190d63cbc3e..322b9da6f373 100644 --- a/src/game_initialization/connect_engine.cpp +++ b/src/game_initialization/connect_engine.cpp @@ -26,6 +26,7 @@ #include "team.hpp" #include "wesnothd_connection.hpp" +#include #include #include @@ -42,15 +43,15 @@ static lg::log_domain log_mp_connect_engine("mp/connect/engine"); static lg::log_domain log_network("network"); #define LOG_NW LOG_STREAM(info, log_network) -static const std::string controller_names[] { +static const std::array controller_names {{ "human", "human", "ai", "null", "reserved" -}; +}}; -static const std::string attributes_to_trim[] { +static const std::array attributes_to_trim {{ "side", "type", "gender", @@ -66,7 +67,7 @@ static const std::string attributes_to_trim[] { "income", "allow_changes", "faction" -}; +}}; namespace ng { diff --git a/src/generators/lua_map_generator.cpp b/src/generators/lua_map_generator.cpp index 41f1361cb5db..85730eece4c1 100644 --- a/src/generators/lua_map_generator.cpp +++ b/src/generators/lua_map_generator.cpp @@ -18,6 +18,7 @@ #include "game_errors.hpp" #include "scripting/mapgen_lua_kernel.hpp" +#include #include lua_map_generator::lua_map_generator(const config & cfg) @@ -30,8 +31,8 @@ lua_map_generator::lua_map_generator(const config & cfg) , generator_data_(cfg) { lk_.load_core(); - const char* required[] {"id", "config_name", "create_map"}; - for (std::string req : required) { + const std::array required {{"id", "config_name", "create_map"}}; + for(const std::string& req : required) { if (!cfg.has_attribute(req)) { if(req == "create_map" && cfg.has_attribute("create_scenario")) { // One of these is required, but not both diff --git a/src/replay.cpp b/src/replay.cpp index 3db8893b5075..d5669b611fff 100644 --- a/src/replay.cpp +++ b/src/replay.cpp @@ -39,6 +39,7 @@ #include "whiteboard/manager.hpp" #include "replay_recorder_base.hpp" +#include #include #include @@ -104,12 +105,12 @@ static void verify(const unit_map& units, const config& cfg) { u->write(u_cfg); bool is_ok = true; - static const std::string fields[] {"type","hitpoints","experience","side",""}; - for(const std::string* str = fields; str->empty() == false; ++str) { - if (u_cfg[*str] != un[*str]) { - errbuf << "ERROR IN FIELD '" << *str << "' for unit at " - << loc << " data source: '" << un[*str] - << "' local: '" << u_cfg[*str] << "'\n"; + static const std::array fields {{"type","hitpoints","experience","side"}}; + for(const std::string& field : fields) { + if (u_cfg[field] != un[field]) { + errbuf << "ERROR IN FIELD '" << field << "' for unit at " + << loc << " data source: '" << un[field] + << "' local: '" << u_cfg[field] << "'\n"; is_ok = false; } } diff --git a/src/units/types.cpp b/src/units/types.cpp index 78a4ac55273e..89c7a37fbd97 100644 --- a/src/units/types.cpp +++ b/src/units/types.cpp @@ -34,6 +34,7 @@ #include +#include #include static lg::log_domain log_config("config"); @@ -805,7 +806,7 @@ const config& unit_type::build_unit_cfg() const // Remove "pure" unit_type attributes (attributes that do not get directly // copied to units; some do get copied, but under different keys). - static char const* unit_type_attrs[] { + static std::array unit_type_attrs {{ "attacks", "base_ids", "die_sound", @@ -816,7 +817,8 @@ const config& unit_type::build_unit_cfg() const "hitpoints", "id", "ignore_race_traits", - "inherit", "movement", + "inherit", + "movement", "movement_type", "name", "num_traits", @@ -830,9 +832,9 @@ const config& unit_type::build_unit_cfg() const "alignment", "advances_to", "do_not_list" - }; + }}; - for(const char* attr : unit_type_attrs) { + for(const std::string& attr : unit_type_attrs) { unit_cfg_.remove_attribute(attr); } @@ -1162,7 +1164,7 @@ void unit_type_data::set_config(config& cfg) const std::string& ter_type = terrain["id"]; config temp_cfg; - static const std::string terrain_info_tags[] {"movement", "vision", "jamming", "defense"}; + static const std::array terrain_info_tags {{"movement", "vision", "jamming", "defense"}}; for(const std::string& tag : terrain_info_tags) { if(!terrain.has_child(tag)) { diff --git a/src/units/unit.cpp b/src/units/unit.cpp index 863892ef84b6..bad9c90a5cd3 100644 --- a/src/units/unit.cpp +++ b/src/units/unit.cpp @@ -64,6 +64,7 @@ #pragma warning (pop) #endif +#include #include // for assert #include // for rand #include // for exception @@ -92,7 +93,7 @@ namespace static std::vector units_with_cache; static const std::string leader_crown_path = "misc/leader-crown.png"; - static std::string internalized_attrs[] { + static std::array internalized_attrs {{ "type", "id", "name", @@ -154,7 +155,7 @@ namespace "language_name", "image", "image_icon" - }; + }}; struct internalized_attrs_sorter { @@ -172,8 +173,8 @@ namespace config::const_attribute_iterator cur = cfg.begin(); config::const_attribute_iterator end = cfg.end(); - const std::string* cur_known = std::begin(internalized_attrs); - const std::string* end_known = std::end(internalized_attrs); + auto cur_known = internalized_attrs.begin(); + auto end_known = internalized_attrs.end(); while(cur_known != end_known) { if(cur == end) { @@ -959,7 +960,7 @@ void unit::advance_to(const unit_type& u_type, bool use_traits) max_attacks_ = new_type.max_attacks(); flag_rgb_ = new_type.flag_rgb(); - + upkeep_ = upkeep_full(); parse_upkeep(new_type.get_cfg()["upkeep"]); @@ -2553,7 +2554,7 @@ std::string get_checksum(const unit& u) config wcfg; u.write(unit_config); - const std::string main_keys[] { + const std::array main_keys {{ "advances_to", "alignment", "cost", @@ -2575,28 +2576,26 @@ std::string get_checksum(const unit& u) "resting", "undead_variation", "upkeep", - "zoc", - "" - }; + "zoc" + }}; - for(int i = 0; !main_keys[i].empty(); ++i) { - wcfg[main_keys[i]] = unit_config[main_keys[i]]; + for(const std::string& main_key : main_keys) { + wcfg[main_key] = unit_config[main_key]; } - const std::string attack_keys[] { + const std::array attack_keys {{ "name", "type", "range", "damage", - "number", - "" - }; + "number" + }}; for(const config& att : unit_config.child_range("attack")) { config& child = wcfg.add_child("attack"); - for(int i = 0; !attack_keys[i].empty(); ++i) { - child[attack_keys[i]] = att[attack_keys[i]]; + for(const std::string& attack_key : attack_keys) { + child[attack_key] = att[attack_key]; } for(const config& spec : att.child_range("specials")) { @@ -2624,19 +2623,18 @@ std::string get_checksum(const unit& u) child.recursive_clear_value("name"); } - const std::string child_keys[] { + const std::array child_keys {{ "advance_from", "defense", "movement_costs", "vision_costs", "jamming_costs", - "resistance", - "" - }; + "resistance" + }}; - for(int i = 0; !child_keys[i].empty(); ++i) { - for(const config& c : unit_config.child_range(child_keys[i])) { - wcfg.add_child(child_keys[i], c); + for(const std::string& child_key : child_keys) { + for(const config& c : unit_config.child_range(child_key)) { + wcfg.add_child(child_key, c); } }