#include "fiko/cekirdek/islem.hpp" namespace fiko { void KomutYigini::calistir(std::unique_ptr islem, Dunya& dunya, OlayGunlugu& gunluk) { if (!islem) return; islem->uygula(dunya, gunluk); // imlec sonrasi redo dalini at (truncate). if (imlec_ < gecmis_.size()) gecmis_.resize(imlec_); gecmis_.push_back(std::move(islem)); imlec_ = gecmis_.size(); // Ust sinir: en eskiyi at, imleci uygun kaydir. if (gecmis_.size() > UST_SINIR) { gecmis_.erase(gecmis_.begin()); --imlec_; } } bool KomutYigini::geriAlinabilir() const { return imlec_ > 0; } bool KomutYigini::yinelenebilir() const { return imlec_ < gecmis_.size(); } void KomutYigini::geriAl(Dunya& dunya, OlayGunlugu& gunluk) { if (!geriAlinabilir()) return; --imlec_; gecmis_[imlec_]->geriAl(dunya, gunluk); } void KomutYigini::yinele(Dunya& dunya, OlayGunlugu& gunluk) { if (!yinelenebilir()) return; gecmis_[imlec_]->uygula(dunya, gunluk); ++imlec_; } void KomutYigini::temizle() { gecmis_.clear(); imlec_ = 0; } size_t KomutYigini::derinlik() const { return gecmis_.size(); } } // namespace fiko