refactor (cxx)!: I2C C++ classes use strong value types now

Added host-based I2C C++ unit tests

BREAKING CHANGE: I2C C++ interface changes, raw values for
    arguments are mostly not allowed anymore.
This commit is contained in:
Jakob Hasse
2021-10-25 18:58:15 +08:00
parent 47ab8f8e63
commit 7572f75d6b
10 changed files with 855 additions and 417 deletions

View File

@@ -28,7 +28,7 @@
template<typename ValueT>
class StrongValue {
protected:
StrongValue(ValueT value_arg) : value(value_arg) { }
constexpr StrongValue(ValueT value_arg) : value(value_arg) { }
ValueT get_value() const {
return value;
@@ -44,7 +44,7 @@ private:
template<typename ValueT>
class StrongValueComparable : public StrongValue<ValueT> {
protected:
StrongValueComparable(ValueT value_arg) : StrongValue<ValueT>(value_arg) { }
constexpr StrongValueComparable(ValueT value_arg) : StrongValue<ValueT>(value_arg) { }
public:
using StrongValue<ValueT>::get_value;