summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/include')
-rw-r--r--src/components/smart_objects/include/smart_objects/number_schema_item.h24
-rw-r--r--src/components/smart_objects/include/smart_objects/smart_object.h7
2 files changed, 26 insertions, 5 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 f5dd8ba42..fb4d287fe 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
@@ -85,7 +85,10 @@ class TNumberSchemaItem : public CDefaultSchemaItem<NumberType> {
TNumberSchemaItem(const TSchemaItemParameter<NumberType>& MinValue,
const TSchemaItemParameter<NumberType>& MaxValue,
const TSchemaItemParameter<NumberType>& DefaultValue);
- bool isNumberType(SmartType type);
+ /**
+ * @brief Compares if param value type is correct
+ **/
+ bool isValidNumberType(SmartType type);
/**
* @brief Minimum and Maximum allowed values.
@@ -105,16 +108,27 @@ TNumberSchemaItem<NumberType>::create(
}
template<typename NumberType>
-bool TNumberSchemaItem<NumberType>::isNumberType(SmartType type) {
- return SmartType_Integer == type || SmartType_Double == type;
+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))) {
+ return true;
+ } else {
+ return false;
+ }
}
template<typename NumberType>
Errors::eType TNumberSchemaItem<NumberType>::validate(const SmartObject& Object) {
- if (!isNumberType(Object.getType())) {
+ if (!isValidNumberType(Object.getType())) {
return Errors::INVALID_VALUE;
}
- NumberType value;
+ NumberType value(0);
if (typeid(int32_t) == typeid(value)) {
value = Object.asInt();
} else if (typeid(uint32_t) == typeid(value)) {
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 6a2b7b7f4..bd70b7ea1 100644
--- a/src/components/smart_objects/include/smart_objects/smart_object.h
+++ b/src/components/smart_objects/include/smart_objects/smart_object.h
@@ -114,6 +114,13 @@ typedef std::map<std::string, SmartObject> SmartMap;
**/
typedef std::vector<uint8_t> SmartBinary;
+typedef utils::SharedPtr<SmartObject> SmartObjectSPtr;
+
+/**
+ * @brief List of SmartObjects
+ */
+typedef std::vector<SmartObjectSPtr> SmartObjectList;
+
/**
* @brief Main SmartObject class
*