Orxonox  0.0.5 Codename: Arcturus
NetworkCallback.h
Go to the documentation of this file.
1 /*
2  * ORXONOX - the hottest 3D action shooter ever to exist
3  * > www.orxonox.net <
4  *
5  *
6  * License notice:
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * Author:
23  * Oliver Scheuss, (C) 2008
24  * Co-authors:
25  * ...
26  *
27  */
28 
29 
30 #ifndef _NetworkCallback_H__
31 #define _NetworkCallback_H__
32 
33 #include "network/NetworkPrereqs.h"
34 #include "NetworkCallbackManager.h"
35 // #include "util/MultiType.h"
36 
37 namespace orxonox{
38 
39  struct EmptyType{};
40 
42  {
43  public:
44  virtual void call() = 0;
46  virtual ~NetworkCallbackBase() {}
47  };
48 
49  template <class T>
51  {
52  public:
53  NetworkCallback(T* object, void (T::*function) (void)) : object_(object), function_(function) {}
54  virtual ~NetworkCallback() {}
55  virtual void call() override
56  { (this->object_->*function_)(); }
57 
58  private:
60  void (T::*function_) (void);
61  };
62 
63  template <class T, class U>
65  {
66  public:
67  NetworkCallbackNotify(T* object, void (T::*function) (const U&)) : object_(object), function_(function) {}
70  virtual void call() override
71  { (this->object_->*function_)( this->oldValue_ ); }
72  void setOldValue(const U& value){ this->oldValue_ = value; }
73  private:
76  void (T::*function_) (const U&);
77  };
78 
79 }
80 
81 
82 #endif /* _NetworkCallback_H__ */
Shared library macros, enums, constants and forward declarations for the network library ...
virtual void call() override
Definition: NetworkCallback.h:55
virtual ~NetworkCallback()
Definition: NetworkCallback.h:54
virtual void call() override
Definition: NetworkCallback.h:70
U oldValue_
Definition: NetworkCallback.h:75
virtual ~NetworkCallbackBase()
Definition: NetworkCallback.h:46
Definition: NetworkPrereqs.h:168
Definition: NetworkPrereqs.h:166
typedef void(ENET_CALLBACK *ENetPacketFreeCallback)(struct _ENetPacket *)
NetworkCallbackNotify()
Definition: NetworkCallback.h:68
NetworkCallbackBase()
Definition: NetworkCallback.h:45
T * object_
Definition: NetworkCallback.h:59
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
#define _NetworkExport
Definition: NetworkPrereqs.h:59
Definition: InputPrereqs.h:78
NetworkCallbackNotify(T *object, void(T::*function)(const U &))
Definition: NetworkCallback.h:67
Definition: NetworkCallback.h:39
void setOldValue(const U &value)
Definition: NetworkCallback.h:72
static void registerCallback(NetworkCallbackBase *cb)
Definition: NetworkCallbackManager.cc:37
Definition: NetworkCallback.h:41
Definition: InputPrereqs.h:80
T * object_
Definition: NetworkCallback.h:74
virtual ~NetworkCallbackNotify()
Definition: NetworkCallback.h:69
NetworkCallback(T *object, void(T::*function)(void))
Definition: NetworkCallback.h:53