TCPSPSuite
transform.hpp
1 #ifndef TRANSFORM_H
2 #define TRANSFORM_H
3 
4 #include <set> // for set
5 #include "instance.hpp" // for Instance
6 #include "traits.hpp" // for TraitsRouter
7 
8 class Transformer {
9 public:
10  explicit Transformer();
11  // go away from pointers here.
12  virtual void run(const Instance & input) = 0;
13  virtual Instance get_transformed() = 0;
14 
15  virtual TraitsRouter::transform_profile get_transformation() const = 0;
16  virtual TraitsRouter::transform_profile get_requirements() const = 0;
17 
18 protected:
19 };
20 
21 class SameStartEndTransformer : public Transformer {
22 public:
23  explicit SameStartEndTransformer();
24  virtual void run(const Instance & input);
25  virtual Instance get_transformed();
26 
27  virtual TraitsRouter::transform_profile get_transformation() const;
28  virtual TraitsRouter::transform_profile get_requirements() const;
29 
30 private:
31  Instance transformed;
32 };
33 
34 class DummyStartEndTransformer : public Transformer {
35 public:
36  explicit DummyStartEndTransformer();
37  virtual void run(const Instance & input);
38  virtual Instance get_transformed();
39 
40  virtual TraitsRouter::transform_profile get_transformation() const;
41  virtual TraitsRouter::transform_profile get_requirements() const;
42 private:
43  Instance transformed;
44 };
45 
46 class ConsistentWindowTransformer : public Transformer {
47 public:
48  explicit ConsistentWindowTransformer();
49  virtual void run(const Instance & input);
50  virtual Instance get_transformed();
51 
52  virtual TraitsRouter::transform_profile get_transformation() const;
53  virtual TraitsRouter::transform_profile get_requirements() const;
54 private:
55  Instance transformed;
56 };
57 
58 class TransformerManager {
59 public:
60  static const TransformerManager& get();
61 
62  const std::set<Transformer *> get_all() const;
63 
64  ~TransformerManager();
65 
66 private:
67  TransformerManager();
68 
69  static std::set<Transformer *> all_transformers;
70 };
71 
72 #endif
Instance
a TCPSP instance
Definition: instance.hpp:24