Bayeux  3.4.1
Core Foundation library for SuperNEMO
manager_macros.h
Go to the documentation of this file.
1 /* Author(s) : Francois Mauger <mauger@lpccaen.in2p3.fr>
3  * Creation date: 2013-02-21
4  * Last modified: 2013-02-21
5  */
6 
7 #ifndef GEOMTOOLS_MANAGER_MACROS_H
8 #define GEOMTOOLS_MANAGER_MACROS_H 1
9 
10 #define GEOMTOOLS_PLUGIN_CLASS_DECLARE(T) \
11  class T : public ::geomtools::manager::base_plugin \
12 
13 
14 
15 #define GEOMTOOLS_PLUGIN_CONSTRUCTOR_DECLARE(T) \
16  public: \
17  T(); \
18 
19 
20 
21 #define GEOMTOOLS_PLUGIN_CONSTRUCTOR_IMPLEMENT_HEAD(T) \
22  T::T() : ::geomtools::manager::base_plugin() \
23 
24 
25 
26 #define GEOMTOOLS_PLUGIN_DESTRUCTOR_DECLARE(T) \
27  virtual ~T(); \
28 
29 
30 
31 #define GEOMTOOLS_PLUGIN_DESTRUCTOR_IMPLEMENT(T) \
32  T::~T() { \
33  if (this->is_initialized()) this->reset(); \
34  } \
35 
36 
37 
38 #define GEOMTOOLS_PLUGIN_IS_INITIALIZED_DECLARE() \
39  public: \
40  bool is_initialized() const; \
41 
42 
43 
44 #define GEOMTOOLS_PLUGIN_IS_INITIALIZED_IMPLEMENT_HEAD(T) \
45  bool T::is_initialized() const \
46 
47 
48 
49 #define GEOMTOOLS_PLUGIN_INITIALIZE_DECLARE() \
50  public: \
51  int initialize(const ::datatools::properties&, \
52  ::geomtools::manager::plugins_dict_type&, \
53  const ::datatools::service_dict_type & services_); \
54 
55 
56 
57 #define GEOMTOOLS_PLUGIN_INITIALIZE_IMPLEMENT_HEAD(T,CONF,PLUGINS,SERVICES) \
58  int T::initialize(const ::datatools::properties & CONF, \
59  ::geomtools::manager::plugins_dict_type & PLUGINS, \
60  const ::datatools::service_dict_type & SERVICES) \
61 
62 
63 #define GEOMTOOLS_PLUGIN_RESET_DECLARE() \
64  public: \
65  int reset(); \
66 
67 
68 
69 #define GEOMTOOLS_PLUGIN_RESET_IMPLEMENT_HEAD(T) \
70  int T::reset() \
71 
72 
73 
74 #define GEOMTOOLS_PLUGIN_INTERFACE(PLUGIN_CLASS_NAME) \
75  \
76  public: \
77  \
78  GEOMTOOLS_PLUGIN_CONSTRUCTOR_DECLARE(PLUGIN_CLASS_NAME); \
79  \
80  GEOMTOOLS_PLUGIN_DESTRUCTOR_DECLARE(PLUGIN_CLASS_NAME); \
81  \
82  GEOMTOOLS_PLUGIN_IS_INITIALIZED_DECLARE(); \
83  \
84  GEOMTOOLS_PLUGIN_INITIALIZE_DECLARE(); \
85  \
86  GEOMTOOLS_PLUGIN_RESET_DECLARE(); \
87  \
88 
89 
90 /* Registration */
91 
92 #define GEOMTOOLS_PLUGIN_REGISTRATION_INTERFACE(PLUGIN_CLASS_NAME) \
93  private: \
94  DATATOOLS_FACTORY_SYSTEM_AUTO_REGISTRATION_INTERFACE(::geomtools::manager::base_plugin,PLUGIN_CLASS_NAME) \
95 
96 
97 #define GEOMTOOLS_PLUGIN_REGISTRATION_IMPLEMENT(PLUGIN_CLASS_NAME,PLUGIN_ID) \
98  DATATOOLS_FACTORY_SYSTEM_AUTO_REGISTRATION_IMPLEMENTATION (::geomtools::manager::base_plugin,PLUGIN_CLASS_NAME,PLUGIN_ID) \
99 
100 
101 #endif // GEOMTOOLS_MANAGER_MACROS_H
102 
103 /*
104 ** Local Variables: --
105 ** mode: c++ --
106 ** c-file-style: "gnu" --
107 ** tab-width: 2 --
108 ** End: --
109 */