Main Page   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-2008 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.30 $      $Date: 2008/03/27 19:36:41 $
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 #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>  // for NULL
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   // test whether the plugin supports various capabilities 
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   // XXX new plugin ABI routines
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   // XXX new plugin ABI routines
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 

Generated on Mon Sep 8 01:26:10 2008 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002