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

Tools::Configuration Class Reference

#include <Configuration.h>

Inheritance diagram for Tools::Configuration:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Configuration (void)
 Configuration (String *name)
virtual ~Configuration (void)
virtual StringclassName (void) const
 Answer receiver class name.
virtual Objectat (String *key)
virtual Objectat (const char *key)
virtual Objectat (String *key, Object *ifAbsentValue)
virtual Objectat (const char *key, const char *ifAbsentValue)
virtual void put (String *key, Object *value)
virtual Setkeys (void)
virtual void printOn (Stream *stream) const
 Print object identification into the stream.
virtual ObjectremoveKey (String *key)
virtual bool includesKey (String *key)
virtual bool isEmpty (void)

Static Public Member Functions

static ObjectnamedAt (String *name, String *item)
static Configurationnamed (String *name)
static ConfigurationfromFile (String *filename)
static ConfigurationReaderconfigurationReader (void)
static void configurationReader (ConfigurationReader *reader)
static Dictionaryinstances (void)
static void reloadAll (void)

Protected Attributes

Dictionarybindings

Static Protected Attributes

static Dictionary_instances = nil
static ConfigurationReader_reader = nil

Constructor & Destructor Documentation

Tools::Configuration::Configuration void   ) 
 

Definition at line 38 of file Configuration.cc.

References bindings.

00039 {
00040     bindings = new Dictionary(2);
00041 }

Tools::Configuration::Configuration String name  ) 
 

Definition at line 43 of file Configuration.cc.

References bindings, and instances().

00044 {
00045     bindings = new Dictionary(2);
00046     instances()->put(name, this);
00047 }

Tools::Configuration::~Configuration void   )  [virtual]
 

Definition at line 49 of file Configuration.cc.

References bindings, instances(), and nil.

00050 {
00051     Object *key = instances()->keyAtValue(this, nil);
00052     if (key != nil) instances()->removeKey(key);
00053     delete bindings;
00054 }


Member Function Documentation

Object * Tools::Configuration::at const char *  key,
const char *  ifAbsentValue
[virtual]
 

Definition at line 122 of file Configuration.cc.

References Core::Dictionary::at(), and bindings.

00123 {
00124     return bindings->at(key, ifAbsentValue);
00125 }

Object * Tools::Configuration::at String key,
Object ifAbsentValue
[virtual]
 

Definition at line 117 of file Configuration.cc.

References Core::Dictionary::at(), and bindings.

00118 {
00119     return bindings->at(key, ifAbsentValue);
00120 }

Object * Tools::Configuration::at const char *  key  )  [virtual]
 

Definition at line 112 of file Configuration.cc.

References Core::Dictionary::at(), and bindings.

00113 {
00114     return bindings->at(key);
00115 }

Object * Tools::Configuration::at String key  )  [virtual]
 

Definition at line 107 of file Configuration.cc.

References Core::Dictionary::at(), and bindings.

Referenced by Tools::HierarchicalConfigurationReader::getConfigurationFor(), and namedAt().

00108 {
00109     return bindings->at(key);
00110 }

String * Tools::Configuration::className void   )  const [virtual]
 

Answer receiver class name.

Because there isn't any standard way to obtain class name this method comes to place.

Every class should rewrite this method but many didn't (yet).

Reimplemented from Core::Object.

Definition at line 82 of file Configuration.cc.

00083 {
00084     return new String("Configuration");
00085 }

void Tools::Configuration::configurationReader ConfigurationReader reader  )  [static]
 

Definition at line 94 of file Configuration.cc.

References _reader.

00095 {
00096     _reader = reader;
00097 }

ConfigurationReader * Tools::Configuration::configurationReader void   )  [static]
 

Definition at line 87 of file Configuration.cc.

References _reader, and nil.

Referenced by fromFile(), and reloadAll().

00088 {
00089     if (_reader == nil)
00090         _reader = new ConfigurationReader;
00091     return _reader;
00092 }

Configuration * Tools::Configuration::fromFile String filename  )  [static]
 

Definition at line 74 of file Configuration.cc.

References configurationReader().

Referenced by named().

00075 {
00076     configurationReader()->onFilename(filename);
00077     return configurationReader()->readConfiguration();
00078 }

bool Tools::Configuration::includesKey String key  )  [virtual]
 

Definition at line 158 of file Configuration.cc.

References bindings, and Core::Dictionary::includesKey().

00159 {
00160     return bindings->includesKey(key);
00161 }

