123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734 |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #ifndef configuration_included
- #define configuration_included
-
- #include <string>
- #include <sstream>
- #include <fstream>
- #include <cstring>
- #include <cstdlib>
- #include <list>
-
- using namespace std;
-
- class ConfigurationElement;
- class ConfigurationAttribute;
- class ConfigurationData;
- class ConfigurationTranslator;
- class ConfigurationMnemonic;
- class Configurator;
-
-
-
-
-
-
-
- class ConfigurationElement {
-
- private:
-
- string myName;
-
-
-
- ConfigurationElement* myParent;
-
- list<Configurator*> myStartConfigurators;
- list<Configurator*> myEndConfigurators;
-
-
-
- list<ConfigurationAttribute*> myAttributes;
- list<ConfigurationElement*> myElements;
- list<ConfigurationMnemonic*> myMnemonics;
- list<ConfigurationTranslator*> myTranslators;
-
-
-
- int myLine;
- int myIndex;
- int myLength;
-
- bool myCleanFlag;
-
- bool myInitOnInterpretFlag;
-
- void runStartConfigurators(ConfigurationData& D);
- void runEndConfigurators(ConfigurationData& D);
-
- public:
-
- ConfigurationElement(const char* Name);
- ConfigurationElement(const string Name);
-
- ConfigurationElement(const char* Name, ConfigurationElement& Parent);
- ConfigurationElement(const string Name, ConfigurationElement& Parent);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ~ConfigurationElement();
-
-
-
- string Name();
- ConfigurationElement& Parent();
- ConfigurationElement& Parent(ConfigurationElement& newParent);
-
-
-
-
- int Line();
- int Index();
- int Length();
-
-
-
- ConfigurationElement& Element(const char* Name);
- ConfigurationElement& Element(const string Name);
-
-
-
-
-
-
-
- ConfigurationElement& Element(
- const char* Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationElement& Element(
- const char* Name,
- string& x, string init = string(""));
-
- ConfigurationElement& Element(
- const char* Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationElement& Element(
- const char* Name,
- double& x, double init = 0.0);
-
- ConfigurationElement& Element(
- const char* Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationElement& Element(
- const string Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationElement& Element(
- const string Name,
- string& x, string init = string(""));
-
- ConfigurationElement& Element(
- const string Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationElement& Element(
- const string Name,
- double& x, double init = 0.0);
-
- ConfigurationElement& Element(
- const string Name,
- bool& x, bool init = false);
-
-
-
- class EndNameDoesNotMatch {};
-
- ConfigurationElement& End();
- ConfigurationElement& End(const char* Name);
- ConfigurationElement& End(const string Name);
-
-
-
- ConfigurationAttribute& Attribute(const char* Name);
- ConfigurationAttribute& Attribute(const string Name);
-
-
-
-
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- string& x, string init = string(""));
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- double& x, double init = 0.0);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationAttribute& Attribute(
- const string Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- string& x, string init = string(""));
-
- ConfigurationAttribute& Attribute(
- const string Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- double& x, double init = 0.0);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationElement& setInitOnInterpret();
-
-
-
-
- ConfigurationElement& atStartCall(Configurator& Functor);
- ConfigurationElement& atEndCall(Configurator& Functor);
-
-
-
-
-
-
-
-
-
- ConfigurationElement& mapTo(ConfigurationTranslator& newTranslator);
- ConfigurationElement& mapTo(string& x, string init = string(""));
- ConfigurationElement& mapTo(int& x, int init = 0, int radix = 0);
- ConfigurationElement& mapTo(double& x, double init = 0.0);
- ConfigurationElement& mapTo(bool& x, bool init = false);
-
-
-
-
-
-
- ConfigurationElement& Mnemonic(const char* name, const char* value);
- ConfigurationElement& Mnemonic(const char* name, const string value);
- ConfigurationElement& Mnemonic(const string name, const char* value);
- ConfigurationElement& Mnemonic(const string name, const string value);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- void initialize();
-
- void notifyDirty();
-
- bool interpret(ConfigurationData& Data);
-
- };
-
-
-
-
-
-
- class ConfigurationAttribute {
-
- private:
-
- string myName;
- ConfigurationElement& myParent;
-
- list<ConfigurationMnemonic*> myMnemonics;
- list<ConfigurationTranslator*> myTranslators;
-
- int myLine;
- int myIndex;
- int myLength;
-
- public:
-
- ConfigurationAttribute(const char* Name, ConfigurationElement& Parent);
- ConfigurationAttribute(const string Name, ConfigurationElement& Parent);
-
-
-
-
-
-
- ~ConfigurationAttribute();
-
-
-
- string Name();
- ConfigurationElement& Parent();
- int Line();
- int Index();
- int Length();
-
- void notifyDirty();
-
-
-
-
-
-
-
-
- ConfigurationElement& Element(const char* Name);
- ConfigurationElement& Element(const string Name);
-
-
-
-
-
-
-
- ConfigurationElement& Element(
- const char* Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationElement& Element(
- const char* Name,
- string& x, string init = string(""));
-
- ConfigurationElement& Element(
- const char* Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationElement& Element(
- const char* Name,
- double& x, double init = 0.0);
-
- ConfigurationElement& Element(
- const char* Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationElement& Element(
- const string Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationElement& Element(
- const string Name,
- string& x, string init = string(""));
-
- ConfigurationElement& Element(
- const string Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationElement& Element(
- const string Name,
- double& x, double init = 0.0);
-
- ConfigurationElement& Element(
- const string Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationElement& End();
- ConfigurationElement& End(const char* Name);
- ConfigurationElement& End(const string Name);
-
-
-
- ConfigurationAttribute& Attribute(const char* Name);
- ConfigurationAttribute& Attribute(const string Name);
-
-
-
-
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- string& x, string init = string(""));
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- double& x, double init = 0.0);
-
- ConfigurationAttribute& Attribute(
- const char* Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationAttribute& Attribute(
- const string Name,
- ConfigurationTranslator& newTranslator);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- string& x, string init = string(""));
-
- ConfigurationAttribute& Attribute(
- const string Name,
- int& x, int init = 0, int radix = 0);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- double& x, double init = 0.0);
-
- ConfigurationAttribute& Attribute(
- const string Name,
- bool& x, bool init = false);
-
-
-
- ConfigurationElement& setInitOnInterpret();
-
-
-
- ConfigurationElement& atStartCall(Configurator& Functor);
- ConfigurationElement& atEndCall(Configurator& Functor);
-
-
-
-
-
-
- ConfigurationAttribute& mapTo(ConfigurationTranslator& newTranslator);
- ConfigurationAttribute& mapTo(string& x, string init = string(""));
- ConfigurationAttribute& mapTo(int& x, int init, int radix = 0);
- ConfigurationAttribute& mapTo(double& x, double init = 0.0);
- ConfigurationAttribute& mapTo(bool& x, bool init = false);
-
-
-
- ConfigurationAttribute& Mnemonic(const char* name, const char* value);
- ConfigurationAttribute& Mnemonic(const char* name, const string value);
- ConfigurationAttribute& Mnemonic(const string name, const char* value);
- ConfigurationAttribute& Mnemonic(const string name, const string value);
-
-
-
- void initialize();
- bool interpret(ConfigurationData& Data);
-
- };
-
-
-
-
-
-
-
-
-
- class ConfigurationData {
- private:
-
- char* myDataBuffer;
- int myBufferSize;
- int myIndex;
- int myLine;
-
- public:
-
- ConfigurationData(const char* FileName);
- ConfigurationData(const string FileName);
- ConfigurationData(const char* Data, int Length);
-
- ~ConfigurationData();
-
- char Data(int Index);
- int Index();
- int Index(int i);
- int Line();
- int addNewLines(int Count);
-
- stringstream Log;
-
- };
-
-
-
-
-
-
-
- class ConfigurationTranslator {
- public:
- virtual ~ConfigurationTranslator(){};
- virtual void translate(const char* Value) = 0;
- virtual void initialize() = 0;
- };
-
- class StringTranslator : public ConfigurationTranslator {
- private:
- string& myVariable;
- string myInitializer;
-
- public:
- StringTranslator(
- string& Variable,
- string Inititializer);
-
- void translate(const char* Value);
- void initialize();
- };
-
- class IntegerTranslator : public ConfigurationTranslator {
- private:
- int& myVariable;
- int myInitializer;
- int myRadix;
-
- public:
- IntegerTranslator(
- int& Variable,
- int Inititializer,
- int Radix);
-
- void translate(const char* Value);
- void initialize();
- };
-
- class DoubleTranslator : public ConfigurationTranslator {
- private:
- double& myVariable;
- double myInitializer;
-
- public:
- DoubleTranslator(
- double& Variable,
- double Inititializer);
-
- void translate(const char* Value);
- void initialize();
- };
-
- class BoolTranslator : public ConfigurationTranslator {
- private:
- bool& myVariable;
- bool myInitializer;
-
- public:
- BoolTranslator(
- bool& Variable,
- bool Inititializer);
-
- void translate(const char* Value);
- void initialize();
- };
-
-
-
-
-
-
-
-
-
-
- class ConfigurationMnemonic {
- private:
- string myName;
- string myValue;
-
- public:
- ConfigurationMnemonic(string Name, string Value);
- bool test(string Name);
- string Value();
- };
-
-
-
-
-
-
-
-
-
-
-
-
- class Configurator {
- public:
- virtual void operator()(ConfigurationElement& E, ConfigurationData& D) = 0;
- virtual ~Configurator() {}
- };
-
-
-
- #include "configuration.inline.hpp"
-
-
-
-
-
- class ConfiguratorSetTrueOnComplete : public Configurator {
- private:
- bool* myBoolean;
- public:
- ConfiguratorSetTrueOnComplete();
- void setup(bool& Target);
-
- void operator()(ConfigurationElement& E, ConfigurationData& D);
- };
-
- #endif
-
-
|