diff options
author | Herasym Oleh <oolleehh@gmail.com> | 2015-12-02 10:16:51 +0200 |
---|---|---|
committer | Herasym Oleh <oolleehh@gmail.com> | 2015-12-02 10:16:51 +0200 |
commit | d43d73fe9078411e48a684edf39986e998dcde35 (patch) | |
tree | 840c7376533ed33703072b61d2f1c702e619d8ac /src/components/smart_objects | |
parent | 6db4399d61512c9c4c843d040b591dd9bb7e3b5c (diff) | |
download | sdl_core-d43d73fe9078411e48a684edf39986e998dcde35.tar.gz |
hotfix/Fix_Unit_Tests_for_Formatter_in_Genivi
Added changes to smart_object from SDL_Panasonic.
Related:
APPLINK-17577
Diffstat (limited to 'src/components/smart_objects')
-rw-r--r-- | src/components/smart_objects/include/smart_objects/smart_object.h | 5 | ||||
-rw-r--r-- | src/components/smart_objects/src/smart_object.cc | 23 |
2 files changed, 21 insertions, 7 deletions
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 @@ -94,6 +94,11 @@ enum SmartType { SmartType_Binary = 8, /** + * @brief Unsigned Integer value. + **/ + SmartType_UInteger = 9, + + /** * @brief Invalid value. Represents invalid object that cannot change his type. **/ SmartType_Invalid = -1 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<int32_t>::max() + && NewValue <= std::numeric_limits<uint32_t>::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<int64_t>(m_data.double_value); default: @@ -836,12 +848,9 @@ std::set<std::string> SmartObject::enumerate() const { std::set<std::string> 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; } |