/*  basics.C  */

#include "../ZV.h"

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

   created -- 98jan22, cca
   -----------------------
*/
ZV *
ZV_new ( 
   void 
) {
ZV   *zv ;

ALLOCATE(zv, struct _ZV, 1) ;

ZV_setDefaultFields(zv) ;

return(zv) ; }

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

   created -- 98jan22, cca
   -----------------------
*/
void
ZV_setDefaultFields ( 
   ZV   *zv
) {
if ( zv == NULL ) {
   fprintf(stderr, "\n fatal error in ZV_setDefaultFields(%p)"
           "\n bad input\n", zv) ;
   exit(-1) ;
}
zv->size    =   0  ;
zv->maxsize =   0  ;
zv->owned   =   0  ;
zv->vec     = NULL ;

return ; }

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

   created -- 98jan22, cca
   -----------------------
*/
void
ZV_clearData ( 
   ZV   *zv
) {
if ( zv == NULL ) {
   fprintf(stderr, "\n fatal error in ZV_clearData(%p)"
           "\n bad input\n", zv) ;
   exit(-1) ;
}
if ( zv->vec != NULL && zv->owned == 1 ) {
   DVfree(zv->vec) ;
}
ZV_setDefaultFields(zv) ;

return ; }

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

   created -- 98jan22, cca
   -----------------------
*/
void
ZV_free ( 
   ZV   *zv
) {
if ( zv == NULL ) {
   fprintf(stderr, "\n fatal error in ZV_free(%p)"
           "\n bad input\n", zv) ;
   exit(-1) ;
}
ZV_clearData(zv) ;
FREE(zv) ;

return ; }

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


syntax highlighted by Code2HTML, v. 0.9.1