- Main Page
- Modules
- Classes
- Namespaces
- Files
- Related Pages

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
List of all members | Public Member Functions | Related Functions
SectionReader Class Reference
LEMON Graph Format

## Detailed Description

In the LGF file extra sections can be placed, which contain any data in arbitrary format. Such sections can be read with this class. A reading rule can be added to the class with two different functions. With the `sectionLines()` function a functor can process the section line-by-line, while with the `sectionStream()` member the section can be read from an input stream.

`#include <lemon/lgf_reader.h>`

## Public Member Functions
| SectionReader (std::istream &is)
| Constructor. More...
| SectionReader (const std::string &fn)
| Constructor. More...
| SectionReader (const char *fn)
| Constructor. More...
| ~SectionReader ()
| Destructor.
Section Readers
template<typename Functor >
SectionReader & | sectionLines (const std::string &type, Functor functor)
| Add a section processor with line oriented reading. More...
template<typename Functor >
SectionReader & | sectionStream (const std::string &type, Functor functor)
| Add a section processor with stream oriented reading. More...
Execution of the Reader
void | run ()
| Start the batch processing. More...

## Related Functions
(Note that these are not member functions.)
SectionReader | sectionReader (std::istream &is)
| Return a SectionReader class. More...
SectionReader | sectionReader (const std::string &fn)
| Return a SectionReader class. More...
SectionReader | sectionReader (const char *fn)
| Return a SectionReader class. More...

## Constructor & Destructor Documentation

SectionReader | ( | std::istream & | is | ) |
| inline

Construct a section reader, which reads from the given input stream.

SectionReader | ( | const std::string & | fn | ) |
| inline

Construct a section reader, which reads from the given file.

SectionReader | ( | const char * | fn | ) |
| inline

Construct a section reader, which reads from the given file.

## Member Function Documentation

SectionReader& sectionLines | ( | const std::string & | type,
|  | Functor | functor
| ) |  |
| inline

The first parameter is the type descriptor of the section, the second is a functor, which takes just one `std::string` parameter. At the reading process, each line of the section will be given to the functor object. However, the empty lines and the comment lines are filtered out, and the leading whitespaces are trimmed from each processed string.

For example, let's see a section, which contain several integers, which should be inserted into a vector.

* @numbers
* 12 45 23
* 4
* 23 6
*

The functor is implemented as a struct:

* struct NumberSection {
* std::vector<int>& _data;
* NumberSection(std::vector<int>& data) : _data(data) {}
* void operator()(const std::string& line) {
* std::istringstream ls(line);
* int value;
* while (ls >> value) _data.push_back(value);
* }
* };
*
* // ...
*
* reader.sectionLines("numbers", NumberSection(vec));
*

SectionReader& sectionStream | ( | const std::string & | type,
|  | Functor | functor
| ) |  |
| inline

The first parameter is the type of the section, the second is a functor, which takes an `std::istream&` and an `int&` parameter, the latter regard to the line number of stream. The functor can read the input while the section go on, and the line number should be modified accordingly.

void run | ( |  | ) |
| inline

This function starts the batch processing.

## Friends And Related Function Documentation

SectionReader sectionReader | ( | const std::string & | fn | ) |
| related

This function just returns a SectionReader class.

See Also
  sectionReader(std::istream& is)

SectionReader sectionReader | ( | const char * | fn | ) |
| related

This function just returns a SectionReader class.

See Also
  sectionReader(std::istream& is)