libtrbase  1.0.2
Web server and task management solution.
observer.h
Go to the documentation of this file.
1 /**
2  * \file
3  * Definition of the observer pattern implementation.
4  *
5  * \author Georg Hopp
6  *
7  * \copyright
8  * Copyright © 2014 Georg Hopp
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 #ifndef __TR_INTERFACE_OBSERVER_H__
24 #define __TR_INTERFACE_OBSERVER_H__
25 
26 #include "tr/interface.h"
27 
28 
29 typedef void (* fptr_TR_observerUpdate)(void *, void*);
30 
31 /**
32  * Interface structur for the observer pattern
33  */
34 TR_INTERFACE(TR_Observer) {
35  TR_IFID;
37 };
38 
39 /**
40  * The implementation of update will be called by a
41  * subject whenever it ments to inform the observer about
42  * something
43  */
44 inline
45 void
46 TR_observerUpdate(void * observer, void * subject)
47 {
48  TR_CALL(observer, TR_Observer, update, subject);
49 }
50 
51 #endif // __TR_INTERFACE_OBSERVER_H__
52 
53 // vim: set ts=4 sw=4:
#define TR_CALL(object, _iface, method,...)
Definition: class.h:256
TR_INTERFACE(TR_Observer)
Definition: observer.h:34
void TR_observerUpdate(void *observer, void *subject)
Definition: observer.h:46
#define TR_IFID
Definition: interface.h:61
void(* fptr_TR_observerUpdate)(void *, void *)
Definition: observer.h:29