commandFunc.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef EQNET_COMMANDFUNC_H
00019 #define EQNET_COMMANDFUNC_H
00020
00021 #include <eq/net/commandResult.h>
00022
00023 namespace eq
00024 {
00025 namespace net
00026 {
00027 class Command;
00028
00035 template< typename T > class CommandFunc
00036 {
00037 public:
00038 CommandFunc( T* object,
00039 CommandResult (T::*func)( Command& ))
00040 : _object( object ), _func( func ) {}
00041
00042 template< typename O > CommandFunc( const O& from )
00043 : _object( from._object ),
00044 _func(
00045 static_cast<CommandResult (T::*)( Command& )>(from._func))
00046 {}
00047
00048 CommandResult operator()( Command& command )
00049 {
00050 return (_object->*_func)( command );
00051 }
00052
00053
00054
00055
00056
00057 T* _object;
00058 CommandResult (T::*_func)( Command& );
00059 };
00060 }
00061 }
00062
00063 #endif //EQNET_COMMANDFUNC_H