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 
00065 void Gem_setExternalUpdateFunction(
00066         Gem *thee, 
00067         void (*externalUpdate)(SS **simps, int num) 
00070         );
00071 
00076 struct sVcsm { 
00077 
00078   Valist *alist;      
00079   int natom;          
00081   Gem *gm;            
00084   int **sqm;          
00091   int *nsqm;          
00092   int nsimp;          
00094   int msimp;          
00096   int **qsm;          
00098   int *nqsm;          
00099   int initFlag;       
00101   Vmem *vmem;         
00103 };
00104 
00109 typedef struct sVcsm Vcsm;
00110 
00111 /* ///////////////////////////////////////////////////////////////////////////
00112 // Class Vcsm: Inlineable methods (vcsm.c)
00114 
00115 #if !defined(VINLINE_VCSM)
00116 
00122     Valist* Vcsm_getValist(
00123             Vcsm *thee 
00124             );
00125 
00131     int Vcsm_getNumberAtoms(
00132             Vcsm *thee,  
00133             int isimp  
00134             );
00135 
00141     Vatom* Vcsm_getAtom(
00142             Vcsm *thee,  
00143             int iatom,  
00144             int isimp  
00145             );
00146 
00152     int Vcsm_getAtomIndex(
00153             Vcsm *thee,  
00154             int iatom,  
00155             int isimp  
00156             );
00157 
00163     int Vcsm_getNumberSimplices(
00164             Vcsm *thee,  
00165             int iatom  
00166             );
00167 
00173     SS* Vcsm_getSimplex(
00174             Vcsm *thee,  
00175             int isimp,  
00176             int iatom  
00177             );
00178 
00184     int Vcsm_getSimplexIndex(
00185             Vcsm *thee,  
00186             int isimp,  
00187             int iatom  
00188             );
00189 
00196     unsigned long int Vcsm_memChk(
00197             Vcsm *thee 
00198             );
00199 
00200 #else /* if defined(VINLINE_VCSM) */
00201 #   define Vcsm_getValist(thee) ((thee)->alist)
00202 #   define Vcsm_getNumberAtoms(thee, isimp) ((thee)->nsqm[isimp])
00203 #   define Vcsm_getAtom(thee, iatom, isimp) (Valist_getAtom((thee)->alist, ((thee)->sqm)[isimp][iatom]))
00204 #   define Vcsm_getAtomIndex(thee, iatom, isimp) (((thee)->sqm)[isimp][iatom])
00205 #   define Vcsm_getNumberSimplices(thee, iatom) (((thee)->nqsm)[iatom])
00206 #   define Vcsm_getSimplex(thee, isimp, iatom) (Gem_SS((thee)->gm, ((thee)->qsm)[iatom][isimp]))
00207 #   define Vcsm_getSimplexIndex(thee, isimp, iatom) (((thee)->qsm)[iatom][isimp])
00208 #   define Vcsm_memChk(thee) (Vmem_bytes((thee)->vmem))
00209 #endif /* if !defined(VINLINE_VCSM) */
00210 
00211 /* ///////////////////////////////////////////////////////////////////////////
00212 // Class Vcsm: Non-Inlineable methods (vcsm.c)
00214 
00223 Vcsm* Vcsm_ctor(
00224         Valist *alist,  
00225         Gem *gm  
00226         );
00227 
00236 int Vcsm_ctor2(
00237         Vcsm *thee,  
00238         Valist *alist,  
00239         Gem *gm  
00240         );
00241 
00246 void Vcsm_dtor(
00247         Vcsm **thee  
00248         );
00249 
00254 void Vcsm_dtor2(
00255         Vcsm *thee 
00256         );
00257 
00264 void Vcsm_init(
00265         Vcsm *thee 
00266         );
00267 
00274 int Vcsm_update(
00275         Vcsm *thee, 
00276         SS **simps, 
00281         int num 
00282         );
00283 
00284 #endif /* ifndef _VCSM_H_ */
00285 

Generated on Tue Dec 6 10:05:31 2005 for APBS by doxygen 1.3.5