From d2a6c799e2e6aaf58e04ef1304e5cef79f5b2a62 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 7 Nov 2026 19:05:48 +0100 Subject: Adding proper Bool --- modules/codec/c++/data.hpp | 52 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'modules/codec/c++/data.hpp') diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp index a8b7836..6413bb7 100644 --- a/modules/codec/c++/data.hpp +++ b/modules/codec/c++/data.hpp @@ -101,26 +101,68 @@ public: }; template<> -class data { +class data final { public: using Schema = schema::Bool; using MetaSchema = schema::Void; private: bool value_; public: - data():value_{false}{} - data(data):value_{false}{} + constexpr data():value_{false}{} + constexpr data(data):value_{false}{} SAW_DEFAULT_COPY(data); SAW_DEFAULT_MOVE(data); - void set(bool val){ + constexpr data(bool value__): + value_{value__} + {} + + constexpr void set(bool val){ value_ = val; } - bool get() const { + constexpr bool get() const { return value_; } + + template + constexpr bool equals(const data& rhs) const { + return get() == rhs.get(); + } + + template + constexpr bool operator==(const data& rhs) const { + return equals(rhs); + } + + template + constexpr bool operator!=(const data& rhs) const { + return get() != rhs.get(); + } + + constexpr data operator!() const { + return {!get()}; + } + + template + constexpr data operator&&(const data& rhs) const { + return {get() && rhs.get()}; + } + + template + constexpr data operator||(const data& rhs) const { + return {get() || rhs.get()}; + } + + /** + * Casts + */ + template + constexpr data cast_to() const { + auto raw_to = static_cast::type>(value_); + return {raw_to}; + } }; template -- cgit v1.3.1