4 template<
class ChildT >
7 cm( inst, this,
"OneChildElem" ),
8 child( &this->cm, nullptr ),
9 heap( inst, &this->cm )
11 this->cm.inherits( this->Elem::cm );
14 template<
class ChildT >
17 if( this->child.Get() )
23 this->child.Get()->elem()->input_treeRefresh();
24 this->child.Get()->elem()->input_deactivate();
25 this->child.Get()->elem()->input_setParent(
nullptr );
29 template<
class ChildT >
30 template<
class T,
class ... CArgs >
33 static_assert( std::is_base_of< ChildT, T >::value,
"Child must inherit ChildT." );
34 auto t = this->heap.template createClient< T >( cargs ... );
39 template<
class ChildT >
40 template<
class T,
class ... CArgs >
43 static_assert( std::is_base_of< ChildT, T >::value,
"Child must inherit ChildT." );
44 auto t = this->heap.template createInstance< T >( name, cargs ... );
49 template<
class ChildT >
52 if( this->child.Get() )
62 this->child.Set( child );
65 child->elem()->input_setParent(
this );
66 this->input_treeRefresh();
69 child->elem()->elem_setParent(
this );
72 template<
class ChildT >
75 if( !this->child.Get() )
80 this->child.Get()->elem()->input_setParent(
nullptr );
81 this->input_treeRefresh();
84 this->child.Get()->elem()->elem_setParent(
nullptr );
87 this->child.Set(
nullptr );
90 template<
class ChildT >
93 if( this->child.Get() )
94 f( this->child.Get()->elem() );
97 template<
class ChildT >
100 if( this->child.Get()->elem() == node )
104 template<
class ChildT >
107 this->Elem::input_eachChild( f );
109 if( this->child.Get() )
110 f( this->child.Get()->elem() );
113 template<
class ChildT >
116 this->Elem::input_childDisconnect( child );
118 if( this->child.Get()->elem() == child )