virtual bool setDefaultValue(SmartObject& Object);
/**
+ * @brief Check if object has default value.
+ *
+ * @param Object Object to set default value.
+ *
+ * @return true if default value was successfully set, false otherwise.
+ **/
+ virtual bool hasDefaultValue(SmartObject& Object);
+
+ /**
* @brief Build smart object by smart schema having copied matched
* parameters from pattern smart object
*
virtual bool setDefaultValue(SmartObject& Object);
/**
+ * @brief Check if object has default value.
+ *
+ * @param Object Object to set default value.
+ *
+ * @return true if default value was successfully set, false otherwise.
+ **/
+ virtual bool hasDefaultValue(SmartObject& Object);
+
+ /**
* @brief Apply schema.
*
* This implementation checks if enumeration is represented as string
return result;
}
+template<typename EnumType>
+bool TEnumSchemaItem<EnumType>::hasDefaultValue(SmartObject& Object) {
+ bool result = false;
+ EnumType value;
+
+ if (true == mDefaultValue.getValue(value)) {
+ Object = static_cast<int32_t>(value);
+ result = true;
+ }
+
+ return result;
+}
+
// TODO(cpplint): Is this a non-const reference?
// If so, make const or use a pointer.
template<typename EnumType>
virtual bool setDefaultValue(SmartObject& Object);
/**
+ * @brief Check if object has default value.
+ *
+ * @param Object Object to set default value.
+ *
+ * @return true if default value was successfully set, false otherwise.
+ **/
+ virtual bool hasDefaultValue(SmartObject& Object);
+
+ /**
* @brief Build smart object by smart schema having copied matched
* parameters from pattern smart object
*
}
template<typename NumberType>
+bool TNumberSchemaItem<NumberType>::hasDefaultValue(SmartObject& Object) {
+ bool result = false;
+ NumberType value;
+
+ if (true == mDefaultValue.getValue(value)) {
+ Object = value;
+ result = true;
+ }
+
+ return result;
+}
+
+template<typename NumberType>
void TNumberSchemaItem<NumberType>::BuildObjectBySchema(
const SmartObject& pattern_object, SmartObject& result_object) {
virtual bool setDefaultValue(SmartObject& Object);
/**
+ * @brief Check if object has default value.
+ *
+ * @param Object Object to set default value.
+ *
+ * @return true if default value was successfully set, false otherwise.
+ **/
+ virtual bool hasDefaultValue(SmartObject& Object);
+
+ /**
* @brief Apply schema.
*
* @param Object Object to apply schema.
return result;
}
+bool CBoolSchemaItem::hasDefaultValue(SmartObject& Object) {
+ bool result = false;
+ bool value = false;
+
+ if (true == mDefaultValue.getValue(value)) {
+ Object = value;
+ result = true;
+ }
+
+ return result;
+}
+
void CBoolSchemaItem::BuildObjectBySchema(const SmartObject& pattern_object,
SmartObject& result_object) {
if (SmartType_Boolean == pattern_object.getType()) {
void CObjectSchemaItem::applySchema(SmartObject& Object) {
if (SmartType_Map == Object.getType()) {
+ SmartObject def_value;
+ const std::set<std::string> objectKeys = Object.enumerate();
+ for (std::map<std::string, CObjectSchemaItem::SMember>::const_iterator i =
+ mMembers.begin(); i != mMembers.end(); ++i) {
+ if ((objectKeys.end() == objectKeys.find(i->first)) &&
+ (true == i->second.mSchemaItem->hasDefaultValue(def_value))) {
+ // create default value
+ Object[i->first] = SmartObject(def_value.getType());
+ if (SmartType_Boolean == def_value.getType()) {
+ Object[i->first] = def_value.asBool();
+ } else if (SmartType_Integer == def_value.getType()) {
+ Object[i->first] = def_value.asUInt();
+ } else if (SmartType_Double == def_value.getType()) {
+ Object[i->first] = def_value.asDouble();
+ }
+ }
+ }
+
for (std::map<std::string, CObjectSchemaItem::SMember>::const_iterator i =
mMembers.begin(); i != mMembers.end(); ++i) {
if (Object.keyExists(i->first)) {
return false;
}
+bool ISchemaItem::hasDefaultValue(SmartObject& Object) {
+ return false;
+}
+
void ISchemaItem::applySchema(SmartObject& Object) {
}