diff options
Diffstat (limited to 'src/components/smart_objects/src/object_schema_item.cc')
-rw-r--r-- | src/components/smart_objects/src/object_schema_item.cc | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index 920d548c48..4b14d9e5a1 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -51,19 +51,21 @@ namespace ns_smart_device_link { namespace ns_smart_objects { SMember::SMember() - : mSchemaItem(CAlwaysFalseSchemaItem::create()) - , mIsMandatory(true) - , mIsDeprecated(false) - , mIsRemoved(false) {} + : mIsMandatory(true), mIsDeprecated(false), mIsRemoved(false) { + mSchemaItemShared = CAlwaysFalseSchemaItem::create(); + mSchemaItem = mSchemaItemShared.get(); +} -SMember::SMember(const ISchemaItemPtr SchemaItem, +SMember::SMember(ISchemaItem* SchemaItem, const bool IsMandatory, const std::string& Since, const std::string& Until, const bool IsDeprecated, const bool IsRemoved, const std::vector<SMember>& history_vector) - : mSchemaItem(SchemaItem), mIsMandatory(IsMandatory) { + : mSchemaItem(SchemaItem) + , mSchemaItemShared(nullptr) + , mIsMandatory(IsMandatory) { if (Since.size() > 0) { utils::SemanticVersion since_struct(Since); if (since_struct.isValid()) { @@ -81,6 +83,23 @@ SMember::SMember(const ISchemaItemPtr SchemaItem, mHistoryVector = history_vector; } +SMember::SMember(const ISchemaItemPtr SchemaItem, + const bool IsMandatory, + const std::string& Since, + const std::string& Until, + const bool IsDeprecated, + const bool IsRemoved, + const std::vector<SMember>& history_vector) + : SMember(SchemaItem.get(), + IsMandatory, + Since, + Until, + IsDeprecated, + IsRemoved, + history_vector) { + mSchemaItemShared = SchemaItem; +} + bool SMember::CheckHistoryFieldVersion( const utils::SemanticVersion& MessageVersion) const { if (MessageVersion.isValid()) { @@ -326,7 +345,7 @@ const SMember* CObjectSchemaItem::GetCorrectMember( } // Check for history tag items if (!member.mHistoryVector.empty()) { - for (uint i = 0; i < member.mHistoryVector.size(); i++) { + for (uint i = 0; i < member.mHistoryVector.size(); ++i) { if (member.mHistoryVector[i].CheckHistoryFieldVersion(messageVersion)) { return &member.mHistoryVector[i]; } |