28 lines
1001 B
C++
28 lines
1001 B
C++
#include <structive/property/property.hpp>
|
|
#include <iostream>
|
|
using namespace structive;
|
|
struct Device : Property_Object<Device> {
|
|
double temperature{25.0};
|
|
double pressure{101.3};
|
|
int serial_number{1001};
|
|
};
|
|
template <>
|
|
struct structive::Type_Descriptor<Device> {
|
|
static auto get() {
|
|
return object<Device>(
|
|
synchronization(sync_all_independent),
|
|
field<&Device::temperature>(key<"temperature">, unit<"C">, min_value<-50.0>, max_value<200.0>),
|
|
field<&Device::pressure>(key<"pressure">, unit<"kPa">),
|
|
field<&Device::serial_number>(key<"serial_number">, read_only)
|
|
);
|
|
}
|
|
};
|
|
int main() {
|
|
Device device;
|
|
device.write<&Device::temperature>(30.0);
|
|
std::cout << "temperature=" << device.read<&Device::temperature>() << '\n';
|
|
std::cout << "serial_number=" << device.read<&Device::serial_number>() << '\n';
|
|
std::cout << "lock_count=" << device.resolved_synchronization().lock_count << '\n';
|
|
return 0;
|
|
}
|