BALL::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 BALL::LineBasedFile:
Inheritance graph
[legend]

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)
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 ()
Clear method.
Equality operators
bool operator== (const LineBasedFile &f)
Equality operator.
bool operator!= (const LineBasedFile &f)
Inequality operator.
Assignment
const LineBasedFile & operator= (const LineBasedFile &file) throw (Exception::FileNotFound)
Assignment operator.
Accessors
Position getLineNumber () const
Get the last line number in the file.
const String & getLine () const
Return the current line.
String & getLine ()
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
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
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)
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 ( 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.

Member Function Documentation

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

Go to a given line.

Returns:
false if EOF occurs

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::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.

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.

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

Generated on Thu Aug 6 18:30:29 2009 for BALL by doxygen 1.5.8