Design Patterns
template_application.h
Go to the documentation of this file.
1 // Based on "Design Patterns: Elements of Reusable Object-Oriented Software"
2 // book by Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm
3 //
4 // Created by Bartosz Rachwal. The National Institute of Advanced Industrial Science and Technology, Japan.
5 
6 #ifndef OPERATIONAL_TEMPLATEMETHOD_TEMPLATE_APPLICATION_H_
7 #define OPERATIONAL_TEMPLATEMETHOD_TEMPLATE_APPLICATION_H_
8 
9 #include "document_interface.h"
10 
11 #include <list>
12 
13 namespace operational
14 {
15 namespace templatemethod
16 {
18 {
19  public:
21  virtual ~TemplateApplication();
22 
23  void OpenDocument(const std::string& path);
25 
26  virtual DocumentInterface *CreateDocument() = 0;
27  virtual bool CanOpenDocument(const std::string& path) = 0;
28  virtual void AboutToOpenDocument(DocumentInterface* document) = 0;
29 
30  private:
31  void AddDocument(DocumentInterface* document) const;
32 
33  std::list<DocumentInterface*>* documents_;
34 };
35 }
36 }
37 
38 #endif
39 
Definition: application.cc:10
virtual bool CanOpenDocument(const std::string &path)=0
Definition: template_application.h:17
TemplateApplication()
Definition: template_application.cc:12
virtual ~TemplateApplication()
Definition: template_application.cc:17
virtual void AboutToOpenDocument(DocumentInterface *document)=0
DocumentState GetCurrentDocumentState() const
Definition: template_application.cc:40
virtual DocumentInterface * CreateDocument()=0
Definition: document_interface.h:23
DocumentState
Definition: document_interface.h:13
void OpenDocument(const std::string &path)
Definition: template_application.cc:22