Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 27, 2009, 12:09:08 AM (14 years ago)
Author:
rgrieder
Message:

Fixed bug that caused derived classes to list the base class's config values as well.
Introduced a new "ClassByObjecType" function that accepts a 'this' pointer and returns the correct identifier (not this→getIdentifier()!).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/libraries/core/ConfigValueIncludes.h

    r6417 r6423  
    6363    inline ConfigValueContainer& setConfigValueGeneric(T* object, V* variable, ConfigFileType type, const std::string& sectionName, const std::string& entryName, const D& defaultValue)
    6464    {
    65         ConfigValueContainer* container = object->getIdentifier()->getConfigValueContainer(entryName);
     65        ConfigValueContainer* container = ClassIdentifier<T>::getIdentifier()->getConfigValueContainer(entryName);
    6666        if (!container)
    6767        {
    68             container = new ConfigValueContainer(type, object->getIdentifier(), sectionName, entryName, defaultValue, *variable);
    69             object->getIdentifier()->addConfigValueContainer(entryName, container);
     68            container = new ConfigValueContainer(type, ClassIdentifier<T>::getIdentifier(), sectionName, entryName, defaultValue, *variable);
     69            ClassIdentifier<T>::getIdentifier()->addConfigValueContainer(entryName, container);
    7070        }
    7171        return container->getValue(variable, object);
     
    113113    inline void resetConfigValueGeneric(T* object, V* variable, const std::string& entryName)
    114114    {
    115         ConfigValueContainer* container = object->getIdentifier()->getConfigValueContainer(entryName);
     115        ConfigValueContainer* container = ClassIdentifier<T>::getIdentifier()->getConfigValueContainer(entryName);
    116116        if (container)
    117117        {
     
    122122        {
    123123            COUT(2) << "Warning: Couldn't reset config-value '" << entryName << "' in class '"
    124                     << object->getIdentifier()->getName() << "', corresponding container doesn't exist." << std::endl;
     124                    << ClassIdentifier<T>::getIdentifier()->getName() << "', corresponding container doesn't exist." << std::endl;
    125125        }
    126126    }
     
    152152*/
    153153#define ModifyConfigValueGeneric(object, variable, entryName, modifier, ...) \
    154     if (orxonox::ConfigValueContainer* container = object->getIdentifier()->getConfigValueContainer(entryName)) \
     154    if (orxonox::ConfigValueContainer* container = ClassByObjectType(object)->getConfigValueContainer(entryName)) \
    155155    { \
    156156        container->modifier(__VA_ARGS__); \
     
    160160    { \
    161161        COUT(2) << "Warning: Couln't modify config-value '" << entryName << "' in class '" \
    162                 << object->getIdentifier()->getName() << "', corresponding container doesn't exist." << std::endl; \
     162                << ClassByObjectType(object)->getName() << "', corresponding container doesn't exist." << std::endl; \
    163163    }
    164164
Note: See TracChangeset for help on using the changeset viewer.