Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 25, 2015, 10:49:34 PM (9 years ago)
Author:
landauf
Message:

create and initialize Identifiers explicitly via registerClass(). registerClass() must be called before using an Identifier of this type.
(some tests will currently fail)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core7/src/libraries/core/class/IdentifierManager.cc

    r10372 r10395  
    5858
    5959    /**
    60         @brief Returns an identifier by name and adds it if not available
    61         @param proposal A pointer to a newly created identifier for the case of non existence in the map
    62         @return The identifier (unique instance)
    63     */
    64     Identifier* IdentifierManager::getGloballyUniqueIdentifier(Identifier* proposal)
    65     {
    66         const std::string& typeidName = proposal->getTypeidName();
    67         std::map<std::string, Identifier*>::const_iterator it = this->identifierByTypeidName_.find(typeidName);
    68 
    69         if (it != this->identifierByTypeidName_.end())
    70         {
    71             // There is already an entry: return it
    72             return it->second;
    73         }
    74         else
    75         {
    76             // There is no entry: put the proposal into the map and return it
    77             this->identifierByTypeidName_[typeidName] = proposal;
    78             return proposal;
    79         }
    80     }
    81 
    82     /**
    8360     * Registers the identifier in all maps of the IdentifierManager.
    8461     */
    85     void IdentifierManager::addIdentifierToLookupMaps(Identifier* identifier)
    86     {
    87         const std::string& typeidName = identifier->getTypeidName();
    88         if (this->identifierByTypeidName_.find(typeidName) != this->identifierByTypeidName_.end())
    89         {
    90             this->identifierByString_[identifier->getName()] = identifier;
    91             this->identifierByLowercaseString_[getLowercase(identifier->getName())] = identifier;
    92             this->identifierByNetworkId_[identifier->getNetworkID()] = identifier;
    93         }
    94         else
    95             orxout(internal_warning) << "Trying to add an identifier to lookup maps which is not known to IdentifierManager" << endl;
     62    void IdentifierManager::addIdentifier(Identifier* identifier)
     63    {
     64        orxout(verbose, context::identifier) << "Adding identifier for " << identifier->getName() << " / " << identifier->getTypeidName() << endl;
     65
     66        this->identifierByTypeidName_[identifier->getTypeidName()] = identifier;
     67        this->identifierByString_[identifier->getName()] = identifier;
     68        this->identifierByLowercaseString_[getLowercase(identifier->getName())] = identifier;
     69        this->identifierByNetworkId_[identifier->getNetworkID()] = identifier;
    9670    }
    9771
     
    272246
    273247    /**
     248        @brief Returns the Identifier with a given typeid-name.
     249        @param name The typeid-name of the wanted Identifier
     250        @return The Identifier
     251    */
     252    Identifier* IdentifierManager::getIdentifierByTypeidName(const std::string& typeidName)
     253    {
     254        std::map<std::string, Identifier*>::const_iterator it = this->identifierByTypeidName_.find(typeidName);
     255        if (it != this->identifierByTypeidName_.end())
     256            return it->second;
     257        else
     258            return 0;
     259    }
     260
     261    /**
    274262        @brief Cleans the NetworkID map (needed on clients for correct initialization)
    275263    */
Note: See TracChangeset for help on using the changeset viewer.