Var Var::fromQVariant(QVariant qvar) { Var var; if(qvar.type()==QVariant::List) { QVariantList qlist = qvar.toList(); var.setType("list"); for(int i=0;i<qlist.size();i++) var.append(fromQVariant(qlist[i])); } if(qvar.type()==QVariant::Map) { QVariantMap qmap = qvar.toMap(); var.setType("map"); for(QVariantMap::const_iterator i = qmap.constBegin();i != qmap.constEnd();i++) var.insert(i.key(),fromQVariant(i.value())); } if(qvar.type()==QVariant::String) { var.setType("string"); var.setString(qvar.toString()); } if(qvar.type()==QVariant::Int) { var.setType("string"); var.setString(QString::number(qvar.toInt())); } if(qvar.type()==QVariant::Double) { var.setType("string"); var.setString(QString::number(qvar.toDouble())); } return var; }
Var Var::toLine(QString name, int column) const { Var line;line.setParam("map",getName()); column=0; int columnSize=0; QString prefix; if(name=="~")prefix=""; else { if(name.size()==0)prefix=getName(); else prefix=name+"~"+getName(); } if(getType()=="map") { for(QMap<QString, Var>::const_iterator i = Map.constBegin();i != Map.constEnd();i++) { Var linePart=Map.value(i.key()).toLine(prefix,column); line.unite(linePart); column+=columnSize; columnSize+=columnSize; } } if(getType()=="list") { for(int i=0;i<List.size();i++) { Var linePart=List[i].toLine(prefix+"#"+QString::number(i),column); line.unite(linePart); column+=columnSize; } } if(getType()=="string") { line.insert(prefix,String); //line.pval(prefix)->Column=column; columnSize++; } return line; }