BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Protected Member Functions | List of all members
BALL::GenericMolFile Class Reference

#include <BALL/FORMAT/genericMolFile.h>

Inheritance diagram for BALL::GenericMolFile:
BALL::LineBasedFile BALL::File BALL::AntechamberFile BALL::GAMESSDatFile BALL::GAMESSLogFile BALL::HINFile BALL::KCFFile BALL::MOL2File BALL::MOLFile BALL::PDBFile BALL::XYZFile

Public Member Functions

Constructors and Destructors
 GenericMolFile ()
 
 GenericMolFile (const String &filename, File::OpenMode open_mode=std::ios::in)
 
virtual ~GenericMolFile ()
 
Assignment
const GenericMolFileoperator= (const GenericMolFile &rhs)
 
Reading and Writing of Kernel Datastructures
virtual bool write (const System &system)
 
virtual bool write (const Molecule &molecule)
 
virtual bool read (System &system)
 
virtual Moleculeread ()
 
Operators
virtual GenericMolFileoperator>> (System &system)
 
virtual GenericMolFileoperator<< (const System &system)
 
virtual GenericMolFileoperator>> (Molecule &molecule)
 
virtual GenericMolFileoperator<< (const Molecule &molecule)
 
- Public Member Functions inherited from BALL::LineBasedFile
 LineBasedFile ()
 Default constructor. More...
 
 LineBasedFile (const String &filename, File::OpenMode open_mode=std::ios::in, bool trim_whitespaces=false)
 
void clear ()
 
bool operator== (const LineBasedFile &f)
 
bool operator!= (const LineBasedFile &f)
 
const LineBasedFileoperator= (const LineBasedFile &file)
 
Position getLineNumber () const
 Get the last line number in the file. More...
 
const StringgetLine () const
 Return the current line. More...
 
StringgetLine ()
 Return the current line. More...
 
bool readLine ()
 
bool skipLines (Size number=1)
 
bool search (const String &text, bool return_to_start=false)
 
bool search (const String &text, const String &stop, bool return_to_start=false)
 
bool gotoLine (Position line_number)
 
void rewind ()
 
void test (const char *file, int line, bool condition, const String &msg) const
 
String getField (Index pos=0, const String &quotes="", const String &delimiters=String::CHARACTER_CLASS__WHITESPACE) const
 
bool startsWith (const String &text) const
 Test if the current line starts with text. More...
 
bool has (const String &text) const
 Return true if the current line contains text. More...
 
Index switchString (const std::vector< String > &data) const
 
bool parseColumnFormat (const char *format, Position index, Size length, void *arg)
 
void enableTrimWhitespaces (bool state)
 Set wheter leading and trailing whitespaces in lines shall be removed. More...
 
bool trimWhiteSpacesEnabled () const
 
- Public Member Functions inherited from BALL::File
 File ()
 
 File (const String &name, OpenMode open_mode=std::ios::in)
 
virtual ~File ()
 
bool isValid () const
 
bool open (const String &name, File::OpenMode open_mode=std::ios::in)
 
bool reopen ()
 
bool reopen (File::OpenMode open_mode)
 
void close ()
 
const StringgetName () const
 
void setName (const String &name)
 
const StringgetOriginalName () const
 
Size getSize ()
 
File::OpenMode getOpenMode () const
 
Type getType (bool trace_link) const
 
bool copyTo (const String &destination_name, Size buffer_size=4096)
 
bool moveTo (const String &destination_name)
 
bool remove ()
 
bool renameTo (const String &new_path)
 
bool truncate (Size size=0)
 
std::fstream & getFileStream ()
 
TransformationManagergetTransformationManager ()
 
const TransformationManagergetTransformationManager () const
 
bool operator== (const File &file) const
 
bool operator!= (const File &file) const
 
bool isOpen () const
 
bool isClosed () const
 
bool isAccessible () const
 
bool isCanonized () const
 
bool isReadable () const
 
bool isWritable () const
 
bool isExecutable () const
 

Protected Member Functions

virtual void initRead_ ()
 
virtual void initWrite_ ()
 

Additional Inherited Members

- Public Types inherited from BALL::File
typedef std::ios::openmode OpenMode
 
enum  Transformation { TRANSFORMATION__EXEC = 1, TRANSFORMATION__FILTER = 2, TRANSFORMATION__URL = 3 }
 
