int orderLoad ( Order * const ordeptr, FILE * const stream) { PASTIX_INT versval; /* Version number */ PASTIX_INT cblknbr; PASTIX_INT cblknum; PASTIX_INT vertnbr; PASTIX_INT vertnum; PASTIX_INT vertnnd; PASTIX_INT * permtax; PASTIX_INT * peritax; int i; if ((intLoad (stream, &versval) + intLoad (stream, &cblknbr) + intLoad (stream, &vertnbr) != 3) || (versval != 0) || (cblknbr > vertnbr)) { errorPrint ("orderLoad: bad input (1)"); return (1); } if (((ordeptr->rangtab = (PASTIX_INT *) memAlloc ((cblknbr + 1) * sizeof (PASTIX_INT))) == NULL) || ((ordeptr->permtab = (PASTIX_INT *) memAlloc (vertnbr * sizeof (PASTIX_INT))) == NULL) || ((ordeptr->peritab = (PASTIX_INT *) memAlloc (vertnbr * sizeof (PASTIX_INT))) == NULL)) { errorPrint ("orderLoad: out of memory"); orderExit (ordeptr); orderInit (ordeptr); return (1); } ordeptr->cblknbr = cblknbr; for (cblknum = 0, i = 1; (i == 1) && (cblknum <= cblknbr); cblknum ++) /* Read column-block data */ i = intLoad (stream, &ordeptr->rangtab[cblknum]); for (vertnum = 0; (i == 1) && (vertnum < vertnbr); vertnum ++) /* Read direct permutation */ i = intLoad (stream, &ordeptr->permtab[vertnum]); if (i != 1) { errorPrint ("orderLoad: bad input (2)"); orderExit (ordeptr); orderInit (ordeptr); return (1); } permtax = ordeptr->permtab - ordeptr->rangtab[0]; peritax = ordeptr->peritab - ordeptr->rangtab[0]; for (vertnum = ordeptr->rangtab[0], vertnnd = vertnum + vertnbr; /* Build inverse permutation */ vertnum < vertnnd; vertnum ++) peritax[permtax[vertnum]] = vertnum; return (0); }
void SCOTCH_graphOrderExit ( const SCOTCH_Graph * const grafptr, SCOTCH_Ordering * const ordeptr) { orderExit (&((LibOrder *) ordeptr)->o); }
void SCOTCH_meshOrderExit ( const SCOTCH_Mesh * const meshptr, SCOTCH_Ordering * const ordeptr) { orderExit (&((LibOrder *) ordeptr)->o); }
void SCOTCH_dgraphCorderExit ( const SCOTCH_Dgraph * const grafptr, SCOTCH_Ordering * const cordptr) { orderExit (&((LibOrder *) cordptr)->o); }