aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab/gamebase
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-02-28 20:16:57 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-02-28 20:16:57 +0100
commit44ea0a50a39d58cb9e1f167c2973e396b4d853aa (patch)
tree14cae56496eb72816f6f3d8b2323e6abfa79f200 /src/base_tab/gamebase
parent4c959fe12ed2f26cbfac9646d3488cb00676fb31 (diff)
Migrate to std::shared_ptr<Game>
Diffstat (limited to 'src/base_tab/gamebase')
-rw-r--r--src/base_tab/gamebase/GameBase.hpp6
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp21
-rw-r--r--src/base_tab/gamebase/PGNGameBase.hpp6
3 files changed, 15 insertions, 18 deletions
diff --git a/src/base_tab/gamebase/GameBase.hpp b/src/base_tab/gamebase/GameBase.hpp
index d13c01d..a913484 100644
--- a/src/base_tab/gamebase/GameBase.hpp
+++ b/src/base_tab/gamebase/GameBase.hpp
@@ -6,11 +6,11 @@
class GameBase {
public:
- virtual Game *GetGame(std::uint32_t id) = 0;
+ virtual std::shared_ptr<Game> GetGame(std::uint32_t id) = 0;
virtual void Save(std::vector<std::uint32_t> to_ignore,
std::vector<GameBase *> new_games_bases,
- std::vector<Game *> new_games) = 0;
- virtual Game *GetCurrentGame() = 0;
+ std::vector<std::shared_ptr<Game>> new_games) = 0;
+ virtual std::shared_ptr<Game> GetCurrentGame() = 0;
virtual bool NextGame() = 0;
virtual std::string GetTag(std::string tag) = 0;
virtual void Reset() = 0;
diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp
index edcd98f..331d760 100644
--- a/src/base_tab/gamebase/PGNGameBase.cpp
+++ b/src/base_tab/gamebase/PGNGameBase.cpp
@@ -28,7 +28,7 @@ std::string PGNGameBase::GetTag(std::string tag) {
return ("");
}
-Game *PGNGameBase::GetCurrentGame() {
+std::shared_ptr<Game> PGNGameBase::GetCurrentGame() {
pgnp::HalfMove *pgnp_moves = new pgnp::HalfMove();
pgn->GetMoves(pgnp_moves);
std::string fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
@@ -42,7 +42,7 @@ Game *PGNGameBase::GetCurrentGame() {
g->SetTag(s, pgn->GetTagValue(s));
}
g->SetResult(pgn->GetResult());
- return (g);
+ return (std::shared_ptr<Game>(g));
}
void PGNGameBase::Reset() {
@@ -51,7 +51,7 @@ void PGNGameBase::Reset() {
pgn->FromFile(file);
}
-Game *PGNGameBase::GetGame(std::uint32_t id) {
+std::shared_ptr<Game> PGNGameBase::GetGame(std::uint32_t id) {
Reset();
std::uint32_t curid = 0;
while (NextGame()) {
@@ -60,12 +60,12 @@ Game *PGNGameBase::GetGame(std::uint32_t id) {
}
curid++;
}
- return (NULL);
+ return (std::shared_ptr<Game>(NULL));
}
void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
std::vector<GameBase *> new_games_bases,
- std::vector<Game *> new_games) {
+ std::vector<std::shared_ptr<Game>> new_games) {
wxStandardPaths stdPaths = wxStandardPaths::Get();
wxString tmp = stdPaths.GetTempDir() + "/save_pgn_tmp.pgn";
wxFile new_pgn(tmp, wxFile::write);
@@ -80,9 +80,8 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
} else {
several = true;
}
- Game *g = GetCurrentGame();
+ std::shared_ptr<Game> g = GetCurrentGame();
new_pgn.Write(g->GetPGN());
- delete g;
}
id++;
}
@@ -96,13 +95,12 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
} else {
several = true;
}
- Game *g = current->GetCurrentGame();
+ std::shared_ptr<Game> g = current->GetCurrentGame();
new_pgn.Write(g->GetPGN());
- delete g;
}
}
- for (Game *g : new_games) {
+ for (std::shared_ptr<Game> g : new_games) {
if (several) {
new_pgn.Write("\n\n");
} else {
@@ -127,9 +125,8 @@ void PGNGameBase::Export(GameBase *base) {
} else {
several = true;
}
- Game *g = base->GetCurrentGame();
+ std::shared_ptr<Game> g = base->GetCurrentGame();
new_pgn.Write(g->GetPGN());
- delete g;
}
new_pgn.Close();
diff --git a/src/base_tab/gamebase/PGNGameBase.hpp b/src/base_tab/gamebase/PGNGameBase.hpp
index 4f39e1a..53b75ba 100644
--- a/src/base_tab/gamebase/PGNGameBase.hpp
+++ b/src/base_tab/gamebase/PGNGameBase.hpp
@@ -9,13 +9,13 @@ class PGNGameBase : public GameBase {
public:
PGNGameBase(std::string pgn_file);
~PGNGameBase();
- Game *GetGame(std::uint32_t id);
+ std::shared_ptr<Game> GetGame(std::uint32_t id);
bool NextGame();
- Game *GetCurrentGame();
+ std::shared_ptr<Game> GetCurrentGame();
std::string GetTag(std::string tag);
void Save(std::vector<std::uint32_t> to_ignore,
std::vector<GameBase *> new_games_bases,
- std::vector<Game *> new_games);
+ std::vector<std::shared_ptr<Game>> new_games);
void Reset();
void Export(GameBase *base);
}; \ No newline at end of file