enum  Type {
  TYPE__UNKNOWN = 0, TYPE__DIRECTORY = 1, TYPE__CHAR_SPECIAL_FILE = 2, TYPE__BLOCK_SPECIAL_FILE = 3,
  TYPE__REGULAR_FILE = 4, TYPE__SYMBOLIC_LINK = 5, TYPE__SOCKET = 6, TYPE__FIFO_SPECIAL_FILE = 7
}
 
- Static Public Member Functions inherited from BALL::File
static Size getSize (String name)
 
static Type getType (String name, bool trace_link)
 
static bool copy (String source_name, String destination_name, Size buffer_size=4096)
 
static bool move (const String &source_name, const String &destination_name)
 
static bool remove (String name)
 
static bool rename (String old_path, String new_path)
 
static bool truncate (String path, Size size=0)
 
static bool createTemporaryFilename (String &temporary, const String &suffix=".TMP")
 
static void enableTransformation (Transformation transformation)
 
static void disableTransformation (Transformation transformation)
 
static bool isTransformationEnabled (Transformation transformation)
 
static void registerTransformation (const String &pattern, const String &exec)
 
static void unregisterTransformation (const String &pattern)
 
static bool isAccessible (String name)
 
static bool isReadable (String name)
 
static bool isWritable (String name)
 
static bool isExecutable (String name)
 
- Static Public Attributes inherited from BALL::File
static const OpenMode MODE_IN
 Open for input (default) More...
 
static const OpenMode MODE_OUT
 Open for output. More...
 
static const OpenMode MODE_APP
 Append. Seek to end before each write operation. More...
 
static const OpenMode MODE_BINARY
 Binary mode. More...
 
static const OpenMode MODE_ATE
 Seek to end directly after opening. More...
 
static const OpenMode MODE_TRUNC
 Truncate an existing file. More...
 
static const String TRANSFORMATION_EXEC_PREFIX
 Prefix for filenames that are created through the execution of commands "exec:". More...
 
static const String TRANSFORMATION_FILE_PREFIX
 Prefix for files (to mimick URL-like behavior) "file:". More...
 
static const String TRANSFORMATION_FTP_PREFIX
 Prefix for FTP-transfers "ftp://". More...
 
static const String TRANSFORMATION_HTTP_PREFIX
 Prefix for HTTP-transfer "http://". More...
 
- Protected Attributes inherited from BALL::LineBasedFile
String line_
 buffer for the line in use More...
 
Position line_number_
 line number in the file More...
 
bool trim_whitespaces_
 
vector< char > line_buffer_
 buffer for the line More...
 
vector< char > col_buffer_
 buffer for column parsing More...
 
- Static Protected Attributes inherited from BALL::File
static HashSet< Stringcreated_temp_filenames_
 
static TransformationManager transformation_manager_
 
static Size transformation_methods_
 

Detailed Description

Base class for all molecule file format classes. This class provides an interface for all molecular structure formats (except for PDB files, due to their complex and capricious structure and contents).

GenericMolFile supports two type of operations: reading/writing single molecules and reading/writing systems (i.e. collections of molecules).
When reading molecules, the structures are read one at a time from the file in the order they are stored. In contrast, reading systems retrieves all structures contained in the file. For file formats that do not support multiple structure in a file (e.g. the MDL MOLFile ), those two operations are basically equivalent. A fundamental difference however is the fact that reading a molecule create a new molecule, whereas reading a system adds the molecules read to an existing instance of System . This implies that the system has to be cleared prior to reading a system if that incremental behaviour is not desired.
The user interface of the class is mainly provided through the stream operator. A typical example for reading a structure from a HyperChem file might look as follows:
{verbatim} HINFile hinfile(filename); System S; hinfile >> S; {verbatim} This interface applies to all derived classes as well, so that file formats can be exchanged conveniently.
GenericMolFile is derived from LineBasedFile since most molecular structure formats are line-based tagged formats, often containing Fortran-style formatted sections. LineBasedFile provides a number of convenient methods to parse that kind of format.

Definition at line 56 of file genericMolFile.h.

Constructor & Destructor Documentation

BALL::GenericMolFile::GenericMolFile ( )

Default constructor

BALL::GenericMolFile::GenericMolFile ( const String filename,
File::OpenMode  open_mode = std::ios::in 
)

Detailed constructor

Exceptions
Exception::FileNotFoundif the file could not be opened
virtual BALL::GenericMolFile::~GenericMolFile ( )
virtual

