add ability of authomatic attribute-value type conversion (for user
given types!)
This commit is contained in:
@@ -6,50 +6,71 @@ using namespace adc;
|
||||
|
||||
int main()
|
||||
{
|
||||
std::string id1 = "1", id2 = "2";
|
||||
|
||||
int i = 10;
|
||||
double d = 8.1;
|
||||
std::string s{"dwedjkwlk"};
|
||||
|
||||
AdcGenericDevice<> dev("DEV#1");
|
||||
|
||||
std::println("add RW-attr with id='{}' (val={})", id1, i);
|
||||
dev.addAttr(
|
||||
"1", [&i]() -> adc_result_t<int> { return i; },
|
||||
id1, [&i]() -> adc_result_t<int> { return i; },
|
||||
[&i](int ii) -> adc_error_t {
|
||||
i = ii;
|
||||
return AdcDeviceErrorCode::ERROR_OK;
|
||||
});
|
||||
},
|
||||
std::tuple<double, int, long>{});
|
||||
|
||||
dev.addAttr("2", [&d]() -> adc_result_t<double> { return d; }, nullptr);
|
||||
std::println("add RO-attr with id='{}' (val={})", id2, d);
|
||||
dev.addAttr(id2, [&d]() -> adc_result_t<double> { return d; }, nullptr);
|
||||
|
||||
adc_result_t<int> ri = dev["1"];
|
||||
std::print("get '{}'-attr value as native int:\t", id1);
|
||||
adc_result_t<int> ri = dev[id1];
|
||||
if (ri) {
|
||||
std::println("dev[1] = {}", ri.value());
|
||||
std::println("dev[{}] = {}", id1, ri.value());
|
||||
} else {
|
||||
std::println("cannot get dev[1] as int: {}", ri.error().message());
|
||||
std::println("cannot get dev[{}] as int: {}", id1, ri.error().message());
|
||||
}
|
||||
|
||||
auto err = dev["1"] = 77;
|
||||
int ii = 77;
|
||||
std::print("set '{}'-attr value to {} as native int:\t", id1, ii);
|
||||
auto err = dev[id1] = ii;
|
||||
if (err) {
|
||||
std::println("cannot set dev[1] as int: {}", err.message());
|
||||
std::println("cannot set dev[{}] as int: {}", id1, err.message());
|
||||
} else {
|
||||
std::println("OK");
|
||||
}
|
||||
|
||||
adc_result_t<double> rd = dev["1"];
|
||||
std::print("get '{}'-attr value as double:\t", id1);
|
||||
adc_result_t<double> rd = dev[id1];
|
||||
if (rd) {
|
||||
std::println("dev[1] = {}", rd.value());
|
||||
std::println("dev[{}] = {}", id1, rd.value());
|
||||
} else {
|
||||
std::println("cannot get dev[1] as double: {}", rd.error().message());
|
||||
std::println("cannot get dev[{}] as double: {}", id1, rd.error().message());
|
||||
}
|
||||
|
||||
ri = dev["1"];
|
||||
if (ri) {
|
||||
std::println("dev[1] = {}", ri.value());
|
||||
} else {
|
||||
std::println("cannot get dev[1] as int: {}", ri.error().message());
|
||||
}
|
||||
|
||||
err = dev["2"] = 0.29817;
|
||||
double dd = 33.333;
|
||||
std::print("set '{}'-attr value to {} as double:\t", id1, dd);
|
||||
err = dev[id1] = dd;
|
||||
if (err) {
|
||||
std::println("cannot set dev[2] as double: {}", err.message());
|
||||
std::println("cannot set dev[{}] as double: {}", id1, err.message());
|
||||
} else {
|
||||
std::println("OK");
|
||||
}
|
||||
|
||||
std::print("get '{}'-attr value as native int:\t", id1);
|
||||
ri = dev[id1];
|
||||
if (ri) {
|
||||
std::println("dev[{}] = {}", id1, ri.value());
|
||||
} else {
|
||||
std::println("cannot get dev[{}] as int: {}", id1, ri.error().message());
|
||||
}
|
||||
|
||||
err = dev[id2] = 0.29817;
|
||||
if (err) {
|
||||
std::println("cannot set dev[{}] as double: {}", id2, err.message());
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user