Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

MolFilePlugin.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *cr
00003  *cr            (C) Copyright 1995-2011 The Board of Trustees of the
00004  *cr                        University of Illinois
00005  *cr                         All Rights Reserved
00006  *cr
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  * RCS INFORMATION:
00011  *
00012  *      $RCSfile: MolFilePlugin.h,v $
00013  *      $Author: johns $        $Locker:  $             $State: Exp $
00014  *      $Revision: 1.39 $      $Date: 2010/12/16 04:08:24 $
00015  *
00016  ***************************************************************************
00017  * DESCRIPTION:
00018  *   VMD interface to 'molfile' plugins.  Molfile plugins read coordinate
00019  *   files, structure files, volumetric data, and graphics data.  The data
00020  *   is loaded into a new or potentially preexisting molecule in VMD.
00021  * 
00022  * LICENSE:
00023  *   UIUC Open Source License
00024  *   http://www.ks.uiuc.edu/Research/vmd/plugins/pluginlicense.html
00025  * 
00026  ***************************************************************************/
00027 #ifndef MOL_FILE_PLUGIN_H__
00028 #define MOL_FILE_PLUGIN_H__
00029 
00030 class Molecule;
00031 class Timestep;
00032 class AtomSel;
00033 class Scene;
00034 class QMData;
00035 
00036 #include <stdlib.h>  // for NULL
00037 #include "molfile_plugin.h"
00038 
00042 class MolFilePlugin {
00043 private:
00044   molfile_plugin_t *plugin;
00045   void *rv;                  
00046   void *wv;                  
00047   int numatoms;              
00048   char *_filename;           
00049   QMData *qm_data;           
00050   void close();              
00051 
00052 public:
00053   MolFilePlugin(vmdplugin_t *p);
00054   virtual ~MolFilePlugin();
00055 
00056   // test whether the plugin supports various capabilities 
00057   const char *name() const        { return plugin->name; }
00058   const char *prettyname() const  { return plugin->prettyname; }
00059   const char *extension() const   { return plugin->filename_extension; }
00060 
00061   int can_read_structure() const  { return plugin->read_structure != NULL; }
00062   int can_read_bonds() const      { return plugin->read_bonds != NULL; }
00063   int can_read_timesteps() const  { return plugin->read_next_timestep != NULL;}
00064   int can_read_graphics() const   { return plugin->read_rawgraphics != NULL; }
00065   int can_read_volumetric() const { return plugin->read_volumetric_metadata != NULL; }
00066   int can_read_metadata() const   { return plugin->read_molecule_metadata != NULL; }
00067 #if vmdplugin_ABIVERSION > 9
00068   // XXX new plugin ABI routines
00069   int can_read_qm() const         { return plugin->read_qm_metadata != NULL; }
00070   int can_read_qm_timestep()      { return plugin->read_timestep != NULL; }
00071   int can_read_angles()           { return plugin->read_angles != NULL; }
00072 #endif
00073 #if vmdplugin_ABIVERSION > 10
00074   int can_read_timestep_metadata() { return plugin->read_timestep_metadata != NULL; }
00075 #endif
00076 #if vmdplugin_ABIVERSION > 11
00077   int can_read_qm_timestep_metadata() { return plugin->read_qm_timestep_metadata != NULL; }
00078 #endif
00079 
00080   int can_write_structure() const { return plugin->write_structure != NULL; }
00081   int can_write_bonds() const     { return plugin->write_bonds != NULL; }
00082   int can_write_timesteps() const { return plugin->write_timestep != NULL; }
00083 #if vmdplugin_ABIVERSION > 9
00084   // XXX new plugin ABI routines
00085   int can_write_angles()           { return plugin->read_angles != NULL; }
00086   int can_write_volumetric() const { return plugin->write_volumetric_data != NULL; }
00087 #endif
00088 
00089   int init_read(const char *file);        
00090 
00091 
00092 
00093   int natoms() const { return numatoms; } 
00094 
00095   void set_natoms(int);                   
00096 
00097 
00098  
00099   int read_structure(Molecule *m, int filebonds, int autobonds); 
00100 
00101 
00102 
00103 
00108   int read_optional_structure(Molecule *m, int filebonds);
00109 
00110   Timestep *next(Molecule *m);           
00111   int skip(Molecule *m);                 
00112 
00114   int read_rawgraphics(Molecule *, Scene *);
00115 
00118   int read_volumetric(Molecule *, int nsets, const int *setids);
00119 
00121   int read_metadata(Molecule *);
00122 
00123 #if vmdplugin_ABIVERSION > 9
00124 
00125   int read_qm_data(Molecule *);
00126 #endif
00127 
00128   int init_write(const char *file, int natoms);
00129 
00134   int write_structure(Molecule *, const int *sel);
00135   int write_timestep(const Timestep *, const int *sel); 
00136 
00137 #if vmdplugin_ABIVERSION > 9
00138 
00139   int write_volumetric(Molecule *, int set);
00140 #endif
00141 
00142 };
00143 
00144 #endif
00145 

Generated on Mon May 21 01:51:03 2012 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002