Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

LineBasedFile Class Reference
[General Purpose File Formats]

A class for the convenient parsing of line-based file formats. More...

#include <lineBasedFile.h>

Inheritance diagram for LineBasedFile:

File GenericMolFile JCAMPFile NMRStarFile SCWRLRotamerFile GAMESSDatFile GAMESSLogFile HINFile KCFFile MOL2File MOLFile PDBFile SDFile List of all members.

Public Member Functions

Constructors and Destructors
 LineBasedFile () throw ()
 Default constructor.
 LineBasedFile (const String &filename, File::OpenMode open_mode=std::ios::in, bool trim_whitespaces=false) throw (Exception::FileNotFound)
 Detailed constuctor.
 LineBasedFile (const LineBasedFile &f) throw (Exception::FileNotFound)
 Copy constructor The file is opened and the same position in it is seeked.
void clear () throw ()
 Clear method.
Equality operators
bool operator== (const LineBasedFile &f) throw ()
 Equality operator.
bool operator!= (const LineBasedFile &f) throw ()
 Inequality operator.
Assignment
const LineBasedFileoperator= (const LineBasedFile &file) throw (Exception::FileNotFound)
 Assignment operator.
Accessors
Position getLineNumber () const throw ()
 Get the last line number in the file.
const StringgetLine () const throw ()
 Return the current line.
StringgetLine () throw ()
 Return the current line.
Help-Methods for File Acces
bool readLine () throw (Exception::ParseError)
 Reads a line and counts the line number.
bool skipLines (Size number=1) throw (Exception::ParseError)
 Skip a given number of lines.
bool search (const String &text, bool return_to_start=false) throw (Exception::ParseError)
 Search for a line starting with a given string.
bool search (const String &text, const String &stop, bool return_to_start=false) throw (Exception::ParseError)
bool gotoLine (Position line_number) throw (Exception::ParseError)
 Go to a given line.
void rewind () throw (Exception::ParseError)
 Rewind file to start.
void test (const char *file, int line, bool condition, const String &msg) const throw (Exception::ParseError)
 Test for a condition.
String getField (Index pos=0, const String &quotes="", const String &delimiters=String::CHARACTER_CLASS__WHITESPACE) const throw (Exception::IndexUnderflow)
 Function to get a field surrounded by delimiter.
bool startsWith (const String &text) const throw ()
 Test if the current line starts with text.
bool has (const String &text) const throw ()
 Return true if the current line contains text.
Index switchString (const std::vector< String > &data) const throw ()
 Switch method of the current line.
bool parseColumnFormat (const char *format, Position index, Size length, void *arg)
 Parse column based formats.
void enableTrimWhitespaces (bool state) throw ()
 Set wheter leading and trailing whitespaces in lines shall be removed.
bool trimWhiteSpacesEnabled () const throw ()

Protected Attributes

String line_
 buffer for the line in use
Position line_number_
 line number in the file
bool trim_whitespaces_

Detailed Description

A class for the convenient parsing of line-based file formats.


Constructor & Destructor Documentation

LineBasedFile::LineBasedFile const String filename,
File::OpenMode  open_mode = std::ios::in,
bool  trim_whitespaces = false
throw (Exception::FileNotFound)
 

Detailed constuctor.

Parameters:
trim_whitespaces - sets wheter leading and trailing whitespaces shall be removed while reading the file Open the given file.

LineBasedFile::LineBasedFile const LineBasedFile f  )  throw (Exception::FileNotFound)
 

Copy constructor The file is opened and the same position in it is seeked.


Member Function Documentation

void LineBasedFile::clear  )  throw () [virtual]
 

Clear method.

Reimplemented from File.

Reimplemented in NMRStarFile.

bool LineBasedFile::gotoLine Position  line_number  )  throw (Exception::ParseError)
 

Go to a given line.

Returns:
false if EOF occurs

const LineBasedFile& LineBasedFile::operator= const LineBasedFile file  )  throw (Exception::FileNotFound)
 

Assignment operator.

The file is opened and the same position in it is seeked.

bool LineBasedFile::parseColumnFormat const char *  format,
Position  index,
Size  length,
void *  arg
 

Parse column based formats.

Copy the subsection of the current line defined by index and length into a buffer try to parse it using sscanf. The result is stored in arg (use with caution: no type checking!).

bool LineBasedFile::readLine  )  throw (Exception::ParseError)
 

Reads a line and counts the line number.

Returns:
true if a line could be read, false if End Of File.

bool LineBasedFile::search const String text,
bool  return_to_start = false
throw (Exception::ParseError)
 

Search for a line starting with a given string.

Search starts at the current line and ends at the end of the file (no wrap around).

Parameters:
return_to_start if set to true, the current line is reset to its value prior to the invocation
Returns:
true if line could be found

bool LineBasedFile::skipLines Size  number = 1  )  throw (Exception::ParseError)
 

Skip a given number of lines.

Returns:
false, if EOF occurs.

Index LineBasedFile::switchString const std::vector< String > &  data  )  const throw ()
 

Switch method of the current line.

Return the position of the current line in data or -1 if it does not exist.

void LineBasedFile::test const char *  file,
int  line,
bool  condition,
const String msg
const throw (Exception::ParseError)
 

Test for a condition.

Throw an exception if a given condition is not met. {verbatim} abort(__FILE__, __LINE__, shift_reference->elements.size() > 0, "no data for shift references found"); {verbatim}

Parameters:
file should be used for __FILE__
line should be used for __LINE__
condition to be tested
msg this string is used as message in the exception
Exceptions:
ParseError if condition is not fulfilled