diff options
Diffstat (limited to 'src/components/smart_objects/include/smart_objects/number_schema_item.h')
-rw-r--r-- | src/components/smart_objects/include/smart_objects/number_schema_item.h | 70 |
1 files changed, 32 insertions, 38 deletions
diff --git a/src/components/smart_objects/include/smart_objects/number_schema_item.h b/src/components/smart_objects/include/smart_objects/number_schema_item.h index d549b9891a..6481605daf 100644 --- a/src/components/smart_objects/include/smart_objects/number_schema_item.h +++ b/src/components/smart_objects/include/smart_objects/number_schema_item.h @@ -35,13 +35,14 @@ #include <typeinfo> #include <limits> -#include "utils/shared_ptr.h" + #include "smart_objects/default_shema_item.h" #include "smart_objects/schema_item_parameter.h" #include "utils/convert_utils.h" +#include "utils/helpers.h" -namespace NsSmartDeviceLink { -namespace NsSmartObjects { +namespace ns_smart_device_link { +namespace ns_smart_objects { /** * @brief Number schema item. * @tparam NumberType Number type. @@ -56,7 +57,7 @@ class TNumberSchemaItem : public CDefaultSchemaItem<NumberType> { * @param DefaultValue Default value. * @return Shared pointer to a new schema item. **/ - static utils::SharedPtr<TNumberSchemaItem> create( + static std::shared_ptr<TNumberSchemaItem> create( const TSchemaItemParameter<NumberType>& MinValue = TSchemaItemParameter<NumberType>(), const TSchemaItemParameter<NumberType>& MaxValue = @@ -65,20 +66,16 @@ class TNumberSchemaItem : public CDefaultSchemaItem<NumberType> { TSchemaItemParameter<NumberType>()); /** - * @deprecated - * @brief Validate smart object. - * @param Object Object to validate. - * @return Errors::ERROR - **/ - Errors::eType validate(const SmartObject& Object) OVERRIDE; - /** * @brief Validate smart object. * @param Object Object to validate. * @param report__ object for reporting errors during validation - * @return Errors::ERROR + * @param MessageVersion to check mobile RPC version against RPC Spec History + * @return ns_smart_objects::errors::eType **/ - Errors::eType validate(const SmartObject& Object, - rpc::ValidationReport* report__) OVERRIDE; + errors::eType validate(const SmartObject& Object, + rpc::ValidationReport* report__, + const utils::SemanticVersion& MessageVersion = + utils::SemanticVersion()) OVERRIDE; private: /** @@ -111,11 +108,12 @@ class TNumberSchemaItem : public CDefaultSchemaItem<NumberType> { }; template <typename NumberType> -utils::SharedPtr<TNumberSchemaItem<NumberType> > TNumberSchemaItem< +std::shared_ptr<TNumberSchemaItem<NumberType> > TNumberSchemaItem< NumberType>::create(const TSchemaItemParameter<NumberType>& MinValue, const TSchemaItemParameter<NumberType>& MaxValue, const TSchemaItemParameter<NumberType>& DefaultValue) { - return new TNumberSchemaItem<NumberType>(MinValue, MaxValue, DefaultValue); + return std::shared_ptr<TNumberSchemaItem<NumberType> >( + new TNumberSchemaItem<NumberType>(MinValue, MaxValue, DefaultValue)); } template <typename NumberType> @@ -123,27 +121,23 @@ bool TNumberSchemaItem<NumberType>::isValidNumberType(SmartType type) { NumberType value(0); if ((SmartType_Double == type) && (typeid(double) == typeid(value))) { return true; - } else if ((SmartType_Integer == type) && - (typeid(int32_t) == typeid(value) || - typeid(uint32_t) == typeid(value) || - typeid(int64_t) == typeid(value) || - typeid(double) == typeid(value))) { + } else if (((SmartType_Integer == type) || (SmartType_UInteger == type)) && + helpers::Compare<const std::type_info&, helpers::EQ, helpers::ONE>( + typeid(value), + typeid(int32_t), + typeid(uint32_t), + typeid(int64_t), + typeid(double))) { return true; - } else { - return false; } + return false; } template <typename NumberType> -Errors::eType TNumberSchemaItem<NumberType>::validate( - const SmartObject& Object) { - rpc::ValidationReport report("RPC"); - return validate(Object, &report); -} - -template <typename NumberType> -Errors::eType TNumberSchemaItem<NumberType>::validate( - const SmartObject& Object, rpc::ValidationReport* report__) { +errors::eType TNumberSchemaItem<NumberType>::validate( + const SmartObject& Object, + rpc::ValidationReport* report__, + const utils::SemanticVersion& MessageVersion) { if (!isValidNumberType(Object.getType())) { SmartType expectedType = (typeid(double) == typeid(Object.getType())) ? SmartType_Double @@ -152,7 +146,7 @@ Errors::eType TNumberSchemaItem<NumberType>::validate( "Incorrect type, expected: " + SmartObject::typeToString(expectedType) + ", got: " + SmartObject::typeToString(Object.getType()); report__->set_validation_info(validation_info); - return Errors::INVALID_VALUE; + return errors::INVALID_VALUE; } NumberType value(0); if (typeid(int32_t) == typeid(value)) { @@ -176,7 +170,7 @@ Errors::eType TNumberSchemaItem<NumberType>::validate( << ", minimum allowed: " << rangeLimit; std::string validation_info = stream.str(); report__->set_validation_info(validation_info); - return Errors::OUT_OF_RANGE; + return errors::OUT_OF_RANGE; } if (mMaxValue.getValue(rangeLimit) && (value > rangeLimit)) { @@ -185,9 +179,9 @@ Errors::eType TNumberSchemaItem<NumberType>::validate( << ", maximum allowed: " << rangeLimit; std::string validation_info = stream.str(); report__->set_validation_info(validation_info); - return Errors::OUT_OF_RANGE; + return errors::OUT_OF_RANGE; } - return Errors::OK; + return errors::OK; } template <typename NumberType> @@ -225,6 +219,6 @@ SmartType TNumberSchemaItem<int64_t>::getSmartType() const; template <> SmartType TNumberSchemaItem<double>::getSmartType() const; -} // namespace NsSmartObjects -} // namespace NsSmartDeviceLink +} // namespace ns_smart_objects +} // namespace ns_smart_device_link #endif // SRC_COMPONENTS_SMART_OBJECTS_INCLUDE_SMART_OBJECTS_NUMBER_SCHEMA_ITEM_H_ |