SirVer has proposed merging lp:~widelands-dev/widelands/00_private_inheritance
into lp:widelands.
Commit message:
- Replace private inheritance with composition everywhere.
- Add a lint to forbid private inheritance.
- Use std::unique_ptr<> in more places to signify passing or having ownership.
- Replace SyncCallback through a std::function.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/00_private_inheritance/+merge/326886
--
Your team Widelands Developers is requested to review the proposed merge of
lp:~widelands-dev/widelands/00_private_inheritance into lp:widelands.
=== added file 'cmake/codecheck/rules/do_not_use_private_inheritance'
--- cmake/codecheck/rules/do_not_use_private_inheritance 1970-01-01 00:00:00 +
+++ cmake/codecheck/rules/do_not_use_private_inheritance 2017-07-05 19:31:35 +
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+
+"""
+strdup isn't available on win32
+"""
+
+error_msg = 'Do not use strdup/strndup. Use std::string instead.'
+
+regexp = r'\bstrn?dup\s*\('
+
+allowed = [
+'y = std::string(x)',
+
+'y = new char[strlen(x)+1]',
+'std::copy(x, x+strlen(x)+1, y)',
+]
+
+forbidden = [
+'y = strdup(x)',
+'y = strndup(x)',
+]
=== modified file 'src/game_io/game_loader.cc'
--- src/game_io/game_loader.cc 2017-01-25 18:55:59 +
+++ src/game_io/game_loader.cc 2017-07-05 19:31:35 +
@@ -19,6 +19,8 @@
#include "game_io/game_loader.h"
+#include
+
#include
#include
@@ -122,8 +124,8 @@
iterate_players_existing_const(p, nr_players, game_, player) {
const MessageQueue& messages = player->messages();
for (const auto& temp_message : messages) {
- Message* message = temp_message.second;
- MessageId message_id = temp_message.first;
+ const std::unique_ptr& message = temp_message.second;
+ const MessageId message_id = temp_message.first;
// Renew MapObject connections
if (message->serial() > 0) {
=== modified file 'src/logic/cmd_luacoroutine.cc'
--- src/logic/cmd_luacoroutine.cc 2017-01-25 18:55:59 +
+++ src/logic/cmd_luacoroutine.cc 2017-07-05 19:31:35 +
@@ -19,6 +19,8 @@
#include "logic/cmd_luacoroutine.h"
+#include
+
#include
#include "base/log.h"
@@ -51,11 +53,11 @@
log("%s\n", e.what());
log("Send message to all players and pause game\n");
for (int i = 1; i <= game.map().get_nrplayers(); i++) {
- Widelands::Message& msg = *new Widelands::Message(
+ std::unique_ptrmsg(new Widelands::Message(
Message::Type::kGameLogic, game.get_gametime(), "Coroutine",
"images/ui_basic/menu_help.png", "Lua Coroutine Failed",
- (boost::format("%s") % e.what()).str());
- game.player(i).add_message(game, msg, true);
+ (boost::format("%s") % e.what()).str()));
+ game.player(i).add_message(game, std::move(msg), true);
}
game.game_controller()->set_desired_speed(0);
}
=== modified file 'src/logic/map_objects/tribes/building.cc'
--- src/logic/map_objects/tribes/building.cc 2017-06-26 15:09:21 +
+++ src/logic/map_objects/tribes/building.cc 2017-07-05 19:31:35 +
@@ -772,13 +772,14 @@
width % img % owner().get_playercolor().hex_value() % UI_FONT_SIZE_MESSAGE % description)
.str();
- Message* msg =
- new Message(msgtype, game.get_gametime(), title, icon_filename, heading, rt_description,
- get_position(), (link_to_building_lifetime ? serial_ : 0));
+ std::unique_ptr msg(new Message(msgtype, game.get_gametime(), title, icon_filename,
+ heading, rt_description, get_position(),
+ (link_to_building_lifetime ? serial_ : 0)));
- if (throttle_time)
- owner().add_message_with_timeout(game, *msg, throttle_time, throttle_radius);
- else
- owner().add_message(game, *msg);
+ if (throttle_time) {
+ owner().add_message_with_timeout(game, std::move(msg), throttle_time, throttle_radius);
+ } else {
+ owner().add_message(game, std::move(msg));
+ }
}
}
=== modified file 'src/logic/map_objects/tribes/ship.cc'
--- src/logic/map_objects/tribes/ship.cc 2017-07-01 15:36:36 +
+++ src/logic/map_objects/tribes/ship.cc 2017-07-05 19:31:35 +
@@ -1068,10 +1068,9 @@
picture % UI_FONT_SIZE_MESSAGE % description)
.str();
- Message* msg = new Message(Message::Type::kSeafaring, game.get_gametime(), title, picture,
- heading, rt_description, get_position(), serial_);
-
- get_owner()->add_message(game, *msg);
+ get_owner()->add_message(game, std::unique_ptr(new Message(
+ Message::Type::kSeafaring, game.get_gametime(), title, picture,
+ heading, rt_description, get_position(), serial_)));
}
/*
=== modified file 'src/logic/map_objects/tribes/soldier.cc'
--- src/logic/map_objects/tribes/soldier.cc 2017-07-03 19:24:02 +
+++ src/logic/map_objects/tribes/soldier.cc 2017-07-05 19:31:35 +
@