diff options
Diffstat (limited to 'src/components/rpc_base/include/rpc_base/rpc_base_inl.h')
-rw-r--r-- | src/components/rpc_base/include/rpc_base/rpc_base_inl.h | 67 |
1 files changed, 49 insertions, 18 deletions
diff --git a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h index b6b47c2ed8..a7b477c009 100644 --- a/src/components/rpc_base/include/rpc_base/rpc_base_inl.h +++ b/src/components/rpc_base/include/rpc_base/rpc_base_inl.h @@ -46,8 +46,7 @@ namespace rpc { * Range helper class */ template <typename T> -Range<T>::Range(T min, T max) - : min_(min), max_(max) {} +Range<T>::Range(T min, T max) : min_(min), max_(max) {} template <typename T> T Range<T>::min() const { @@ -139,6 +138,10 @@ inline Boolean::Boolean() : PrimitiveType(kUninitialized), value_(false) {} inline Boolean::Boolean(bool value) : PrimitiveType(kValid), value_(value) {} +inline bool Boolean::operator==(const Boolean& that) { + return value_ == that.value_; +} + inline Boolean& Boolean::operator=(bool new_val) { value_ = new_val; value_state_ = kValid; @@ -186,12 +189,14 @@ Integer<T, minval, maxval>& Integer<T, minval, maxval>::operator=( template <typename T, T minval, T maxval> Integer<T, minval, maxval>& Integer<T, minval, maxval>::operator++() { ++value_; + value_state_ = range_.Includes(value_) ? kValid : kInvalid; return *this; } template <typename T, T minval, T maxval> Integer<T, minval, maxval>& Integer<T, minval, maxval>::operator+=(int value) { value_ += value; + value_state_ = range_.Includes(value_) ? kValid : kInvalid; return *this; } @@ -236,8 +241,7 @@ template <size_t minlen, size_t maxlen> const Range<size_t> String<minlen, maxlen>::length_range_(minlen, maxlen); template <size_t minlen, size_t maxlen> -String<minlen, maxlen>::String() - : PrimitiveType(kUninitialized) {} +String<minlen, maxlen>::String() : PrimitiveType(kUninitialized) {} template <size_t minlen, size_t maxlen> String<minlen, maxlen>::String(const std::string& value) @@ -280,6 +284,21 @@ bool String<minlen, maxlen>::operator==(const String& rhs) const { } template <size_t minlen, size_t maxlen> +bool String<minlen, maxlen>::operator==(const std::string& rhs) const { + return value_ == rhs; +} + +template <size_t minlen, size_t maxlen> +bool String<minlen, maxlen>::operator!=(const String& rhs) const { + return value_ != rhs.value_; +} + +template <size_t minlen, size_t maxlen> +bool String<minlen, maxlen>::operator!=(const std::string& rhs) const { + return value_ != rhs; +} + +template <size_t minlen, size_t maxlen> String<minlen, maxlen>::operator const std::string&() const { return value_; } @@ -288,8 +307,7 @@ String<minlen, maxlen>::operator const std::string&() const { * Enum class */ template <typename T> -Enum<T>::Enum() - : PrimitiveType(kUninitialized), value_(EnumType()) {} +Enum<T>::Enum() : PrimitiveType(kUninitialized), value_(EnumType()) {} template <typename T> Enum<T>::Enum(EnumType value) @@ -311,8 +329,7 @@ Enum<T>::operator EnumType() const { * Array class */ template <typename T, size_t minsize, size_t maxsize> -Array<T, minsize, maxsize>::Array() - : CompositeType(kUninitialized) {} +Array<T, minsize, maxsize>::Array() : CompositeType(kUninitialized) {} template <typename T, size_t minsize, size_t maxsize> template <typename U> @@ -367,6 +384,20 @@ bool Array<T, minsize, maxsize>::is_initialized() const { } template <typename T, size_t minsize, size_t maxsize> +bool Array<T, minsize, maxsize>::operator==(const Array& that) { + if (this->size() != that.size()) + return false; + + for (auto i = std::begin(*this), j = std::begin(that); i != std::end(*this); + ++i, ++j) { + if (!(*i == *j)) { + return false; + } + } + return true; +} + +template <typename T, size_t minsize, size_t maxsize> void Array<T, minsize, maxsize>::ReportErrors(ValidationReport* report) const { if (this->empty()) { CompositeType::ReportErrors(report); @@ -401,13 +432,11 @@ void Array<T, minsize, maxsize>::SetPolicyTableType( * Map class */ template <typename T, size_t minsize, size_t maxsize> -Map<T, minsize, maxsize>::Map() - : CompositeType(kUninitialized) {} +Map<T, minsize, maxsize>::Map() : CompositeType(kUninitialized) {} template <typename T, size_t minsize, size_t maxsize> template <typename U> -Map<T, minsize, maxsize>::Map(const U& value) - : CompositeType(kUninitialized) { +Map<T, minsize, maxsize>::Map(const U& value) : CompositeType(kUninitialized) { for (typename U::const_iterator i = value.begin(), e = value.end(); i != e; ++i) { // Explicitly convert that value to T because all rpc_types have explicit @@ -499,13 +528,11 @@ void Map<T, minsize, maxsize>::SetPolicyTableType( * Nullable class */ template <typename T> -Nullable<T>::Nullable() - : marked_null_(false) {} +Nullable<T>::Nullable() : marked_null_(false) {} template <typename T> template <typename U> -Nullable<T>::Nullable(const U& value) - : T(value), marked_null_(false) {} +Nullable<T>::Nullable(const U& value) : T(value), marked_null_(false) {} template <typename T> template <typename U> @@ -577,6 +604,11 @@ const T* Optional<T>::operator->() const { } template <typename T> +bool Optional<T>::operator==(const Optional<T>& that) { + return value_ == that.value_; +} + +template <typename T> void Optional<T>::assign_if_valid(const Optional<T>& value) { if (value.is_initialized()) { value_ = value.value_; @@ -623,8 +655,7 @@ void rpc::Optional<T>::SetPolicyTableType( * Stringifyable class */ template <typename T> -Stringifyable<T>::Stringifyable() - : predefined_string_("") {} +Stringifyable<T>::Stringifyable() : predefined_string_("") {} template <typename T> template <typename U> |