Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

vcsm.h

Go to the documentation of this file.
00001 
00050 #ifndef _VCSM_H_
00051 #define _VCSM_H_
00052 
00053 /* Generic headers */
00054 #include "maloc/maloc.h"
00055 #include "apbs/vhal.h"
00056 #include "apbs/valist.h"
00057 
00058 /* Specific headers */
00059 #include "mc/mc.h"
00060 
00068 void Gem_setExternalUpdateFunction(Gem *thee,
00069     void (*externalUpdate)(SS **simps, int num));
00070 
00075 struct sVcsm { 
00076 
00077   Valist *alist;      
00078   int natom;          
00080   Gem *gm;            
00083   int **sqm;          
00090   int *nsqm;          
00091   int nsimp;          
00093   int msimp;          
00095   int **qsm;          
00097   int *nqsm;          
00098   int initFlag;       
00100   Vmem *vmem;         
00102 };
00103 
00108 typedef struct sVcsm Vcsm;
00109 
00110 /* 
00111 // Class Vcsm: Inlineable methods (vcsm.c)
00113 
00114 #if !defined(VINLINE_VCSM)
00115 
00122     Valist* Vcsm_getValist(Vcsm *thee);
00123 
00131     int     Vcsm_getNumberAtoms(Vcsm *thee, int isimp);
00132 
00141     Vatom*  Vcsm_getAtom(Vcsm *thee, int iatom, int isimp);
00142 
00151     int Vcsm_getAtomIndex(Vcsm *thee, int iatom, int isimp);
00152 
00160     int     Vcsm_getNumberSimplices(Vcsm *thee, int iatom);
00161 
00170     SS*     Vcsm_getSimplex(Vcsm *thee, int isimp, int iatom);
00171 
00180     int     Vcsm_getSimplexIndex(Vcsm *thee, int isimp, int iatom);
00181 
00189     int     Vcsm_memChk(Vcsm *thee);
00190 
00191 #else /* if defined(VINLINE_VCSM) */
00192 #   define Vcsm_getValist(thee) ((thee)->alist)
00193 #   define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00194 #   define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00195 #   define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00196 #   define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00197 #   define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00198 #   define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00199 #   define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00200 #endif /* if !defined(VINLINE_VCSM) */
00201 
00202 /* 
00203 // Class Vcsm: Non-Inlineable methods (vcsm.c)
00205 
00216 Vcsm*   Vcsm_ctor(Valist *alist, Gem *gm);
00217 
00229 int     Vcsm_ctor2(Vcsm *thee, Valist *alist, Gem *gm);
00230 
00236 void    Vcsm_dtor(Vcsm **thee);
00237 
00243 void    Vcsm_dtor2(Vcsm *thee);
00244 
00252 void    Vcsm_init(Vcsm *thee);
00253 
00267 int     Vcsm_update(Vcsm *thee, SS **simps, int num);
00268 
00269 #endif /* ifndef _VCSM_H_ */
00270 

Generated on Tue Feb 17 09:27:04 2004 for APBS by doxygen1.2.18