66 {
67 QByteArray indentStringOld(indent, QChar::Tabulation);
68 QString newLine = prettyPrint? "\n": " ";
69 dev.write(indentStringOld);
70 if (writeBrackets) {
71 dev.write(("<<"+newLine).toLatin1());
72 }
73 indent = prettyPrint? indent + 1: 0;
74 QByteArray indentString(indent, QChar::Tabulation);
75 Q_FOREACH(QString key, object.keys()) {
76 QVariant val = object[key];
77 QString
name = QString(key);
78 if (val.type() == QVariant::Hash) {
79 dev.write(indentString);
80 dev.write((name+newLine).toLatin1());
82 } else if (val.type() == QVariant::List) {
83 QVariantList array = val.toList();
84 if(array.isEmpty()) {
85 dev.write(indentString);
86 dev.write((name+" [ ]"+newLine).toLatin1());
87 } else if (array.at(0).type() == QVariant::Int) {
88 dev.write(indentString);
89 dev.write((name+" [").toLatin1());
90 for (int i=0; i<array.size(); i++) {
91 dev.write((" "+QString::number(array.at(i).toInt())).toLatin1());
92 }
93 dev.write((" ]"+newLine).toLatin1());
94 } else if (array.at(0).type() == QVariant::Double) {
95 dev.write(indentString);
96 dev.write((name+" [").toLatin1());
97 for (int i=0; i<array.size(); i++) {
98 dev.write((" "+QString::number(array.at(i).toDouble(), 'f', 5)).toLatin1());
99 }
100 dev.write((" ]"+newLine).toLatin1());
101 } else {
102 dev.write(indentString);
103 dev.write((name+" ["+newLine).toLatin1());
104 for (
int i=0; i<val.toList().
size(); i++) {
105 QVariant arrVal = val.toList().at(i);
106 if (arrVal.type() == QVariant::Hash) {
107 writeVariant(dev, arrVal.toHash(), indent, prettyPrint);
108 }
109 }
110 dev.write(indentString);
111 dev.write(("]"+newLine).toLatin1());
112 }
113 } else if (val.type() == QVariant::String) {
114
115 dev.write(indentString);
117 dev.write((newLine).toLatin1());
118 } else if (val.type() == QVariant::Bool) {
119 QString boolVal = val.toBool()? "true": "false";
120 dev.write(indentString);
121 dev.write((name+" "+boolVal+newLine).toLatin1());
122 } else {
123 if (val.type() == QVariant::Double) {
124 dev.write(indentString);
125 dev.write((name+" "+QString::number(val.toDouble(), 'f', 5)+newLine).toLatin1());
126 } else if (val.type() == QVariant::Int) {
127 dev.write(indentString);
128 dev.write((name+" "+QString::number(val.toInt())+newLine).toLatin1());
129 }
130 }
131 }
132 dev.write(indentStringOld);
133 if (writeBrackets) {
134 dev.write((">>"+newLine).toLatin1());
135 }
136}
void writeVariant(QIODevice &dev, const QVariantHash object, int indent, bool prettyPrint, bool writeBrackets=true)
writeVariant
void writeString(QIODevice &dev, const QVariant val, const QString name)
const char * name(StandardAction id)
int size(const Forest< T > &forest)