30 #ifndef ENGINE_NETWORK_PROVENANCEMANAGER_H
31 #define ENGINE_NETWORK_PROVENANCEMANAGER_H
34 #include <boost/noncopyable.hpp>
43 template <
class Memento>
44 class ProvenanceManager : boost::noncopyable
49 typedef std::stack<ItemHandle>
Stack;
50 typedef typename Stack::container_type
List;
74 boost::optional<Memento> initialState_;
79 template <
class Memento>
82 template <
class Memento>
85 initialState_ = initialState;
88 template <
class Memento>
94 template <
class Memento>
100 template <
class Memento>
107 template <
class Memento>
114 template <
class Memento>
120 template <
class Memento>
125 auto undone = undo_.top();
134 networkIO_->loadNetwork(undo_.top()->memento());
135 else if (initialState_)
136 networkIO_->loadNetwork(initialState_.get());
144 template <
class Memento>
150 template <
class Memento>
155 auto redone = redo_.top();
163 networkIO_->loadNetwork(redone->memento());
171 template <
class Memento>
175 while (0 != undoSize())
176 undone.push_back(undo(
false));
179 networkIO_->loadNetwork(initialState_.get());
183 template <
class Memento>
187 while (0 != redoSize())
188 redone.push_back(redo(
false));
190 networkIO_->loadNetwork(undo_.top()->memento());
194 template <
class Memento>
void clearAll()
Definition: ProvenanceManager.h:108
ProvenanceManager(IOType *networkIO)
Definition: ProvenanceManager.h:80
Item::Handle ItemHandle
Definition: ProvenanceManager.h:48
Engine::NetworkIOInterface< Memento > IOType
Definition: ProvenanceManager.h:51
size_t undoSize() const
Definition: ProvenanceManager.h:89
Stack::container_type List
Definition: ProvenanceManager.h:50
List undoAll()
Definition: ProvenanceManager.h:172
void addItem(ItemHandle item)
Definition: ProvenanceManager.h:101
Definition: ControllerInterfaces.h:54
std::stack< ItemHandle > Stack
Definition: ProvenanceManager.h:49
const IOType * networkIO() const
Definition: ProvenanceManager.h:195
void setInitialState(const Memento &initialState)
Definition: ProvenanceManager.h:83
List redoAll()
Definition: ProvenanceManager.h:184
ProvenanceItem< Memento > Item
Definition: ProvenanceManager.h:47
ItemHandle undo()
Definition: ProvenanceManager.h:115
size_t redoSize() const
Definition: ProvenanceManager.h:95
ItemHandle redo()
Definition: ProvenanceManager.h:145
Definition: ControllerInterfaces.h:42
boost::shared_ptr< ProvenanceItem< Memento > > Handle
Definition: ProvenanceItem.h:45