Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 25, 2015, 1:37:50 PM (9 years ago)
Author:
landauf
Message:

moved static maps from NetworkFunctionStatic and NetworkMemberFunctionBase to NetworkFunctionManager

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core7/src/libraries/network/NetworkFunction.h

    r10470 r10471  
    6969class _NetworkExport NetworkFunctionBase {
    7070  public:
    71     NetworkFunctionBase(const std::string& name);
    72     virtual ~NetworkFunctionBase();
    73 
    74     virtual void        setNetworkID(uint32_t id)       { this->networkID_ = id; }
     71    NetworkFunctionBase(const std::string& name, const NetworkFunctionPointer& p);
     72    virtual ~NetworkFunctionBase() {}
     73
     74    void setNetworkID(uint32_t id);
    7575    inline uint32_t     getNetworkID() const            { return this->networkID_; }
    7676    inline const std::string& getName() const           { return name_; }
     
    8585class _NetworkExport NetworkFunctionStatic: public NetworkFunctionBase {
    8686  public:
    87     NetworkFunctionStatic(const FunctorStaticPtr& functor, const std::string& name, const NetworkFunctionPointer& p);
     87    NetworkFunctionStatic(const FunctorStaticPtr& functor, const std::string& name, const NetworkFunctionPointer& p)
     88        : NetworkFunctionBase(name, p)
     89        , functor_(functor)
     90    { }
    8891
    8992    inline void call(){ (*this->functor_)(); }
     
    9497    inline void call(const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4, const MultiType& mt5){ (*this->functor_)(mt1, mt2, mt3, mt4, mt5); }
    9598
    96     virtual void setNetworkID( uint32_t id )
    97         { NetworkFunctionBase::setNetworkID( id ); NetworkFunctionStatic::getIdMap()[id] = this; }
    98     static NetworkFunctionStatic* getFunction( uint32_t id )
    99         { assert( NetworkFunctionStatic::getIdMap().find(id) != NetworkFunctionStatic::getIdMap().end() ); return NetworkFunctionStatic::getIdMap()[id]; }
    100     static NetworkFunctionStatic* getFunction( const NetworkFunctionPointer& p )
    101         { assert( NetworkFunctionStatic::getFunctorMap().find(p) != NetworkFunctionStatic::getFunctorMap().end() ); return NetworkFunctionStatic::getFunctorMap()[p]; }
    102 
    10399  private:
    104     static std::map<NetworkFunctionPointer, NetworkFunctionStatic*>& getFunctorMap();
    105     static std::map<uint32_t, NetworkFunctionStatic*>& getIdMap();
    106100    FunctorStaticPtr functor_;
    107101
     
    111105class _NetworkExport NetworkMemberFunctionBase: public NetworkFunctionBase {
    112106  public:
    113     NetworkMemberFunctionBase(const std::string& name, const NetworkFunctionPointer& p);
    114     ~NetworkMemberFunctionBase();
    115 
    116     virtual void setNetworkID( uint32_t id ){ NetworkFunctionBase::setNetworkID( id ); idMap_[id] = this; }
    117     static NetworkMemberFunctionBase* getFunction( uint32_t id ){ assert( idMap_.find(id) != idMap_.end() ); return idMap_[id]; }
    118     static NetworkMemberFunctionBase* getFunction( const NetworkFunctionPointer& p ){ assert( functorMap_.find(p) != functorMap_.end() ); return functorMap_[p]; }
     107    NetworkMemberFunctionBase(const std::string& name, const NetworkFunctionPointer& p)
     108        : NetworkFunctionBase(name, p)
     109    { }
    119110
    120111    //
     
    125116    virtual bool call(uint32_t objectID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4)=0;
    126117    virtual bool call(uint32_t objectID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4, const MultiType& mt5)=0;
    127 
    128   private:
    129     static std::map<NetworkFunctionPointer, NetworkMemberFunctionBase*> functorMap_;
    130     static std::map<uint32_t, NetworkMemberFunctionBase*> idMap_;
    131118};
    132119
     
    134121template <class T> class NetworkMemberFunction: public NetworkMemberFunctionBase {
    135122  public:
    136     NetworkMemberFunction(const FunctorMemberPtr<T>& functor, const std::string& name, const NetworkFunctionPointer& p);
     123    NetworkMemberFunction(const FunctorMemberPtr<T>& functor, const std::string& name, const NetworkFunctionPointer& p)
     124        : NetworkMemberFunctionBase(name, p)
     125        , functor_(functor)
     126    { }
    137127
    138128    inline bool call(uint32_t objectID)
     
    200190    FunctorMemberPtr<T> functor_;
    201191};
    202 
    203 template <class T> NetworkMemberFunction<T>::NetworkMemberFunction(const FunctorMemberPtr<T>& functor, const std::string& name, const NetworkFunctionPointer& p):
    204     NetworkMemberFunctionBase(name, p), functor_(functor)
    205 {
    206 }
    207192
    208193template<class T> inline void copyPtr( T ptr, NetworkFunctionPointer& destptr)
Note: See TracChangeset for help on using the changeset viewer.