OneChildElem.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Elem.hpp"
5 
6 namespace iv
7 {
8 
11 template< class ChildT >
12 class OneChildElem : public Elem
13 {
14 public:
16 
17  OneChildElem( Instance * inst );
18  ~OneChildElem();
19 
23  template< class T, class ... CArgs >
24  T * createChild( CArgs const & ... cargs );
25 
26  template< class T, class ... CArgs >
27  T * createChild_Instance( char const * name, CArgs const & ... cargs );
28 
29  void setChild( ChildT * );
30  void removeChild();
31 
32 protected:
33  // initialziation parameter (managed by methods)
35 
36  // Elem
37  virtual void elem_eachChild( std::function< void( Elem * ) > const & ) override;
38  virtual void elem_childDisconnect( Elem * ) override;
39 
40  // InputNode
41  virtual void input_eachChild( std::function< void( InputNode * ) > const & f ) override;
42  virtual void input_childDisconnect( InputNode * child ) override;
43 
44 private:
45  Heap heap;
46 };
47 
48 }
49 
50 #include "OneChildElem.inl"