diff options
Diffstat (limited to 'src/base_tab')
| -rw-r--r-- | src/base_tab/AppendGameDialog.cpp | 4 | ||||
| -rw-r--r-- | src/base_tab/BaseTab.cpp | 6 | ||||
| -rw-r--r-- | src/base_tab/BaseTab.hpp | 4 | ||||
| -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 |
6 files changed, 22 insertions, 25 deletions
diff --git a/src/base_tab/AppendGameDialog.cpp b/src/base_tab/AppendGameDialog.cpp index a4ac126..258b965 100644 --- a/src/base_tab/AppendGameDialog.cpp +++ b/src/base_tab/AppendGameDialog.cpp @@ -27,7 +27,7 @@ void AppendGameDialog::OnCancel(wxCommandEvent &event) { this->Close(); } void AppendGameDialog::OnImport(wxCommandEvent &event) { 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; wxArrayInt selections; game_list->GetSelections(selections); @@ -37,7 +37,7 @@ void AppendGameDialog::OnImport(wxCommandEvent &event) { if (tinfo->type == TabInfos::BASE) { new_games_bases.push_back(static_cast<GameBase *>(tinfo->GetBase())); } else if (tinfo->type == TabInfos::GAME) { - new_games.push_back(static_cast<Game *>(tinfo->GetGame())); + new_games.push_back(tinfo->GetGame()); } } diff --git a/src/base_tab/BaseTab.cpp b/src/base_tab/BaseTab.cpp index 410cc92..fd94ef8 100644 --- a/src/base_tab/BaseTab.cpp +++ b/src/base_tab/BaseTab.cpp @@ -54,7 +54,7 @@ void BaseTab::OnDelete(wxCommandEvent &event) { void BaseTab::OnSave(wxCommandEvent &event) { std::vector<GameBase *> new_games_bases; - std::vector<Game *> new_games; + std::vector<std::shared_ptr<Game>> new_games; new_games.insert( new_games.end(), edited.begin(), edited.end()); // Add edited game (since they are also deleted) @@ -67,9 +67,9 @@ void BaseTab::OnSave(wxCommandEvent &event) { void BaseTab::OnOpenGame(wxListEvent &event) { wxLogDebug("Open!"); long id = std::stoi(event.GetItem().GetText().ToStdString()); - Game *g = base->GetGame(id); + std::shared_ptr<Game> *g =new std::shared_ptr<Game>(base->GetGame(id)); if (g != NULL) { - edited.push_back(g); + edited.push_back(*g); deleted.push_back(id); game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN); wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId()); diff --git a/src/base_tab/BaseTab.hpp b/src/base_tab/BaseTab.hpp index 2f05c67..f195d0e 100644 --- a/src/base_tab/BaseTab.hpp +++ b/src/base_tab/BaseTab.hpp @@ -10,7 +10,7 @@ wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent); class BaseTab : public TabBase, public TabInfos { GameBase *base; std::vector<std::uint32_t> deleted; - std::vector<Game *> edited; + std::vector<std::shared_ptr<Game>> edited; std::string base_file; public: @@ -23,6 +23,6 @@ public: void OnExport(wxCommandEvent &event); void OnOpenGame(wxListEvent &event); void OnImport(wxCommandEvent &event); - void *GetGame() { return (NULL); } + std::shared_ptr<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); } void *GetBase() { return (base); }; };
\ No newline at end of file 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 |