Dictionary * Tools::Configuration::instances void   )  [static]
 

Definition at line 99 of file Configuration.cc.

References _instances, and nil.

Referenced by Configuration(), Tools::HierarchicalConfigurationReader::getConfigurationFor(), named(), Tools::HierarchicalConfigurationReader::parseBlockOpenning(), reloadAll(), and ~Configuration().

00100 {
00101     if (_instances == nil)
00102         _instances = new Dictionary(2);
00103     return _instances;
00104 }

bool Tools::Configuration::isEmpty void   )  [virtual]
 

Definition at line 163 of file Configuration.cc.

References bindings, and Core::Collection::isEmpty().

00164 {
00165     return bindings->isEmpty();
00166 }

Set * Tools::Configuration::keys void   )  [virtual]
 

Definition at line 132 of file Configuration.cc.

References Core::Set::add(), bindings, Core::CollectionIterator::finished(), Core::KeysAndValuesIterator::key(), Core::Dictionary::keysAndValuesIterator(), Core::CollectionIterator::next(), and Core::Set::size().

00133 {
00134     KeysAndValuesIterator *i;
00135     Set *coll = new Set(bindings->size());
00136     for (i = bindings->keysAndValuesIterator(); !i->finished(); i->next()) {
00137         coll->add(i->key());
00138     }
00139     return coll;
00140 }

Configuration * Tools::Configuration::named String name  )  [static]
 

Definition at line 63 of file Configuration.cc.

References fromFile(), instances(), and nil.

Referenced by namedAt().

00064 {
00065     Configuration *configuration;
00066     configuration = dynamic_cast<Configuration *>(instances()->at(name, nil));
00067     if (configuration == nil) {
00068         configuration = Configuration::fromFile(name);
00069         instances()->put(name, configuration);
00070     }
00071     return configuration;
00072 }

Object * Tools::Configuration::namedAt String name,
String item
[static]
 

Definition at line 57 of file Configuration.cc.

References at(), and named().

00058 {
00059     Configuration *config = named(name);
00060     return config->at(item);
00061 }

void Tools::Configuration::printOn Stream stream  )  const [virtual]
 

Print object identification into the stream.

Object identification is formed from its className() by default. But complicated classes (eg. collections) may print some other information.

  • stream - stream to print to.

Reimplemented from Core::Object.

Definition at line 143 of file Configuration.cc.

References bindings, Core::Stream::nextPut(), and Core::Stream::print().

00144 {
00145     Object::printOn(stream);
00146     stream->nextPut('{');
00147     stream->print(bindings);
00148     stream->nextPut('}');
00149 }

void Tools::Configuration::put String key,
Object value
[virtual]
 

Definition at line 127 of file Configuration.cc.

References bindings, and Core::Dictionary::put().

Referenced by Tools::HierarchicalConfigurationReader::parseAssignment(), and Tools::ConfigurationReader::put().

00128 {
00129     bindings->put(key, value);
00130 }

void Tools::Configuration::reloadAll void   )  [static]
 

Definition at line 169 of file Configuration.cc.

References configurationReader(), Core::CollectionIterator::finished(), instances(), Core::KeysAndValuesIterator::key(), Core::CollectionIterator::next(), and Core::KeysAndValuesIterator::value().

00170 {
00171     KeysAndValuesIterator *i;
00172 
00173     for (i = instances()->keysAndValuesIterator(); !i->finished(); i->next()) {
00174         configurationReader()->onFilename(dynamic_cast<String *>(i->key()));
00175         configurationReader()->readConfiguration(dynamic_cast<Configuration *>(i->value()));
00176     }
00177 }

Object * Tools::Configuration::removeKey String key  )  [virtual]
 

Definition at line 152 of file Configuration.cc.

References bindings, and Core::Dictionary::removeKey().

00153 {
00154     return bindings->removeKey(key);
00155 }


Member Data Documentation

Dictionary * Tools::Configuration::_instances = nil [static, protected]
 

Definition at line 35 of file Configuration.cc.

Referenced by instances().

ConfigurationReader * Tools::Configuration::_reader = nil [static, protected]
 

Definition at line 36 of file Configuration.cc.

Referenced by configurationReader().

Dictionary* Tools::Configuration::bindings [protected]
 

Definition at line 41 of file Configuration.h.

Referenced by at(), Configuration(), includesKey(), isEmpty(), keys(), printOn(), put(), removeKey(), and ~Configuration().


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