// recursively write clusters and nodes static void write_ogml_graph(const ClusterGraphAttributes &A, cluster c, int level, ostream &os) { if(level > 0) { GraphIO::indent(os,2+level) << "<node id=\"c" << c->index() << "\">\n"; if (A.has(GraphAttributes::nodeLabel)) { GraphIO::indent(os,4) << "<label id=\"lc" << c->index() << "\">\n"; GraphIO::indent(os,5) << "<content>" << formatLabel(A.label(c)) << "</content>\n"; GraphIO::indent(os,4) << "</label>\n"; } } ListConstIterator<node> itn; for (itn = c->nBegin(); itn.valid(); ++itn) { node v = *itn; GraphIO::indent(os,3+level) << "<node id=\"n" << v->index() << "\">\n"; if (A.has(GraphAttributes::nodeLabel)) { GraphIO::indent(os,4) << "<label id=\"ln" << v->index() << "\">\n"; GraphIO::indent(os,5) << "<content>" << formatLabel(A.label(v)) << "</content>\n"; GraphIO::indent(os,4) << "</label>\n"; } GraphIO::indent(os,3+level) << "</node>\n"; } for (cluster child : c->children) { write_ogml_graph(child, level+1, os); } if(level > 0) { GraphIO::indent(os,2+level) << "</node>\n"; } }