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

vcsm.h

Go to the documentation of this file.
00001 
00073 #ifndef _VCSM_H_
00074 #define _VCSM_H_
00075 
00076 /* Generic headers */
00077 #include "maloc/maloc.h"
00078 #include "apbs/vhal.h"
00079 #include "apbs/valist.h"
00080 
00081 /* Specific headers */
00082 #include "mc/mc.h"
00083 
00088 void Gem_setExternalUpdateFunction(
00089         Gem *thee, 
00090         void (*externalUpdate)(SS **simps, int num) 
00093         );
00094 
00099 struct sVcsm { 
00100 
00101   Valist *alist;      
00102   int natom;          
00104   Gem *gm;            
00107   int **sqm;          
00114   int *nsqm;          
00115   int nsimp;          
00117   int msimp;          
00119   int **qsm;          
00121   int *nqsm;          
00122   int initFlag;       
00124   Vmem *vmem;         
00126 };
00127 
00132 typedef struct sVcsm Vcsm;
00133 
00134 /* ///////////////////////////////////////////////////////////////////////////
00135 // Class Vcsm: Inlineable methods (vcsm.c)
00137 
00138 #if !defined(VINLINE_VCSM)
00139 
00145     Valist* Vcsm_getValist(
00146             Vcsm *thee 
00147             );
00148 
00154     int Vcsm_getNumberAtoms(
00155             Vcsm *thee,  
00156             int isimp  
00157             );
00158 
00164     Vatom* Vcsm_getAtom(
00165             Vcsm *thee,  
00166             int iatom,  
00167             int isimp  
00168             );
00169 
00175     int Vcsm_getAtomIndex(
00176             Vcsm *thee,  
00177             int iatom,  
00178             int isimp  
00179             );
00180 
00186     int Vcsm_getNumberSimplices(
00187             Vcsm *thee,  
00188             int iatom  
00189             );
00190 
00196     SS* Vcsm_getSimplex(
00197             Vcsm *thee,  
00198             int isimp,  
00199             int iatom  
00200             );
00201 
00207     int Vcsm_getSimplexIndex(
00208             Vcsm *thee,  
00209             int isimp,  
00210             int iatom  
00211             );
00212 
00219     unsigned long int Vcsm_memChk(
00220             Vcsm *thee 
00221             );
00222 
00223 #else /* if defined(VINLINE_VCSM) */
00224 #   define Vcsm_getValist(thee) ((thee)->alist)
00225 #   define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00226 #   define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00227 #   define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00228 #   define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00229 #   define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00230 #   define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00231 #   define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00232 #endif /* if !defined(VINLINE_VCSM) */
00233 
00234 /* ///////////////////////////////////////////////////////////////////////////
00235 // Class Vcsm: Non-Inlineable methods (vcsm.c)
00237 
00246 Vcsm* Vcsm_ctor(
00247         Valist *alist,  
00248         Gem *gm  
00249         );
00250 
00259 int Vcsm_ctor2(
00260         Vcsm *thee,  
00261         Valist *alist,  
00262         Gem *gm  
00263         );
00264 
00269 void Vcsm_dtor(
00270         Vcsm **thee  
00271         );
00272 
00277 void Vcsm_dtor2(
00278         Vcsm *thee 
00279         );
00280 
00287 void Vcsm_init(
00288         Vcsm *thee 
00289         );
00290 
00297 int Vcsm_update(
00298         Vcsm *thee, 
00299         SS **simps, 
00304         int num 
00305         );
00306 
00307 #endif /* ifndef _VCSM_H_ */
00308 

Generated on Thu Jul 12 11:49:46 2007 for APBS by doxygen 1.3.4