void IDecomposer::formatEach(const SerializationInfo& si, Formatter& formatter) { if (si.isNull()) { formatter.addNull( si.name(), si.typeName() ); } else if (si.category() == SerializationInfo::Value) { if (si.isInt()) { int_type value; si.getValue(value); formatter.addValueInt( si.name(), si.typeName(), value ); } else if (si.isUInt()) { unsigned_type value; si.getValue(value); formatter.addValueUnsigned( si.name(), si.typeName(), value ); } else if (si.isBool()) { bool value; si.getValue(value); formatter.addValueBool( si.name(), si.typeName(), value ); } else if (si.isFloat()) { float value; si.getValue(value); formatter.addValueFloat( si.name(), si.typeName(), value ); } else if (si.isDouble()) { double value; si.getValue(value); formatter.addValueDouble( si.name(), si.typeName(), value ); } else if (si.isLongDouble()) { long double value; si.getValue(value); formatter.addValueLongDouble( si.name(), si.typeName(), value ); } else if (si.isString8()) { std::string value; si.getValue(value); formatter.addValueStdString( si.name(), si.typeName(), value ); } else if (si.isChar()) { char value; si.getValue(value); formatter.addValueChar( si.name(), si.typeName(), value ); } else { String value; si.getValue(value); formatter.addValueString( si.name(), si.typeName(), value ); } } else if(si.category() == SerializationInfo::Object) { formatter.beginObject( si.name(), si.typeName() ); SerializationInfo::ConstIterator it; for(it = si.begin(); it != si.end(); ++it) { formatter.beginMember( it->name() ); formatEach(*it, formatter); formatter.finishMember(); } formatter.finishObject(); } else if(si.category() == SerializationInfo::Array) { formatter.beginArray( si.name(), si.typeName() ); SerializationInfo::ConstIterator it; for(it = si.begin(); it != si.end(); ++it) { formatEach(*it, formatter); } formatter.finishArray(); } }