Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_graphics
Elements
OneChildElem.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Elem.hpp
"
4
#include <
ivorium_core/ivorium_core.hpp
>
5
6
namespace
iv
7
{
8
11
template
<
class
ChildT >
12
class
OneChildElem
:
public
Elem
13
{
14
public
:
15
ClientMarker
cm
;
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)
34
DirtyAttr< ChildT * >
child
;
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
"