/*  ChvManager.h  */

#include "../Chv.h"
#include "../Lock.h"
 
/*--------------------------------------------------------------------*/
/*
*/
typedef struct _ChvManager  ChvManager ;
struct _ChvManager {
   Chv       *head           ;
   Lock      *lock           ;
   int       mode            ;
   int       nactive         ;
   int       nbytesactive    ;
   int       nbytesrequested ;
   int       nbytesalloc     ;
   int       nrequests       ;
   int       nreleases       ;
   int       nlocks          ;
   int       nunlocks        ;
} ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in basics.c ----------------------------------------
------------------------------------------------------------------------
*/
/*
   -----------------------
   simplest constructor
 
   created -- 98may02, cca
   -----------------------
*/
ChvManager *
ChvManager_new ( 
   void 
) ;
/*
   -----------------------
   set the default fields
 
   created -- 98may02, cca
   -----------------------
*/
void
ChvManager_setDefaultFields (
   ChvManager   *manager
) ;
/*
   --------------------------------------------------
   clear the data fields, releasing allocated storage
 
   created -- 98may02, cca
   --------------------------------------------------
*/
void
ChvManager_clearData (
   ChvManager   *manager
) ;
/*
   ------------------------------------------
   destructor, free's the object and its data
 
   created -- 98may02, cca
   ------------------------------------------
*/
void
ChvManager_free (
   ChvManager   *manager
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in init.c ------------------------------------------
------------------------------------------------------------------------
*/
/*
   ---------------------------------------------------------------
   simple initializer
 
   lockflag = 0 --> mutex lock is not allocated or initialized
   lockflag = 1 --> mutex lock is allocated and it can synchronize
                    only threads in this process.
   lockflag = 2 --> mutex lock is allocated and it can synchronize
                    only threads in this and other processes.

   mode = 0 --> free object and storage on release
   mode = 1 --> recycle object and storage on release
                                
   created -- 98may02, cca
   ---------------------------------------------------------------
*/
void
ChvManager_init (
   ChvManager   *manager,
   int          lockflag,
   int          mode
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in util.c ------------------------------------------
------------------------------------------------------------------------
*/
/*
   ------------------------------------------
   return a pointer to a Chv object that has 
   been initialized with the input parameters
 
   created -- 98may02, cca
   ------------------------------------------
*/
Chv *
ChvManager_newObject (
   ChvManager   *manager,
   int           id,
   int           nD,
   int           nL,
   int           nU,
   int           symflag
) ;
/*
   ------------------------------------------
   return a pointer to a Chv object that has 
   been initialized with the input parameters
 
   created -- 98may02, cca
   ------------------------------------------
*/
Chv *
ChvManager_newObjectOfSizeNbytes (
   ChvManager   *manager,
   int           nbytesNeeded
) ;
/*
   -----------------------
   release a Chv instance
 
   created -- 98may02, cca
   -----------------------
*/
void
ChvManager_releaseObject (
   ChvManager   *manager,
   Chv          *chv
) ;
/*
   ------------------------------
   release a list of Chv objects
 
   created -- 98may02, cca
   ------------------------------
*/
void
ChvManager_releaseListOfObjects (
   ChvManager   *manager,
   Chv          *head
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in IO.c --------------------------------------------
------------------------------------------------------------------------
*/
/*
   ----------------------------------------
   purpose -- to write the object to a file
              in human readable form
 
   created -- 98may02, cca
   ----------------------------------------
*/
void
ChvManager_writeForHumanEye (
   ChvManager   *manager,
   FILE     *fp
) ;
/*--------------------------------------------------------------------*/


syntax highlighted by Code2HTML, v. 0.9.1