blob: 62812f1a19d9a1cc839c86dae9ea6f7e35c299ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#pragma once
#include <string>
#include "simple_settings.hpp"
template< typename var_type = bool >
class con_alias : public ISetting {
public:
con_alias( hash_t hash, con_var< var_type >* var ) :
m_var( var ),
m_value( var_type{ } ),
m_name( hash ),
m_is_var( true ) { };
con_alias( hash_t hash ) :
m_name( hash ),
m_value( 0 ),
m_var( nullptr ),
m_is_var( false ) { };
con_alias( hash_t hash, var_type&& rhs ) :
m_name( hash ),
m_value( rhs ),
m_var( nullptr ),
m_is_var( false ) { };
virtual std::string get_string( ) override {
if( m_is_var )
return m_var->get_string( );
else
return std::to_string( m_value );
}
virtual void set_value( int value ) override {
set_value_internal( value );
}
virtual void set_value( float value ) override {
set_value_internal( value );
}
virtual void set_value( ulong_t value ) override {
set_value_internal( value );
}
private:
template < typename t >
void set_value_internal( t&& val ) {
if( m_is_var )
m_var->set( val );
else
m_value = ( var_type )( val );
}
private:
bool m_is_var;
hash_t m_name;
var_type m_value;
con_var< var_type >* m_var;
};
|