From d43d73fe9078411e48a684edf39986e998dcde35 Mon Sep 17 00:00:00 2001 From: Herasym Oleh Date: Wed, 2 Dec 2015 10:16:51 +0200 Subject: hotfix/Fix_Unit_Tests_for_Formatter_in_Genivi Added changes to smart_object from SDL_Panasonic. Related: APPLINK-17577 --- .../include/smart_objects/smart_object.h | 5 +++++ src/components/smart_objects/src/smart_object.cc | 23 +++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) (limited to 'src/components/smart_objects') diff --git a/src/components/smart_objects/include/smart_objects/smart_object.h b/src/components/smart_objects/include/smart_objects/smart_object.h index bd70b7ea11..eca1199cec 100644 --- a/src/components/smart_objects/include/smart_objects/smart_object.h +++ b/src/components/smart_objects/include/smart_objects/smart_object.h @@ -93,6 +93,11 @@ enum SmartType { **/ SmartType_Binary = 8, + /** + * @brief Unsigned Integer value. + **/ + SmartType_UInteger = 9, + /** * @brief Invalid value. Represents invalid object that cannot change his type. **/ diff --git a/src/components/smart_objects/src/smart_object.cc b/src/components/smart_objects/src/smart_object.cc index 264652e448..599141f087 100644 --- a/src/components/smart_objects/src/smart_object.cc +++ b/src/components/smart_objects/src/smart_object.cc @@ -72,6 +72,9 @@ SmartObject::SmartObject(SmartType Type) case SmartType_Integer: set_value_integer(0); break; + case SmartType_UInteger: + set_value_integer(0); + break; case SmartType_Double: set_value_double(0); break; @@ -121,6 +124,8 @@ bool SmartObject::operator==(const SmartObject& Other) const { switch (m_type) { case SmartType_Integer: return m_data.int_value == Other.m_data.int_value; + case SmartType_UInteger: + return m_data.int_value == Other.m_data.int_value; case SmartType_Double: return m_data.double_value == Other.m_data.double_value; case SmartType_Boolean: @@ -201,7 +206,12 @@ bool SmartObject::operator==(const int32_t Value) const { } void SmartObject::set_value_integer(int64_t NewValue) { - set_new_type(SmartType_Integer); + if (NewValue > std::numeric_limits::max() + && NewValue <= std::numeric_limits::max()) { + set_new_type(SmartType_UInteger); + } else { + set_new_type(SmartType_Integer); + } m_data.int_value = NewValue; } @@ -213,6 +223,8 @@ int64_t SmartObject::convert_int() const { return (m_data.bool_value == true) ? 1 : 0; case SmartType_Integer: return m_data.int_value; + case SmartType_UInteger: + return m_data.int_value; case SmartType_Double: return static_cast(m_data.double_value); default: @@ -836,12 +848,9 @@ std::set SmartObject::enumerate() const { std::set keys; if (m_type == SmartType_Map) { - std::transform( - m_data.map_value->begin(), - m_data.map_value->end(), - std::inserter(keys, keys.end()), - &SmartObject::OperatorToTransform - ); + std::transform(m_data.map_value->begin(), m_data.map_value->end(), + std::inserter(keys, keys.end()), + &SmartObject::OperatorToTransform); } return keys; } -- cgit v1.2.1