Destructor

Member Function Documentation

virtual void BALL::GenericMolFile::initRead_ ( )
protectedvirtual

Initialize internals for read. This method is called by the default implementation of read(System& system) . Its purpose is the initialization of internal members holding, for example, header information from the file. The default implementation provided is empty.

Reimplemented in BALL::GAMESSLogFile, BALL::GAMESSDatFile, and BALL::HINFile.

virtual void BALL::GenericMolFile::initWrite_ ( )
protectedvirtual

Initialize internals for write. Same functionality as initRead , but is called prior to writing a system.

virtual GenericMolFile& BALL::GenericMolFile::operator<< ( const System system)
virtual

Stream operator for writing a system of molecules. Calls write(const System& system) const .

Exceptions
File::CannotWriteif writing to the file failed

Reimplemented in BALL::PDBFile.

virtual GenericMolFile& BALL::GenericMolFile::operator<< ( const Molecule molecule)
virtual

Stream operator for writing a system of molecules. Calls write()

Exceptions
File::CannotWriteif writing to the file failed

Reimplemented in BALL::PDBFile.

const GenericMolFile& BALL::GenericMolFile::operator= ( const GenericMolFile rhs)

Assignment operator. Create a new object pointing to the same filename.

Exceptions
Exception::FileNotFoundif the file could not be opened
virtual GenericMolFile& BALL::GenericMolFile::operator>> ( System system)
virtual

Stream operator for reading a system. Calls read(System&) .

Exceptions
Exception::ParseErrorif a syntax error was encountered

Reimplemented in BALL::PDBFile.

virtual GenericMolFile& BALL::GenericMolFile::operator>> ( Molecule molecule)
virtual

Stream operator for reading a molecule. Calls read()

Exceptions
Exception::ParseErrorif a syntax error was encountered

Reimplemented in BALL::PDBFile.

virtual bool BALL::GenericMolFile::read ( System system)
virtual

Read a system. This method will read all molecules contained in the file and add them to the system.

The default implementation calls read() until false is returned and adds the molecules read to the system.
Returns
true if anything could be read
Exceptions
Exception::ParseErrorif the file could not be parsed while reading a molecule

Reimplemented in BALL::PDBFile, BALL::MOLFile, BALL::GAMESSDatFile, BALL::GAMESSLogFile, BALL::MOL2File, BALL::HINFile, BALL::KCFFile, BALL::XYZFile, BALL::SDFile, and BALL::AntechamberFile.

virtual Molecule* BALL::GenericMolFile::read ( )
virtual

Read a molecule. This method will load the first (or the next, on subsequent invocation) molecule from the file. If the file format does not support multiple molecules, only the first call to read will be successful. This method will create an instance of molecule and its the user's responsibility to destroy that molecule.

Returns
a pointer to a molecule, 0 if the file was not open, empty, or at its end
Exceptions
Exception::ParseErrorif the contents of the file could not be parsed

Reimplemented in BALL::PDBFile, BALL::MOLFile, BALL::GAMESSDatFile, BALL::GAMESSLogFile, BALL::MOL2File, BALL::KCFFile, BALL::XYZFile, BALL::HINFile, BALL::SDFile, and BALL::AntechamberFile.

virtual bool BALL::GenericMolFile::write ( const System system)
virtual

Write the molecules of a system. If the file format does not support multiple molecules in a single file, a warning should be printed and only the first molecule should be stored.

The default implementation iterates over the system and calls write(const Molecule& molecule) for each molecule.
Exceptions
File::CannotWriteif writing to the file failed

Reimplemented in BALL::PDBFile, BALL::MOLFile, BALL::GAMESSDatFile, BALL::GAMESSLogFile, BALL::MOL2File, BALL::KCFFile, BALL::HINFile, BALL::XYZFile, BALL::AntechamberFile, and BALL::SDFile.

virtual bool BALL::GenericMolFile::write ( const Molecule molecule)
virtual

Write a molecule. Repeated invocations of this method append molecules to the same file.

The default implementation does nothing.
Exceptions
File::CannotWriteif writing to the file failed

Reimplemented in BALL::PDBFile, BALL::MOLFile, BALL::MOL2File, BALL::GAMESSDatFile, BALL::GAMESSLogFile, BALL::XYZFile, BALL::AntechamberFile, BALL::KCFFile, BALL::HINFile, and BALL::SDFile.