Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 19, 2010, 2:14:54 AM (14 years ago)
Author:
landauf
Message:

Moved ability to possess descriptions from Executor to ConsoleCommand, since no other executors use this feature. Also simplified this code a little by introducing a new shortcut in Language.h. XMLPort has to use a temporary solution for descriptions without Language support atm.

Location:
code/branches/consolecommands3/src/libraries/core
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • code/branches/consolecommands3/src/libraries/core/ConsoleCommand.cc

    r7185 r7186  
    2929#include "ConsoleCommand.h"
    3030#include <cassert>
     31
     32#include "Language.h"
    3133
    3234namespace orxonox
     
    7173            this->argumentList_.clear();
    7274    }
     75
     76    ConsoleCommand& ConsoleCommand::description(const std::string& description)
     77    {
     78        this->description_ = std::string("ConsoleCommandDescription::" + this->name_ + "::function");
     79        AddLanguageEntry(this->description_, description);
     80        return (*this);
     81    }
     82
     83    const std::string& ConsoleCommand::getDescription() const
     84    {
     85        return GetLocalisation_noerror(this->description_);
     86    }
     87
     88    ConsoleCommand& ConsoleCommand::descriptionParam(unsigned int param, const std::string& description)
     89    {
     90        if (param < MAX_FUNCTOR_ARGUMENTS)
     91        {
     92            this->descriptionParam_[param] = std::string("ConsoleCommandDescription::" + this->name_ + "::param" + multi_cast<std::string>(param));
     93            AddLanguageEntry(this->descriptionParam_[param], description);
     94        }
     95        return (*this);
     96    }
     97
     98    const std::string& ConsoleCommand::getDescriptionParam(unsigned int param) const
     99    {
     100        if (param < MAX_FUNCTOR_ARGUMENTS)
     101            return GetLocalisation_noerror(this->descriptionParam_[param]);
     102
     103        return this->descriptionParam_[0];
     104    }
     105
     106    ConsoleCommand& ConsoleCommand::descriptionReturnvalue(const std::string& description)
     107    {
     108        this->descriptionReturnvalue_ = std::string("ConsoleCommandDescription::" + this->name_ + "::returnvalue");
     109        AddLanguageEntry(this->descriptionReturnvalue_, description);
     110        return (*this);
     111    }
     112
     113    const std::string& ConsoleCommand::getDescriptionReturnvalue(int param) const
     114    {
     115        return GetLocalisation_noerror(this->descriptionReturnvalue_);
     116    }
    73117}
    74118
  • code/branches/consolecommands3/src/libraries/core/ConsoleCommand.h

    r7185 r7186  
    9090            ConsoleCommand(Functor* functor, const std::string& name = "");
    9191
    92             inline ConsoleCommand& description(const std::string& description)
    93                 { this->Executor::setDescription(description); return (*this); }
    94             inline ConsoleCommand& descriptionParam(int param, const std::string& description)
    95                 { this->Executor::setDescriptionParam(param, description); return (*this); }
    96             inline ConsoleCommand& descriptionReturnvalue(const std::string& description)
    97                 { this->Executor::setDescriptionReturnvalue(description); return (*this); }
     92            ConsoleCommand& description(const std::string& description);
     93            const std::string& getDescription() const;
     94
     95            ConsoleCommand& descriptionParam(unsigned int param, const std::string& description);
     96            const std::string& getDescriptionParam(unsigned int param) const;
     97
     98            ConsoleCommand& descriptionReturnvalue(const std::string& description);
     99            const std::string& getDescriptionReturnvalue(int param) const;
     100
    98101            inline ConsoleCommand& defaultValues(const MultiType& param1)
    99102                { this->Executor::setDefaultValues(param1); return (*this); }
     
    150153            KeybindMode::Value keybindMode_;
    151154            int inputConfiguredParam_;
     155
     156            LanguageEntryLabel description_;
     157            LanguageEntryLabel descriptionReturnvalue_;
     158            LanguageEntryLabel descriptionParam_[MAX_FUNCTOR_ARGUMENTS];
    152159    };
    153160
  • code/branches/consolecommands3/src/libraries/core/Executor.cc

    r7163 r7186  
    3636#include "util/StringUtils.h"
    3737#include "util/SubString.h"
    38 #include "Language.h"
    3938
    4039namespace orxonox
     
    4443        this->functor_ = functor;
    4544        this->name_ = name;
    46 
    47         this->bAddedDescription_ = false;
    48         this->bAddedDescriptionReturnvalue_ = false;
    49 
    50         this->bAddedDescriptionParam_[0] = false;
    51         this->bAddedDescriptionParam_[1] = false;
    52         this->bAddedDescriptionParam_[2] = false;
    53         this->bAddedDescriptionParam_[3] = false;
    54         this->bAddedDescriptionParam_[4] = false;
    5545
    5646        this->bAddedDefaultValue_[0] = false;
     
    6959    {
    7060        unsigned int paramCount = this->functor_->getParamCount();
    71        
     61
    7262        if (paramCount == 0)
    7363        {
     
    9787        {
    9888            SubString tokens(params, delimiter, SubString::WhiteSpaces, false, '\\', true, '"', true, '(', ')', true, '\0');
    99            
     89
    10090            for (unsigned int i = tokens.size(); i < this->functor_->getParamCount(); i++)
    10191            {
     
    10696                }
    10797            }
    108            
     98
    10999            MultiType param[MAX_FUNCTOR_ARGUMENTS];
    110100            COUT(5) << "Calling Executor " << this->name_ << " through parser with " << paramCount << " parameters, using " << tokens.size() << " tokens (";
     
    129119            }
    130120            COUT(5) << ")." << std::endl;
    131            
     121
    132122            if ((tokens.size() > paramCount) && (this->functor_->getTypenameParam(paramCount - 1) == "string"))
    133123                param[paramCount - 1] = tokens.subSet(paramCount - 1).join();
    134            
     124
    135125            switch(paramCount)
    136126            {
     
    198188            return true;
    199189        }
    200     }
    201 
    202     Executor& Executor::setDescription(const std::string& description)
    203     {
    204         if (!this->bAddedDescription_)
    205         {
    206             this->description_ = std::string("ExecutorDescription::" + this->name_ + "::function");
    207             AddLanguageEntry(this->description_, description);
    208             this->bAddedDescription_ = true;
    209         }
    210         return (*this);
    211     }
    212 
    213     const std::string& Executor::getDescription() const
    214     {
    215         return GetLocalisation(this->description_);
    216     }
    217 
    218     Executor& Executor::setDescriptionParam(unsigned int param, const std::string& description)
    219     {
    220         if (param < MAX_FUNCTOR_ARGUMENTS)
    221         {
    222             if (!this->bAddedDescriptionParam_[param])
    223             {
    224                 std::string paramnumber;
    225                 if (!convertValue(&paramnumber, param))
    226                     return (*this);
    227 
    228                 this->descriptionParam_[param] = std::string("ExecutorDescription::" + this->name_ + "::param" + paramnumber);
    229                 AddLanguageEntry(this->descriptionParam_[param], description);
    230                 this->bAddedDescriptionParam_[param] = true;
    231             }
    232         }
    233         return (*this);
    234     }
    235 
    236     const std::string& Executor::getDescriptionParam(unsigned int param) const
    237     {
    238         if (param < MAX_FUNCTOR_ARGUMENTS)
    239             return GetLocalisation(this->descriptionParam_[param]);
    240 
    241         return this->descriptionParam_[0];
    242     }
    243 
    244     Executor& Executor::setDescriptionReturnvalue(const std::string& description)
    245     {
    246         if (!this->bAddedDescriptionReturnvalue_)
    247         {
    248             this->descriptionReturnvalue_ = std::string("ExecutorDescription::" + this->name_ + "::returnvalue");
    249             AddLanguageEntry(this->descriptionReturnvalue_, description);
    250             this->bAddedDescriptionReturnvalue_ = true;
    251         }
    252         return (*this);
    253     }
    254 
    255     const std::string& Executor::getDescriptionReturnvalue(int param) const
    256     {
    257         return GetLocalisation(this->descriptionReturnvalue_);
    258190    }
    259191
  • code/branches/consolecommands3/src/libraries/core/Executor.h

    r7177 r7186  
    6161
    6262            bool evaluate(const std::string& params, MultiType param[5], const std::string& delimiter = " ") const;
    63 
    64             Executor& setDescription(const std::string& description);
    65             const std::string& getDescription() const;
    66 
    67             Executor& setDescriptionParam(unsigned int param, const std::string& description);
    68             const std::string& getDescriptionParam(unsigned int param) const;
    69 
    70             Executor& setDescriptionReturnvalue(const std::string& description);
    71             const std::string& getDescriptionReturnvalue(int param) const;
    7263
    7364            inline Functor* getFunctor() const
     
    120111            MultiType defaultValue_[MAX_FUNCTOR_ARGUMENTS];
    121112            bool bAddedDefaultValue_[MAX_FUNCTOR_ARGUMENTS];
    122 
    123         private:
    124             LanguageEntryLabel description_;
    125             LanguageEntryLabel descriptionReturnvalue_;
    126             LanguageEntryLabel descriptionParam_[MAX_FUNCTOR_ARGUMENTS];
    127 
    128             bool bAddedDescription_;
    129             bool bAddedDescriptionReturnvalue_;
    130             bool bAddedDescriptionParam_[MAX_FUNCTOR_ARGUMENTS];
    131113    };
    132114
  • code/branches/consolecommands3/src/libraries/core/Language.cc

    r6417 r7186  
    3636#include <fstream>
    3737#include "util/Debug.h"
     38#include "util/StringUtils.h"
    3839#include "Core.h"
    3940#include "PathConfig.h"
     
    169170        @return The localisation
    170171    */
    171     const std::string& Language::getLocalisation(const LanguageEntryLabel& label) const
     172    const std::string& Language::getLocalisation(const LanguageEntryLabel& label, bool bError) const
    172173    {
    173174        std::map<std::string, LanguageEntry*>::const_iterator it = this->languageEntries_.find(label);
    174175        if (it != this->languageEntries_.end())
    175176            return it->second->getLocalisation();
    176         else
     177        else if (bError)
    177178        {
    178179            // Uh, oh, an undefined entry was requested: return the default string
     
    180181            return this->defaultLocalisation_;
    181182        }
     183        else
     184            return BLANKSTRING;
    182185    }
    183186
  • code/branches/consolecommands3/src/libraries/core/Language.h

    r6536 r7186  
    116116
    117117            void addEntry(const LanguageEntryLabel& label, const std::string& entry);
    118             const std::string& getLocalisation(const LanguageEntryLabel& label) const;
     118            const std::string& getLocalisation(const LanguageEntryLabel& label, bool bError = true) const;
    119119
    120120        private:
     
    145145        return Language::getInstance().getLocalisation(label);
    146146    }
     147
     148    //! Shortcut function for Language::getLocalisation without printing an error in case the label doesn't exist
     149    inline const std::string& GetLocalisation_noerror(const LanguageEntryLabel& label)
     150    {
     151        return Language::getInstance().getLocalisation(label, false);
     152    }
    147153}
    148154
  • code/branches/consolecommands3/src/libraries/core/XMLPort.h

    r7163 r7186  
    317317                { return this->paramname_; }
    318318
    319             virtual XMLPortParamContainer& description(const std::string& description) = 0;
    320             virtual const std::string& getDescription() = 0;
     319            inline XMLPortParamContainer& description(const std::string& description)
     320                { this->description_ = description; return *this; }
     321            inline const std::string& getDescription() const
     322                { return this->description_; }
    321323
    322324            virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType& param) = 0;
     
    332334            Identifier* identifier_;
    333335            BaseObject* owner_;
     336            std::string description_;
    334337    };
    335338
     
    436439            }
    437440
    438             virtual XMLPortParamContainer& description(const std::string& description)
    439                 { this->loadexecutor_->setDescription(description); return (*this); }
    440             virtual const std::string& getDescription()
    441                 { return this->loadexecutor_->getDescription(); }
    442 
    443441            virtual XMLPortParamContainer& defaultValue(unsigned int index, const MultiType& param)
    444442            {
     
    502500                { return this->sectionname_; }
    503501
    504             virtual XMLPortObjectContainer& description(const std::string& description) = 0;
    505             virtual const std::string& getDescription() = 0;
     502            inline XMLPortObjectContainer& description(const std::string& description)
     503                { this->description_ = description; return *this; }
     504            const std::string& getDescription() const
     505                { return this->description_; }
    506506
    507507            bool identifierIsIncludedInLoaderMask(const Identifier* identifier);
     
    513513            Identifier* identifier_;
    514514            Identifier* objectIdentifier_;
     515            std::string description_;
    515516    };
    516517
     
    548549                (*this->loadexecutor_)(castedObject, castedNewObject);
    549550            }
    550 
    551             virtual XMLPortObjectContainer& description(const std::string& description)
    552                 { this->loadexecutor_->setDescription(description); return (*this); }
    553             virtual const std::string& getDescription()
    554                 { return this->loadexecutor_->getDescription(); }
    555551
    556552        private:
Note: See TracChangeset for help on using the changeset viewer.