summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/src/object_schema_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/src/object_schema_item.cc')
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc33
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];
}