LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
builder.cpp
Go to the documentation of this file.
1 #include "builder.h"
2 
3 using namespace lc;
4 using namespace operation;
5 
6 Builder::Builder(Document_SPtr document, const std::string& description) :
7  DocumentOperation(document, description) {
8 
9 }
10 
11 void Builder::append(DocumentOperation_SPtr operation) {
12  if(operation->document() != document()) {
13  throw "Operation should have the same document";
14  }
15 
16  _operations.push_back(operation);
17 }
18 
19 void Builder::undo() const {
20  for(auto it = _operations.rbegin(); it != _operations.rend(); it++) {
21  (*it)->undo();
22  }
23 }
24 
25 void Builder::redo() const {
26  for(auto operation : _operations) {
27  operation->redo();
28  }
29 }
30 
32  for(auto operation : _operations) {
33  operation->processInternal();
34  }
35 }
void append(DocumentOperation_SPtr operation)
Add an operation to the Builder.
Definition: builder.cpp:11
Builder(Document_SPtr document, const std::string &description)
Definition: builder.cpp:6
Definition: cadentity.h:12
std::vector< DocumentOperation_SPtr > _operations
Definition: builder.h:31
virtual void processInternal() override
Definition: builder.cpp:31
virtual void undo() const override
Undo a given operation.
Definition: builder.cpp:19
virtual void redo() const override
Redo a given operation.
Definition: builder.cpp:25