summaryrefslogtreecommitdiff
path: root/src/components/smart_objects/include/smart_objects/number_schema_item.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/smart_objects/include/smart_objects/number_schema_item.h')
-rw-r--r--src/components/smart_objects/include/smart_objects/number_schema_item.h24
1 files changed, 19 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)) {