From 3ea9aa9c4df38620049705c9cae109cb4f4479fc Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Fri, 3 May 2024 21:55:49 +0300 Subject: [PATCH] ... --- device/adc_device_attribute.h | 41 +++++++---------------------------- tests/adc_devattr_test.cpp | 10 ++++----- 2 files changed, 13 insertions(+), 38 deletions(-) diff --git a/device/adc_device_attribute.h b/device/adc_device_attribute.h index cc18098..1045610 100644 --- a/device/adc_device_attribute.h +++ b/device/adc_device_attribute.h @@ -30,7 +30,7 @@ public: template constexpr static T DummyGetter() { - return std::declval(); + return T(); } @@ -42,41 +42,22 @@ public: template constexpr static SerializedT DummySerializer(const T&) { - return std::declval(); + return SerializedT(); } template constexpr static T DummyDeserializer(const SerializedT&) { - return std::declval(); + return T(); } /* CONSTRUCTORS AND DESTRUCTOR */ // general read-write attribute constructor - template , - typename VT = decltype(AdcValueHolder::AdcValueHolderDummyValidator), - typename SRT = decltype(utils::AdcDefaultValueConverter<>::serialize), - typename DSRT = decltype(utils::AdcDefaultValueConverter<>::deserialize)> - AdcDeviceAttribute(const IdentT& ident, - AccessType access_type, - GT&& getter, - ST&& setter, - VT&& validator = AdcValueHolder::AdcValueHolderDummyValidator, - SRT&& serializer = utils::AdcDefaultValueConverter<>::serialize, - DSRT&& deserializer = utils::AdcDefaultValueConverter<>::deserialize) - requires std::invocable && std::invocable && std::predicate && - std::invocable && std::invocable - : base_t(std::forward(getter), - std::forward(setter), - std::forward(validator), - std::forward(serializer), - std::forward(deserializer)), - _ident(ident), - _accessType(access_type) + template + AdcDeviceAttribute(const IdentT& ident, SerValHolderTs&&... ctor_args) + : base_t(std::forward(ctor_args)...), _ident(ident), _accessType(ReadWrite) { } @@ -90,13 +71,13 @@ public: SRT&& serializer = utils::AdcDefaultValueConverter<>::serialize) requires std::invocable && std::invocable : AdcDeviceAttribute(ident, - ReadOnly, std::forward(getter), AdcDeviceAttribute::DummySetter, AdcValueHolder::AdcValueHolderDummyValidator, std::forward(serializer), AdcDeviceAttribute::DummyDeserializer) { + _accessType = ReadOnly; } @@ -110,22 +91,16 @@ public: DSRT&& deserializer = utils::AdcDefaultValueConverter<>::deserialize) requires std::invocable : AdcDeviceAttribute(ident, - WriteOnly, AdcDeviceAttribute::DummyGetter, std::forward(setter), std::forward(validator), AdcDeviceAttribute::DummySerializer, std::forward(deserializer)) { + _accessType = WriteOnly; } - // constructor of attribute with trivially casting type converters - template - AdcDeviceAttribute(const std::tuple&, Ts&&... ctor_args) - : AdcDeviceAttribute(std::forward(ctor_args)...) - { - } virtual ~AdcDeviceAttribute() = default; diff --git a/tests/adc_devattr_test.cpp b/tests/adc_devattr_test.cpp index 36c7a41..4497f2e 100644 --- a/tests/adc_devattr_test.cpp +++ b/tests/adc_devattr_test.cpp @@ -34,11 +34,11 @@ TEST_CASE("[ADC DEVICE ATTRIBUTE]") // attr_t attr(AdcValueHolder::_defaultTrivialConvTypes, "ATTR_A", attr_t::ReadWrite, vv::getter, vv::setter, // vv::validator); - attr_t attr("ATTR_A", attr_t::ReadWrite, vv::getter, vv::setter, vv::validator); + attr_t attr("ATTR_A", vv::getter, vv::setter, vv::validator, AdcValueHolder::_defaultTrivialConvTypes); - // attr = 10.7; - // av = attr; + attr = 10.7; + av = attr; - // std::cout << "ATTR = " << av << "\n"; - std::cout << "ATTR = " << (unsigned)attr << "\n"; + std::cout << "ATTR = " << av << "\n"; + // std::cout << "ATTR = " << (unsigned)attr << "\n"; }