diff options
Diffstat (limited to 'src/base_tab/gamebase')
| -rw-r--r-- | src/base_tab/gamebase/GameBase.hpp | 6 | ||||
| -rw-r--r-- | src/base_tab/gamebase/PGNGameBase.cpp | 21 | ||||
| -rw-r--r-- | src/base_tab/gamebase/PGNGameBase.hpp | 6 |
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 |
