BALL::LineBasedFile Class Reference
[General Purpose File Formats]

#include <BALL/FORMAT/lineBasedFile.h>

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

List of all members.


Public Member Functions

Constructors and Destructors
 LineBasedFile ()
 

Default constructor.


 LineBasedFile (const String &filename, File::OpenMode open_mode=std::ios::in, bool trim_whitespaces=false) throw (Exception::FileNotFound)
 LineBasedFile (const LineBasedFile &f) throw (Exception::FileNotFound)
void clear ()
Equality operators
bool operator== (const LineBasedFile &f)
bool operator!= (const LineBasedFile &f)
Assignment
const LineBasedFileoperator= (const LineBasedFile &file) throw (Exception::FileNotFound)
Accessors
Position getLineNumber () const
 

Get the last line number in the file.


const StringgetLine () const
 

Return the current line.


StringgetLine ()
 

Return the current line.


Help-Methods for File Acces
bool readLine () throw (Exception::ParseError)
bool skipLines (Size number=1) throw (Exception::ParseError)
bool search (const String &text, bool return_to_start=false) throw (Exception::ParseError)
bool search (const String &text, const String &stop, bool return_to_start=false) throw (Exception::ParseError)
bool gotoLine (Position line_number) throw (Exception::ParseError)
void rewind () throw (Exception::ParseError)
void test (const char *file, int line, bool condition, const String &msg) const throw (Exception::ParseError)
String getField (Index pos=0, const String &quotes="", const String &delimiters=String::CHARACTER_CLASS__WHITESPACE) const throw (Exception::IndexUnderflow)
bool startsWith (const String &text) const
 

Test if the current line starts with text.


bool has (const String &text) const
 

Return true if the current line contains text.


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.


bool trimWhiteSpacesEnabled () const

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

BALL::LineBasedFile::LineBasedFile (  ) 

Default constructor.

BALL::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.
BALL::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 BALL::LineBasedFile::clear (  )  [virtual]

Clear method.

Reimplemented from BALL::File.

Reimplemented in BALL::NMRStarFile, and BALL::PDBFile.

void BALL::LineBasedFile::enableTrimWhitespaces ( bool  state  ) 

Set wheter leading and trailing whitespaces in lines shall be removed.

String BALL::LineBasedFile::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

String& BALL::LineBasedFile::getLine (  ) 

Return the current line.

const String& BALL::LineBasedFile::getLine (  )  const

Return the current line.

Position BALL::LineBasedFile::getLineNumber (  )  const

Get the last line number in the file.

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

Go to a given line.

Returns:
false if EOF occurs
bool BALL::LineBasedFile::has ( const String text  )  const

Return true if the current line contains text.

bool BALL::LineBasedFile::operator!= ( const LineBasedFile f  ) 

Inequality operator

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

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

bool BALL::LineBasedFile::operator== ( const LineBasedFile f  ) 

Equality operator

bool BALL::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 BALL::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.
void BALL::LineBasedFile::rewind (  )  throw (Exception::ParseError)

Rewind file to start

bool BALL::LineBasedFile::search ( const String text,
const String stop,
bool  return_to_start = false 
) throw (Exception::ParseError)
bool BALL::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 BALL::LineBasedFile::skipLines ( Size  number = 1  )  throw (Exception::ParseError)

Skip a given number of lines.

Returns:
false, if EOF occurs.
bool BALL::LineBasedFile::startsWith ( const String text  )  const

Test if the current line starts with text.

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

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

void BALL::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
bool BALL::LineBasedFile::trimWhiteSpacesEnabled (  )  const

Member Data Documentation

buffer for the line in use

Reimplemented in BALL::MOL2File.

line number in the file