EasyLocalpp  3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
outputmanager.hh
Go to the documentation of this file.
1 #if !defined(_OUTPUT_MANAGER_HH_)
2 #define _OUTPUT_MANAGER_HH_
3 
4 #include <iostream>
5 
7 
8 namespace EasyLocal {
9 
10  namespace Core {
11 
15  template <class Input, class Output, class State, typename CFtype = int>
16  class OutputManager : public Printable
17  {
18  public:
19 
21  virtual void Print(std::ostream& os = std::cout) const;
22 
27  virtual void OutputState(const State &st, Output& out) const = 0;
28 
33  virtual void InputState(State &st, const Output& out) const = 0;
34 
39  virtual void ReadState(State &st, std::istream &is) const;
40 
45  virtual void WriteState(const State &st, std::ostream &os) const;
46 
47  virtual void PrettyPrintOutput(const State &st, const std::string& file_name) const { std::cout << "Sorry, not implemented yet" << std::endl; }
48 
49  protected:
50 
54  OutputManager(const Input& i, std::string e_name)
55  : in(i), name(e_name)
56  {}
57  virtual ~OutputManager() {}
58 
60  const Input& in;
61 
63  const std::string name;
64  };
65 
68  template <class Input, class Output, class State, typename CFtype>
70  {
71  os << "Output Manager: " << name << std::endl;
72  }
73 
74  template <class Input, class Output, class State, typename CFtype>
75  void OutputManager<Input, Output, State, CFtype>::ReadState(State &st, std::istream &is) const
76  {
77  Output out(in);
78  is >> out;
79  InputState(st, out);
80  }
81 
82  template <class Input, class Output, class State, typename CFtype>
83  void OutputManager<Input, Output, State, CFtype>::WriteState(const State &st, std::ostream &os) const
84  {
85  Output out(in);
86  OutputState(st, out);
87  os << out;
88  }
89  }
90 }
91 
92 #endif // _OUTPUT_MANAGER_HH_
virtual void PrettyPrintOutput(const State &st, const std::string &file_name) const
OutputManager(const Input &i, std::string e_name)
virtual void WriteState(const State &st, std::ostream &os) const
virtual void InputState(State &st, const Output &out) const =0
virtual void OutputState(const State &st, Output &out) const =0
virtual void ReadState(State &st, std::istream &is) const
virtual void Print(std::ostream &os=std::cout) const