00001
00002
00003
00004
00021 #ifndef MDIO_TOPO_H
00022 #define MDIO_TOPO_H
00023
00024 #include "adt/array.h"
00025 #include "adt/list.h"
00026 #include "mdio/file.h"
00027 #include "mdio/param.h"
00028 #include "mdapi/mdtypes.h"
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00038 typedef struct mdio_Topo_t {
00039 mdio_File file;
00040 adt_Array atom;
00041 adt_Array bond;
00042 adt_Array angle;
00043 adt_Array dihed;
00044 adt_Array impr;
00045 adt_Array excl;
00046 adt_List dihed_mult;
00047 adt_List impr_mult;
00048 char *buffer;
00049 int bufferlen;
00050 } mdio_Topo;
00051
00052
00053
00054
00061 mdio_Topo *mdio_createTopo(void);
00062
00063
00072 void mdio_destroyTopo(mdio_Topo *);
00073
00074
00075
00076
00086 int mdio_readTopo(mdio_Topo *, const char *name);
00087
00088
00109 int mdio_indexParamTopo(mdio_Topo *, mdio_Param *p);
00110
00111
00118 MD_Atom *mdio_getAtomTopo(mdio_Topo *, int *nelems);
00119
00120
00127 MD_Bond *mdio_getBondTopo(mdio_Topo *, int *nelems);
00128
00129
00136 MD_Angle *mdio_getAngleTopo(mdio_Topo *, int *nelems);
00137
00138
00145 MD_Tors *mdio_getDihedTopo(mdio_Topo *, int *nelems);
00146
00147
00154 MD_Tors *mdio_getImprTopo(mdio_Topo *, int *nelems);
00155
00156
00163 MD_Excl *mdio_getExclTopo(mdio_Topo *, int *nelems);
00164
00165
00166
00167
00173 int mdio_initializeTopo(mdio_Topo *);
00174
00175
00181 void mdio_cleanupTopo(mdio_Topo *);
00182
00183 #ifdef __cplusplus
00184 }
00185 #endif
00186
00187 #endif