Beispiel #1
0
/*
 * Loads a graph from a file.
 */
Errc Graph2d::LoadData( FILE *df ) {
   register int i;
   Long suiv;
   Long item;
   Graph2d::ValueType val;
   Graph2d::ValueType wgh;
   Point2d p;

   for (i=0;i<size;i++) {
      if (Fdecode(&suiv,sizeof(suiv),1,df) < 1)
	 return FAILURE;
      if (suiv >= 0) {
	 if (Fdecode(&val,sizeof(val),1,df)<1)
	    return FAILURE;
	 if (p.Load(df,_inversionMode) == FAILURE)
	    return FAILURE;
	 if (!Add(i,suiv,p)) return FAILURE;
	 tnode[i]->value=val;
	 if (Fdecode(&suiv,sizeof(suiv),1,df)<1) {
	    return FAILURE;
	 }
	 while (suiv>-1){
	    if (Fdecode(&wgh,sizeof(wgh),1,df)<1) {
	       return FAILURE;
	    }
	    if (Fdecode(&item,sizeof(item),1,df)<1)
	       return FAILURE;
	    if (i>=suiv || _directed)	// Link only with former nodes for directed graphs.
	       Link(i,suiv,item,wgh);
	    if (Fdecode(&suiv,sizeof(suiv),1,df)<1)
	       return FAILURE;
	 }
      } else tnode[i]=NULL;
   }
   
   return SUCCESS;
}