next up previous contents index
Next: Graphen traversieren: g_grftra.c Up: Graphen in Dateien ablegen Previous: Graphen in Dateien ablegen

Intern benutzte Methoden zum Speichern und Laden

 Die nachfolgenden Methoden werden intern zum Speichern und Laden der Graphstruktur benutzt. Das Typsystem wird nicht gespeichert. Deshalb muß in dem Programm sichergestellt werden, daß Graphstruktur und Typsystem zusammenpassen. Hiermit kann man z.B. viele kleine Graphen mit dem selben Typsystem in eine gemeinsame Datei speichern.
  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  
Schreibt die Graphstruktur auf den Stream os. Die Methode verhält sich wie  store(), nur daß das Typsystem nicht gespeichert wird.
Bemerkungen:
Graphdateien, die mit dieser Methode erstellt wurden, können nicht mit den Methoden  load() oder  loadIncreaseTypeSystem() geladen werden.

Bei falscher Benutzung dieser Methode können inkonsistente Graph-Dateien entstehen.

bool G_graph::loadStructure (G_BufferedStreamReader& is, G_trans& tr)   
Lädt die Graphstruktur aus dem Stream 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.
Bemerkungen:
Graphdateien, die mit der Methode  store() erstellt wurden, können nicht mit dieser Methode geladen werden.

Bei falscher Benutzung dieser Methode können inkonsistente Graph-Instanzen entstehen.


next up previous contents index
Next: Graphen traversieren: g_grftra.c Up: Graphen in Dateien ablegen Previous: Graphen in Dateien ablegen
Friedbert Widmann
7/20/2003