5.1 KiB
Tutorial
@tableofcontents
What is a property:
A property is a generic interface to manage parameter of a class whithout redeclare all the time the setter and getter (that is a little boring)
Calling a property car mermit to be notify when the value change and to control the values range of list ...
A property can use agreator interface eproperty::interface that declare a "properties" variablke that permit to acces at all the property declared.
Declare a class that have this interface: @snippet sampleAll.cpp eproperty_sample_declare_class_with_interface
Declare property:
We have some basic properties:
- eproperty::Value Simple store of a unique Value
- eproperty::Range Store a value inside an authorized range
- eproperty::List Store a value inside a list of values (set in constructor)
Declare a Value property:
Do the correct include: @snippet sampleAll.cpp eproperty_sample_declare_value
Declare your property: @snippet sampleAll.cpp eproperty_sample_declare_class_property_value
Construct the property with eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_value
Construct the property with NO eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_value2
Configure your property: @snippet sampleAll.cpp eproperty_sample_use_set_value_1
Use your property: @snippet sampleAll.cpp eproperty_sample_get_value_value
Declare a Range property:
Do the correct include: @snippet sampleAll.cpp eproperty_sample_declare_range
Declare your property: @snippet sampleAll.cpp eproperty_sample_declare_class_property_range
Construct the property with eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_range
Construct the property with NO eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_range2
Configure your property: @snippet sampleAll.cpp eproperty_sample_use_set_range_1
Use your property: @snippet sampleAll.cpp eproperty_sample_get_value_range
Declare a List property:
Do the correct include: @snippet sampleAll.cpp eproperty_sample_declare_list
Declare your property: @snippet sampleAll.cpp eproperty_sample_declare_class_property_list
Construct the property with eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_list
Construct the property with NO eproperty::Interface: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_list2
Special case for the List is adding the value with their string assiciated: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_list_add
Configure your property: @snippet sampleAll.cpp eproperty_sample_use_set_list_1
Use your property: @snippet sampleAll.cpp eproperty_sample_get_value_list
Particularity:
Define a callback:
All property can define a callback, it is used to update class property with special settings.
The callback is set in the construction instruction like: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_value
The fucntion define is like: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_value_callback
It is called every time the Value change, if the value is identical the callback is not called.
Set value without calling the callback:
To set a value in a property without calling the nitifiction function, you might use: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_set_direct
Please do not use it ouside the internal class that define the peoperty (call me if you have an api to control it at the compilation time)
Heritage and callback:
When you herit from an other class with theire property you can prefer changing the default value or set an other list of parameter.
To set value without calling the callback (that can be virtual then ==0 in the initialisation state), you need to call: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_set_direct
For the eproperty::List, you chan rename enumeration or remove values: @snippet sampleAll.cpp eproperty_sample_initialize_class_property_list_rename
All sample Code:
This Will generate this simple sample code: @snippet sampleAll.cpp eproperty_sample_all