Toggle navigation
ivorium
iv_components
Example project
GitHub
Main Page
Modules
Classes
Files
File List
File Members
ivorium_core
Attribute
Attributes
PrivAttr.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Local_AEP.hpp
"
4
#include "../Attribute.hpp"
5
6
namespace
iv
7
{
8
9
template
<
class
T >
10
class
PrivAttr_I
;
11
14
template
<
class
T >
15
class
PrivAttr_Owner
16
{
17
public
:
18
virtual
void
PrivAttr_Get
(
PrivAttr_I< T >
*, T & out ) = 0;
19
virtual
void
PrivAttr_Modify
(
PrivAttr_I< T >
*, T
const
& value ) = 0;
20
21
protected
:
22
void
Attribute_SetMode
(
PrivAttr_I< T >
*,
Attribute::ValueMode
mode );
23
void
SourceValueChanged
(
PrivAttr_I< T >
* );
24
};
25
29
template
<
class
T >
30
class
PrivAttr_I
:
public
Attr
< T >
31
{
32
public
:
33
friend
class
PrivAttr_Owner
< T >;
34
35
PrivAttr_I
(
ClientMarker
*,
AttributeEventProcessor
*,
PrivAttr_Owner< T >
* owner );
36
37
protected
:
38
virtual
void
GetSourceValue
( T & out )
const override
;
39
virtual
void
ModifySource
( T
const
& )
const override
;
40
41
private
:
42
PrivAttr_Owner< T >
* owner;
43
};
44
47
template
<
class
T >
48
class
PrivAttr
final :
private
Local_AEP
,
public
PrivAttr_I
< T >
49
{
50
public
:
51
PrivAttr
(
ClientMarker
*,
PrivAttr_Owner< T >
* owner );
52
~PrivAttr
();
53
};
54
55
}
56
57
#include "
PrivAttr.inl
"