Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 8, 2007, 5:37:26 PM (17 years ago)
Author:
landauf
Message:

added a config-file-parser and a makro ( SetConfigValue(variable, defaultvalue) ) to get user-modified values from the config-file (or to write the defaultvalue into it if the variable isn't yet in the file).

Location:
code/branches/objecthierarchy/src/orxonox/core
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy/src/orxonox/core/Identifier.h

    r365 r434  
    2525
    2626#include <iostream>
     27#include <map>
    2728
    2829#include "IdentifierList.h"
    2930#include "ObjectList.h"
    3031#include "Factory.h"
    31 
    32 #define HIERARCHY_VERBOSE false
     32#include "ConfigValueContainer.h"
     33
     34#define HIERARCHY_VERBOSE 0
    3335
    3436
     
    9395            void setNetworkID(unsigned int id);
    9496
     97            inline ConfigValueContainer* getConfigValueContainer(const std::string& varname)
     98                { return this->configValues_[varname]; }
     99
     100            inline void setConfigValueContainer(const std::string& varname, ConfigValueContainer* container)
     101                { this->configValues_[varname] = container; }
     102
    95103        private:
    96104            Identifier();
     
    121129            }
    122130
    123             IdentifierList parents_;                    //!< The Parents of the class the Identifier belongs to
    124             IdentifierList* children_;                  //!< The Children of the class the Identifier belongs to
    125 
    126             std::string name_;                          //!< The name of the class the Identifier belongs to
    127 
    128             BaseFactory* factory_;                      //!< The Factory, able to create new objects of the given class
    129             bool bCreatedOneObject_;                    //!< True if at least one object of the given type was created (used to determine the need of storing the parents)
    130             static int hierarchyCreatingCounter_s;      //!< Bigger than zero if at least one Identifier stores its parents (its an int instead of a bool to avoid conflicts with multithreading)
    131             static unsigned int classIDcounter_s;       //!< The number of unique Identifiers
    132             unsigned int classID_;                      //!< The networkID to identify a class through the network
     131            IdentifierList parents_;                                    //!< The Parents of the class the Identifier belongs to
     132            IdentifierList* children_;                                  //!< The Children of the class the Identifier belongs to
     133
     134            std::string name_;                                          //!< The name of the class the Identifier belongs to
     135
     136            BaseFactory* factory_;                                      //!< The Factory, able to create new objects of the given class
     137            bool bCreatedOneObject_;                                    //!< True if at least one object of the given type was created (used to determine the need of storing the parents)
     138            static int hierarchyCreatingCounter_s;                      //!< Bigger than zero if at least one Identifier stores its parents (its an int instead of a bool to avoid conflicts with multithreading)
     139            static unsigned int classIDcounter_s;                       //!< The number of unique Identifiers
     140            unsigned int classID_;                                      //!< The networkID to identify a class through the network
     141            std::map<std::string, ConfigValueContainer*> configValues_;
    133142    };
    134143
  • code/branches/objecthierarchy/src/orxonox/core/IdentifierIncludes.h

    r365 r434  
    1616#include "Iterator.h"
    1717#include "OrxonoxClass.h"
     18#include "ConfigValueContainer.h"
    1819
     20#include "OgreVector3.h"
     21#include "OgreColourValue.h"
     22
     23namespace orxonox
     24{
     25    typedef Ogre::Vector3 Vector3;
     26    typedef Ogre::ColourValue ColourValue;
     27}
    1928
    2029// Intern macro, containing the common parts of RegisterObject and RegisterRootObject
     
    6271#define ID(StringOrInt) \
    6372    Factory::getIdentifier(StringOrInt)
     73
     74// bla
     75#define SetConfigValue(varname, defvalue) \
     76    ConfigValueContainer* container##varname = this->getIdentifier()->getConfigValueContainer(#varname); \
     77    if (!container##varname) \
     78    { \
     79        container##varname = new ConfigValueContainer(this->getIdentifier()->getName(), #varname, defvalue); \
     80        this->getIdentifier()->setConfigValueContainer(#varname, container##varname); \
     81    } \
     82    this->varname = container##varname->getValue(varname)
  • code/branches/objecthierarchy/src/orxonox/core/OrxonoxClass.h

    r366 r434  
    2727            OrxonoxClass();
    2828            virtual ~OrxonoxClass();
     29
     30            void setConfigValues() {};
    2931
    3032            /** @returns the Identifier of the object */
Note: See TracChangeset for help on using the changeset viewer.