/*  basics.c  */

#include "../Ideq.h"

/*--------------------------------------------------------------------*/
/*
   -----------------------------------------------------
   create and return a new instance of the Ideq object

   created -- 96jun06, cca
   -----------------------------------------------------
*/
Ideq *
Ideq_new (
   void
) {
Ideq   *deq ;

ALLOCATE(deq, struct _Ideq, 1) ;

Ideq_setDefaultFields(deq) ;

return(deq) ; }

/*--------------------------------------------------------------------*/
/*
   -------------------------------------------
   set the default fields for an Ideq object

   created -- 96jun06, cca
   -------------------------------------------
*/
void
Ideq_setDefaultFields (
   Ideq   *deq
) {
if ( deq == NULL ) {
   fprintf(stderr, "\n fatal error in Ideq_setDefaultFields(%p)"
           "\n deq is NULL\n", deq) ;
   exit(-1) ;
}
deq->maxsize =  0 ;
deq->head    = -1 ;
deq->tail    = -1 ;
IV_setDefaultFields(&deq->iv) ;

return ; }

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

   created -- 96jun06, cca
   -----------------------
*/
void
Ideq_clearData (
   Ideq   *deq
) {
if ( deq == NULL ) {
   fprintf(stderr, "\n fatal error in Ideq_clearData(%p)"
           "\n deq is NULL\n", deq) ;
   exit(-1) ;
}
IV_clearData(&deq->iv) ;
Ideq_setDefaultFields(deq) ;

return ; }

/*--------------------------------------------------------------------*/
/*
   -----------------------
   free the Ideq object

   created -- 96jun06, cca
   -----------------------
*/
void
Ideq_free (
   Ideq   *deq
) {
if ( deq == NULL ) {
   fprintf(stderr, "\n fatal error in Ideq_free(%p)"
           "\n deq is NULL\n", deq) ;
   exit(-1) ;
}
Ideq_clearData(deq) ;
FREE(deq) ;

return ; }

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


syntax highlighted by Code2HTML, v. 0.9.1