VectorChildrenElem.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Slot.hpp"
5 
6 namespace iv
7 {
8 
11 template< class ChildT >
12 class VectorChildrenElem : public Elem
13 {
14 public:
16 
17  VectorChildrenElem( Instance * inst );
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 pushChild( ChildT * );
30  void removeChild( ChildT * );
31 
32 protected:
33 // initialization parameters
34  std::vector< ChildT * > children;
36 
37  // Elem
38  virtual void elem_eachChild( std::function< void( Elem * ) > const & ) override;
39  virtual void elem_childDisconnect( Elem * ) override;
40 
41  // InputNode
42  virtual void input_eachChild( std::function< void( InputNode * ) > const & f ) override;
43  virtual void input_childDisconnect( InputNode * child ) override;
44 
45 private:
46  void _removeChild( size_t i );
47  Heap heap;
48 };
49 
50 }
51 
52 #include "VectorChildrenElem.inl"