ofstream oFile("filename.garchive",
ios:out|ios:trunc|G_IOS_BIN);
// typesystem == g1.getTypeSystem() == g2.getTypeSystem()
typesystem.storeOn (oFile);
g1.storeStructure (oFile);
g2.storeStructure (oFile);
oFile.close ();
Beim Laden von Graphen können die Typen und Attribute in der Datei
andere Indexnummern haben als die Instanz des Typsystemes im
Arbeitsspeicher. Zum Übersetzen dieser Nummern dient die
Datenstruktur G_trans. In sie wird in
restoreFrom() bzw.
checkFrom() die
Übersetzungsfunktionen eingetragen. Bei loadStructure() werden
diese Übersetzungsfunktionen benutzt.
ifstream iFile("filename.garchive", ios:in|G_IOS_BIN);
G_trans trans;
G_typeSystem typesystem;
G_BufferedStreamReader bsr(iFile);
typesystem.restoreFrom (bsr, trans);
G_graph g1(typeSystem);
G_graph g2(typeSystem);
// typesystem == g1.getTypeSystem() == g2.getTypeSystem()
g1.loadStructure (bsr, trans)
g2.loadStructure (bsr, trans);
iFile.close ();
Die Klasse G_BufferedStreamReader implementiert
schnelle Leseoperationen auf dem istream.
bool G_graph::storeStructure (ostream& os) const os.
Die Methode verhält sich wie
store(), nur daß das Typsystem
nicht gespeichert wird.
Bei falscher Benutzung dieser Methode können inkonsistente Graph-Dateien entstehen.
bool G_graph::loadStructure (G_BufferedStreamReader& is, G_trans& tr) is. Die darin
vorkommenden Attribut- und Typnummern werden mit tr
übersetzt. Die Methode verhält sich wie
load(), nur daß das Typsystem
nicht überprüft wird.
Bei falscher Benutzung dieser Methode können inkonsistente Graph-Instanzen entstehen.