00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef MOL_FILE_PLUGIN_H__
00023 #define MOL_FILE_PLUGIN_H__
00024
00025 class Molecule;
00026 class Timestep;
00027 class AtomSel;
00028 class Scene;
00029
00030 #include <stdlib.h>
00031 #include "molfile_plugin.h"
00032
00036 class MolFilePlugin {
00037 private:
00038 molfile_plugin_t *plugin;
00039 void *rv;
00040 void *wv;
00041 int numatoms;
00042 char *_filename;
00043
00044 void close();
00045
00046 public:
00047 MolFilePlugin(vmdplugin_t *p);
00048 virtual ~MolFilePlugin();
00049
00050
00051 const char *name() const { return plugin->name; }
00052 const char *prettyname() const { return plugin->prettyname; }
00053 const char *extension() const { return plugin->filename_extension; }
00054
00055 int can_read_structure() const { return plugin->read_structure != NULL; }
00056 int can_read_bonds() const { return plugin->read_bonds != NULL; }
00057 int can_read_timesteps() const { return plugin->read_next_timestep != NULL;}
00058 int can_read_graphics() const { return plugin->read_rawgraphics != NULL; }
00059 int can_read_volumetric() const { return plugin->read_volumetric_metadata != NULL; }
00060 int can_read_metadata() const { return plugin->read_molecule_metadata != NULL; }
00061 #if vmdplugin_ABIVERSION > 9
00062
00063 int can_read_qm() const { return plugin->read_qm_metadata != NULL; }
00064 int can_read_qm_timestep() { return plugin->read_timestep != NULL; }
00065 int can_read_angles() { return plugin->read_angles != NULL; }
00066 #endif
00067
00068
00069 int can_write_structure() const { return plugin->write_structure != NULL; }
00070 int can_write_bonds() const { return plugin->write_bonds != NULL; }
00071 int can_write_timesteps() const { return plugin->write_timestep != NULL; }
00072 #if vmdplugin_ABIVERSION > 9
00073
00074 int can_write_angles() { return plugin->read_angles != NULL; }
00075 int can_write_volumetric() const { return plugin->write_volumetric_data != NULL; }
00076 #endif
00077
00078 int init_read(const char *file);
00079
00080
00081
00082 int natoms() const { return numatoms; }
00083
00084 void set_natoms(int);
00085
00086
00087
00088 int read_structure(Molecule *m, int filebonds, int autobonds);
00089
00090
00091
00092
00097 int read_optional_structure(Molecule *m, int filebonds);
00098
00099 Timestep *next();
00100 int skip();
00101
00103 int read_rawgraphics(Molecule *, Scene *);
00104
00107 int read_volumetric(Molecule *, int nsets, const int *setids);
00108
00110 int read_metadata(Molecule *);
00111
00112 #if vmdplugin_ABIVERSION > 9
00113
00114 int read_qm_data(Molecule *);
00115 #endif
00116
00117 int init_write(const char *file, int natoms);
00118
00123 int write_structure(Molecule *, const int *sel);
00124 int write_timestep(const Timestep *, const int *sel);
00125
00126 #if vmdplugin_ABIVERSION > 9
00127
00128 int write_volumetric(Molecule *, int set);
00129 #endif
00130
00131 };
00132
00133 #endif
00134