- Timestamp:
- May 25, 2015, 1:37:50 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core7/src/libraries/network/NetworkFunction.h
r10470 r10471 69 69 class _NetworkExport NetworkFunctionBase { 70 70 public: 71 NetworkFunctionBase(const std::string& name );72 virtual ~NetworkFunctionBase() ;73 74 v irtual 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); 75 75 inline uint32_t getNetworkID() const { return this->networkID_; } 76 76 inline const std::string& getName() const { return name_; } … … 85 85 class _NetworkExport NetworkFunctionStatic: public NetworkFunctionBase { 86 86 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 { } 88 91 89 92 inline void call(){ (*this->functor_)(); } … … 94 97 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); } 95 98 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 103 99 private: 104 static std::map<NetworkFunctionPointer, NetworkFunctionStatic*>& getFunctorMap();105 static std::map<uint32_t, NetworkFunctionStatic*>& getIdMap();106 100 FunctorStaticPtr functor_; 107 101 … … 111 105 class _NetworkExport NetworkMemberFunctionBase: public NetworkFunctionBase { 112 106 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 { } 119 110 120 111 // … … 125 116 virtual bool call(uint32_t objectID, const MultiType& mt1, const MultiType& mt2, const MultiType& mt3, const MultiType& mt4)=0; 126 117 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_;131 118 }; 132 119 … … 134 121 template <class T> class NetworkMemberFunction: public NetworkMemberFunctionBase { 135 122 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 { } 137 127 138 128 inline bool call(uint32_t objectID) … … 200 190 FunctorMemberPtr<T> functor_; 201 191 }; 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 }207 192 208 193 template<class T> inline void copyPtr( T ptr, NetworkFunctionPointer& destptr)
Note: See TracChangeset
for help on using the changeset viewer.