1 #ifndef INCLUDED_DYNAMIC_OBJECT_H
2 #define INCLUDED_DYNAMIC_OBJECT_H
3 
4 #include "dynamic-parameters.h"
5 #include "eca-object.h"
6 
7 /**
8  * Virtual class for objects supporting dynamic parameter
9  * control.
10  *
11  * Related design patterns:
12  *     - Factory Method / Virtual Constructor (GoF107)
13  *
14  * @author Kai Vehmanen
15  */
16 template<class T>
17 class DYNAMIC_OBJECT : public DYNAMIC_PARAMETERS<T>,
18                        public ECA_OBJECT {
19 
20  public:
21 
~DYNAMIC_OBJECT(void)22   virtual ~DYNAMIC_OBJECT (void) {}
23 
24   /**
25    * Virtual method that clones the current object and returns
26    * a pointer to it. This must be implemented by all subclasses!
27    */
28   virtual DYNAMIC_OBJECT<T>* clone(void) const = 0;
29 
30   /**
31    * Virtual method that creates a new object of current type.
32    * This must be implemented by all subclasses!
33    */
34   virtual DYNAMIC_OBJECT<T>* new_expr(void) const = 0;
35 };
36 
37 #endif
38