/*  basics.C  */

#include "../Bridge.h"

/*--------------------------------------------------------------------*/
/*
   -----------------------
   constructor method

   created -- 98sep18, cca
   -----------------------
*/
Bridge *
Bridge_new ( 
   void 
) {
Bridge   *bridge ;

ALLOCATE(bridge, struct _Bridge, 1) ;

Bridge_setDefaultFields(bridge) ;

return(bridge) ; }

/*--------------------------------------------------------------------*/
/*
   -----------------------
   set the default fields

   return value ---
      1 -- normal return
     -1 -- bridge is NULL

   created -- 98sep18, cca
   -----------------------
*/
int
Bridge_setDefaultFields ( 
   Bridge   *bridge
) {
if ( bridge == NULL ) {
   fprintf(stderr, "\n fatal error in Bridge_setDefaultFields(%p)"
           "\n bad input\n", bridge) ;
   return(-1) ;
}
/*
   ----------------
   graph statistics
   ----------------
*/
bridge->neqns  = 0 ;
bridge->nedges = 0 ;
bridge->Neqns  = 0 ;
bridge->Nedges = 0 ;
/*
   -------------------
   ordering parameters
   -------------------
*/
bridge->compressCutoff = 0.0 ;
bridge->maxdomainsize  = -1  ;
bridge->maxnzeros      = -1  ;
bridge->maxsize        = -1  ;
bridge->seed           = -1  ;
/*
   -------------------------------
   matrix/factorization parameters
   -------------------------------
*/
bridge->type           = SPOOLES_REAL ;
bridge->symmetryflag   = SPOOLES_SYMMETRIC ;
bridge->sparsityflag   = FRONTMTX_DENSE_FRONTS ;
bridge->pivotingflag   = SPOOLES_NO_PIVOTING ;
bridge->tau            = 100.0 ;
bridge->droptol        = 1.e-3 ;
bridge->patchinfo      = NULL  ;
/*
   ------------------------------------
   message info, statistics and timings
   ------------------------------------
*/
IVzero(6, bridge->stats) ;
DVzero(14, bridge->cpus) ;
bridge->msglvl  =    0   ;
bridge->msgFile = stdout ;
/*
   -------------------
   pointers to objects
   -------------------
*/
bridge->frontETree = NULL ;
bridge->symbfacIVL = NULL ;
bridge->mtxmanager = NULL ;
bridge->frontmtx   = NULL ;
bridge->oldToNewIV = NULL ;
bridge->newToOldIV = NULL ;

return(1) ; }

/*--------------------------------------------------------------------*/
/*
   -----------------------
   clear the data fields

   return value ---
      1 -- normal return
     -1 -- bridge is NULL

   created -- 98sep18, cca
   -----------------------
*/
int
Bridge_clearData ( 
   Bridge   *bridge
) {
if ( bridge == NULL ) {
   fprintf(stderr, "\n fatal error in Bridge_clearData(%p)"
           "\n bad input\n", bridge) ;
   return(-1) ;
}
if ( bridge->frontmtx != NULL ) {
   FrontMtx_free(bridge->frontmtx) ;
}
if ( bridge->frontETree != NULL ) {
   ETree_free(bridge->frontETree) ;
}
if ( bridge->symbfacIVL != NULL ) {
   IVL_free(bridge->symbfacIVL) ;
}
if ( bridge->mtxmanager != NULL ) {
   SubMtxManager_free(bridge->mtxmanager) ;
}
if ( bridge->oldToNewIV != NULL ) {
   IV_free(bridge->oldToNewIV) ;
}
if ( bridge->newToOldIV != NULL ) {
   IV_free(bridge->newToOldIV) ;
}
Bridge_setDefaultFields(bridge) ;

return(1) ; }

/*--------------------------------------------------------------------*/
/*
   -----------------------
   destructor

   return value ---
      1 -- normal return
     -1 -- bridge is NULL

   created -- 98sep18, cca
   -----------------------
*/
int
Bridge_free ( 
   Bridge   *bridge
) {
if ( bridge == NULL ) {
   fprintf(stderr, "\n fatal error in Bridge_free(%p)"
           "\n bad input\n", bridge) ;
   return(-1) ;
}
Bridge_clearData(bridge) ;
FREE(bridge) ;

return(1) ; }

/*--------------------------------------------------------------------*/


syntax highlighted by Code2HTML, v. 0.9.1