Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_graphics
Elements
VectorChildrenElem.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Slot.hpp
"
4
#include <
ivorium_systems/ivorium_systems.hpp
>
5
6
namespace
iv
7
{
8
11
template
<
class
ChildT >
12
class
VectorChildrenElem
:
public
Elem
13
{
14
public
:
15
ClientMarker
cm
;
16
17
VectorChildrenElem
(
Instance
* inst );
18
~VectorChildrenElem
();
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
;
35
bool
children_dirty
;
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
"