Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Mar 5, 2010, 6:26:54 PM (15 years ago)
Author:
dafrick
Message:

Additional documentation, code niceifying and potential bug fixing. Also: Renamed DroppedItem to DroppedPickup.

Location:
code/branches/pickup3/src/orxonox/pickup
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.cc

    r6474 r6475  
    3434{
    3535   
     36    /**
     37    @brief
     38        Constructor. Registers the object and initializes member variables.
     39    */
    3640    PickupIdentifier::PickupIdentifier()
    3741    {
    3842        RegisterRootObject(PickupIdentifier);
    3943       
    40        
     44        this->classIdentifier_ = NULL;
    4145    }
    4246   
     
    5256        Pointer to the second PickupIdentifier, b.
    5357    @return
    54         Returns an int.
     58        Returns an integer. 0 if the two compared PickupIdentifiers are the same, <0 if a < b and >0 if a > b.
    5559    */
    56     int PickupIdentifier::compare(const PickupIdentifier& identifier) const
     60    int PickupIdentifier::compare(const PickupIdentifier* identifier) const
    5761    {
    58         if(!identifier.classIdentifier_->isExactlyA(this->classIdentifier_))
    59             return this->classIdentifier_->getName().compare(identifier.classIdentifier_->getName());
     62        //! If the classIdentifiers are not the same (meaning the PickupIdentifiers identify different classes), the obviously the two Pickupables identified by the PickupIdentifiers cannot be the same. An ordering is established through the alphabetical ordering of the respective classnames.
     63        if(!identifier->classIdentifier_->isExactlyA(this->classIdentifier_))
     64            return this->classIdentifier_->getName().compare(identifier->classIdentifier_->getName());
    6065       
    61         if(!(this->parameters_.size() == identifier.parameters_.size()))
     66        //! If the class is the same for both PickupIdentifiers we go on to check the parameters of the class.
     67        //! If the two have a different number of parameters then obviusly something is very wrong.
     68        if(!(this->parameters_.size() == identifier->parameters_.size()))
    6269        {
    6370            COUT(1) << "Something went wrong in PickupIdentifier!" << std::endl;
    64             return this->parameters_.size()-identifier.parameters_.size();
     71            return this->parameters_.size()-identifier->parameters_.size();
    6572        }
    6673       
     74        //! We iterate through all parameters and compar their values (which are strings). The first parameter is the most significant. The ordering is once again established by the alphabetical comparison of the two value strings.
    6775        for(std::map<std::string, std::string>::const_iterator it = this->parameters_.begin(); it != this->parameters_.end(); it++)
    6876        {
    69             if(identifier.parameters_.find(it->first) == identifier.parameters_.end())
     77            //!< If a parameter present in one of the identifiers is not found in the other, once again, something is very wrong.
     78            if(identifier->parameters_.find(it->first) == identifier->parameters_.end())
    7079            {
    7180                COUT(1) << "Something went wrong in PickupIdentifier!" << std::endl;
    7281                return -1;
    7382            }
    74             if(identifier.parameters_.find(it->first)->second != it->second)
    75                 return it->second.compare(identifier.parameters_.find(it->first)->second);
     83            if(identifier->parameters_.find(it->first)->second != it->second)
     84                return it->second.compare(identifier->parameters_.find(it->first)->second);
    7685        }
    7786           
     
    7988    }
    8089   
     90    /**
     91    @brief
     92        Add the class of the Pickupable to its PickupIdentifier.
     93    @param identifier
     94        A pointer to the Identifier of the class.
     95    */
    8196    void PickupIdentifier::addClass(Identifier* identifier)
    8297    {
     
    8499    }
    85100   
     101    /**
     102    @brief
     103        Add a parameter to the PickupIdentifier.
     104    @param name
     105        The name of the parameter.
     106    @param value
     107        The value of the parameter.
     108    @return
     109        Returns false if the parameter already existed, true if not.
     110    */
    86111    bool PickupIdentifier::addParameter(std::string & name, std::string & value)
    87112    {
  • code/branches/pickup3/src/orxonox/pickup/PickupIdentifier.h

    r6474 r6475  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "core/OrxonoxClass.h"
    35 #include "core/Identifier.h"
    3634#include <map>
    3735#include <string>
     36#include "core/Identifier.h"
     37
     38#include "core/OrxonoxClass.h"
    3839
    3940namespace orxonox
    4041{
    4142   
     43    /**
     44    @brief
     45        The purpose of the PickupIdentifier class is to identify different types of pickups allthough they are of the same class.
     46        This allows for more generic classes (or pickups in this case) that can be a number of different pickup types and can be identified as such without the need for a lot of different classes. An example is the HealthPickup class that encompasses a wide variety of different types of health pickups, e.g a HealthPickup that adds 10 health every second for 10 seconds or a HealthPickup that adds 100 health as soon as it is picked up, a.s.o.
     47        To that purpose this class provides functionality to compare two PickupIdentifier (and since all Pickupables have an Identifier through that Pickupables can be compared). It als provides functionality to add parameters that distinguish between different types of pickups in the same pickup class.
     48        Lastly a struct is provided that can be used in stl containers to establish a strictly lesser ordering between PickupIdentifiers (and thus Pickupables).
     49    @author
     50        Damian 'Mozork' Frick
     51    */
    4252    class _OrxonoxExport PickupIdentifier : virtual public OrxonoxClass
    4353    {
    4454       
    4555        public:
    46             PickupIdentifier(void);
    47             ~PickupIdentifier();
     56            PickupIdentifier(void); //!< Constructor.
     57            ~PickupIdentifier(); //!< Destructor.
    4858           
    49             virtual int compare(const PickupIdentifier& identifier) const;
     59            virtual int compare(const PickupIdentifier* identifier) const; //!< Compares two PickupIdentifiers and returns 0 if a == b, <0 if a < b and >0 if a > b for a.compare(b).
    5060           
    51             void addClass(Identifier* identifier);
    52             bool addParameter(std::string & name, std::string & value);
     61            void addClass(Identifier* identifier); //!< Add the class of the Pickupable to its PickupIdentifier.
     62            bool addParameter(std::string & name, std::string & value); //!< Add a parameter to the PickupIdentifier.
    5363           
    5464        private:
    55             Identifier* classIdentifier_;
    56             std::map<std::string, std::string> parameters_;
    57            
     65            Identifier* classIdentifier_; //!< The Identifier of the class.
     66            std::map<std::string, std::string> parameters_; //!< The parameters identifying the type of the pickup beyond the class.
    5867           
    5968    };
    6069   
    61     //TODO: Needed?
     70    /**
     71    @brief
     72        Struct that overloads the compare operation between two PickupIdentifier pointers.
     73    */
    6274    struct PickupIdentifierCompare
    6375    {
    64         bool operator() (const PickupIdentifier& lhs, const PickupIdentifier& rhs) const
    65             { return lhs.compare(rhs) < 0; }
    66     };
    67    
    68     struct PickupIdentifierPtrCompare
    69     {
    7076        bool operator() (const PickupIdentifier* lhs, const PickupIdentifier* rhs) const
    71             { return lhs->compare(*rhs) < 0; }
     77            { return lhs->compare(rhs) < 0; }
    7278    };
    7379   
Note: See TracChangeset for help on using the changeset viewer.