Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Tools::ConfigurationReader Class Reference

#include <ConfigurationReader.h>

Inheritance diagram for Tools::ConfigurationReader:

Inheritance graph
[legend]
Collaboration diagram for Tools::ConfigurationReader:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual void onFilename (String *filename)
virtual void onString (String *str)
virtual void stream (Stream *str)
virtual void put (String *item, Object *value)
virtual void read (void)
virtual ConfigurationreadConfiguration (void)
virtual ConfigurationreadConfiguration (Configuration *configuration)
virtual void readLine (void)

Protected Attributes

Stream_stream
Configuration_configuration

Member Function Documentation

void ConfigurationReader::onFilename String filename  )  [virtual]
 

Definition at line 40 of file ConfigurationReader.cc.

References stream().

00041 {
00042     stream((new Filename(filename))->withEncoding("default")->readStream());
00043 }

void ConfigurationReader::onString String str  )  [virtual]
 

Definition at line 45 of file ConfigurationReader.cc.

References Core::SequenceableCollection::readStream(), and stream().

00046 {
00047     stream(str->readStream());
00048 }

void ConfigurationReader::put String item,
Object value
[virtual]
 

Definition at line 56 of file ConfigurationReader.cc.

References _configuration, and Tools::Configuration::put().

Referenced by Tools::HierarchicalConfigurationReader::getConfigurationFor(), Tools::HierarchicalConfigurationReader::parseBlockOpenning(), and readLine().

00057 {
00058     _configuration->put(item, value);
00059 }

void ConfigurationReader::read void   )  [virtual]
 

Definition at line 78 of file ConfigurationReader.cc.

References _stream, Core::Stream::atEnd(), readLine(), and Core::Stream::skipSeparators().

Referenced by readConfiguration().

00079 {
00080     while (!_stream->atEnd()) {
00081         _stream->skipSeparators();
00082         readLine();
00083     }
00084 }

Configuration * ConfigurationReader::readConfiguration Configuration configuration  )  [virtual]
 

Reimplemented in Tools::HierarchicalConfigurationReader.

Definition at line 67 of file ConfigurationReader.cc.

References _configuration, _ensure, _stream, Core::Stream::close(), and read().

00068 {
00069     _configuration = configuration;
00070     _ensure (
00071         read(),
00072         _stream->close()
00073     );
00074 
00075     return _configuration;
00076 }

Configuration * ConfigurationReader::readConfiguration void   )  [virtual]
 

Definition at line 62 of file ConfigurationReader.cc.

Referenced by Tools::HierarchicalConfigurationReader::readConfiguration().

00063 {
00064     return readConfiguration(new Configuration);
00065 }

void ConfigurationReader::readLine void   )  [virtual]
 

Reimplemented in Tools::HierarchicalConfigurationReader.

Definition at line 86 of file ConfigurationReader.cc.

References _stream, Core::String::copy(), Core::String::indexOf(), Core::Collection::isEmpty(), Core::Stream::nextLine(), put(), Core::SequenceableCollection::replaceAll(), Core::String::size(), and Core::String::trimBlanks().

Referenced by read().

00087 {
00088     String *item, *value;
00089     String *line = dynamic_cast<String *>(_stream->nextLine());
00090     long idx;
00091 
00092     line->replaceAll(Character::tab(), Character::space());
00093 
00094     /* Remove comments */
00095     idx = line->indexOf('#');
00096     if (idx > 0) line = dynamic_cast<String *>(line->copy(0, idx));
00097     line = line->trimBlanks();
00098     if (idx == 0 || line->isEmpty()) return;
00099 
00100     /* Parse assignment */
00101     idx = line->indexOf('=');
00102     if (idx <= 0) return;
00103 
00104     item = dynamic_cast<String *>(line->copy(0, idx))->trimBlanks();
00105     if (item->isEmpty()) return;
00106 
00107     if (idx + 1 < line->size())
00108         value = dynamic_cast<String *>(line->copy(idx + 1, line->size()))->trimBlanks();
00109     else
00110         value = new String;
00111     put(item, value);
00112 }

void ConfigurationReader::stream Stream str  )  [virtual]
 

Definition at line 50 of file ConfigurationReader.cc.

References _stream.

Referenced by onFilename(), and onString().

00051 {
00052     _stream = str;
00053 }


Member Data Documentation

Configuration* Tools::ConfigurationReader::_configuration [protected]
 

Definition at line 40 of file ConfigurationReader.h.

Referenced by Tools::HierarchicalConfigurationReader::getConfigurationFor(), Tools::HierarchicalConfigurationReader::parseAssignment(), Tools::HierarchicalConfigurationReader::parseBlockOpenning(), Tools::HierarchicalConfigurationReader::popConfiguration(), Tools::HierarchicalConfigurationReader::pushConfiguration(), put(), and readConfiguration().

Stream* Tools::ConfigurationReader::_stream [protected]
 

Definition at line 39 of file ConfigurationReader.h.

Referenced by Tools::HierarchicalConfigurationReader::parseLine(), read(), readConfiguration(), readLine(), and stream().


The documentation for this class was generated from the following files:
Generated on Mon Nov 27 09:52:34 2006 for Smalltalk like C++ Class Library by  doxygen 1.4.2