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

vcsm.h

Go to the documentation of this file.
00001 
00061 #ifndef _VCSM_H_
00062 #define _VCSM_H_
00063 
00064 /* Generic headers */
00065 #include "maloc/maloc.h"
00066 #include "apbs/vhal.h"
00067 #include "apbs/valist.h"
00068 
00069 /* Specific headers */
00070 #include "mc/mc.h"
00071 
00076 void Gem_setExternalUpdateFunction(
00077         Gem *thee, 
00078         void (*externalUpdate)(SS **simps, int num) 
00081         );
00082 
00087 struct sVcsm { 
00088 
00089   Valist *alist;      
00090   int natom;          
00092   Gem *gm;            
00095   int **sqm;          
00102   int *nsqm;          
00103   int nsimp;          
00105   int msimp;          
00107   int **qsm;          
00109   int *nqsm;          
00110   int initFlag;       
00112   Vmem *vmem;         
00114 };
00115 
00120 typedef struct sVcsm Vcsm;
00121 
00122 /* ///////////////////////////////////////////////////////////////////////////
00123 // Class Vcsm: Inlineable methods (vcsm.c)
00125 
00126 #if !defined(VINLINE_VCSM)
00127 
00133     Valist* Vcsm_getValist(
00134             Vcsm *thee 
00135             );
00136 
00142     int Vcsm_getNumberAtoms(
00143             Vcsm *thee,  
00144             int isimp  
00145             );
00146 
00152     Vatom* Vcsm_getAtom(
00153             Vcsm *thee,  
00154             int iatom,  
00155             int isimp  
00156             );
00157 
00163     int Vcsm_getAtomIndex(
00164             Vcsm *thee,  
00165             int iatom,  
00166             int isimp  
00167             );
00168 
00174     int Vcsm_getNumberSimplices(
00175             Vcsm *thee,  
00176             int iatom  
00177             );
00178 
00184     SS* Vcsm_getSimplex(
00185             Vcsm *thee,  
00186             int isimp,  
00187             int iatom  
00188             );
00189 
00195     int Vcsm_getSimplexIndex(
00196             Vcsm *thee,  
00197             int isimp,  
00198             int iatom  
00199             );
00200 
00207     unsigned long int Vcsm_memChk(
00208             Vcsm *thee 
00209             );
00210 
00211 #else /* if defined(VINLINE_VCSM) */
00212 #   define Vcsm_getValist(thee) ((thee)->alist)
00213 #   define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00214 #   define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00215 #   define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00216 #   define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00217 #   define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00218 #   define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00219 #   define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00220 #endif /* if !defined(VINLINE_VCSM) */
00221 
00222 /* ///////////////////////////////////////////////////////////////////////////
00223 // Class Vcsm: Non-Inlineable methods (vcsm.c)
00225 
00234 Vcsm* Vcsm_ctor(
00235         Valist *alist,  
00236         Gem *gm  
00237         );
00238 
00247 int Vcsm_ctor2(
00248         Vcsm *thee,  
00249         Valist *alist,  
00250         Gem *gm  
00251         );
00252 
00257 void Vcsm_dtor(
00258         Vcsm **thee  
00259         );
00260 
00265 void Vcsm_dtor2(
00266         Vcsm *thee 
00267         );
00268 
00275 void Vcsm_init(
00276         Vcsm *thee 
00277         );
00278 
00285 int Vcsm_update(
00286         Vcsm *thee, 
00287         SS **simps, 
00292         int num 
00293         );
00294 
00295 #endif /* ifndef _VCSM_H_ */
00296 

Generated on Tue Apr 15 13:53:15 2008 for APBS by doxygen 1.3.4