LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
builder.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include <vector>
5 #include "documentoperation.h"
6 #include "undoable.h"
7 
8 namespace lc {
9  namespace operation {
13  class Builder : public DocumentOperation {
14  public:
15  Builder(Document_SPtr document, const std::string& description);
16 
22  void append(DocumentOperation_SPtr operation);
23 
24  virtual void undo() const override;
25  virtual void redo() const override;
26 
27  protected:
28  virtual void processInternal() override;
29 
30  private:
31  std::vector<DocumentOperation_SPtr> _operations;
32  };
33 
35  }
36 }
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
DECLARE_SHORT_SHARED_PTR(Document)
Definition: cadentity.h:12
std::vector< DocumentOperation_SPtr > _operations
Definition: builder.h:31
Do multiple operations on a document with only one undo cycle.
Definition: builder.h:13
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