The Gnome Chemistry Utils  0.15.1
macros.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 /*
4  * Gnome Chemisty Utils
5  * macros.h
6  *
7  * Copyright (C) 2001-2011 Jean Bréfort <jean.brefort@normalesup.org>
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 3 of the
12  * License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
22  * USA
23  */
24 
25 #ifndef GCU_MACROS_H
26 #define GCU_MACROS_H
27 
28 #include <goffice/goffice.h>
29 
51 #define GCU_PROP(type,member) \
52 public: \
53  void Set##member (type val) {m_##member = val;} \
54  type Get##member (void) const {return m_##member;} \
55  type &GetRef##member (void) {return m_##member;} \
56  type const &GetRef##member (void) const {return m_##member;} \
57 private: \
58  type m_##member;
59 
76 #define GCU_PROP_EX(type,member) \
77 public: \
78  void Set##member (type val) {m_##member = val; Changed##member ();} \
79  type Get##member (void) const {return m_##member;} \
80 private: \
81  void Changed##member (void); \
82  type m_##member;
83 
100 #define GCU_PROP_FULL(type,member,callback) \
101 public: \
102  void Set##member (type val) {m_##member = val; callback ();} \
103  type Get##member (void) const {return m_##member;} \
104 private: \
105  type m_##member;
106 
121 #define GCU_POINTER_PROP(type,member) \
122 public: \
123  void Set##member (type *val) {m_##member = val;} \
124  type *Get##member (void) {return m_##member;} \
125  type const *Get##member (void) const {return m_##member;} \
126 private: \
127  type *m_##member;
128 
142 #define GCU_RO_PROP(type,member) \
143 public: \
144  type Get##member (void) const {return m_##member;} \
145 private: \
146  type m_##member;
147 
161 #define GCU_RO_STATIC_PROP(type,member) \
162 public: \
163  type Get##member (void) const {return m_##member;} \
164 private: \
165  static type m_##member;
166 
180 #define GCU_RO_POINTER_PROP(type,member) \
181 public: \
182  type const *Get##member (void) const {return m_##member;} \
183 private: \
184  type *m_##member;
185 
199 #define GCU_PROT_PROP(type,member) \
200 public: \
201  type Get##member (void) {return m_##member;} \
202 protected: \
203  type m_##member;
204 
220 #define GCU_PROT_POINTER_PROP(type,member) \
221 public: \
222  type *Get##member (void) {return m_##member;} \
223  type const *Get##member (void) const {return m_##member;} \
224 protected: \
225  type *m_##member;
226 
236 #define go_conf_get_float go_conf_get_double
237 #define GCU_GCONF_GET(key,type,target,defaultval) \
238  target = go_conf_get_##type (m_ConfNode, key); \
239  if (target == (type) 0) \
240  target = defaultval;
241 
249 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
250  target = go_conf_get_##type (m_ConfNode, key);
251 
262 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
263  { \
264  type val = go_conf_get_##type (m_ConfNode, key); \
265  if (val == (type) 0) \
266  val = defaultval; \
267  target = func (val); \
268  }
269 
279 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
280  if (target) { \
281  g_free (target); \
282  target = NULL; \
283  } \
284  target = go_conf_get_string (m_ConfNode, key); \
285  if (target == NULL && defaultval != NULL) \
286  target = g_strdup (defaultval);
287 
294 #define GCU_UPDATE_KEY(key,type,target,action) \
295  if (!strcmp (name, ROOTDIR key)) { \
296  target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \
297  action \
298  return; \
299  }
300 
307 #define GCU_UPDATE_STRING_KEY(key,target,action) \
308  if (!strcmp (name, ROOTDIR key)) { \
309  target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \
310  action \
311  return; \
312  }
313 
314 #define CC2XML(x) reinterpret_cast <xmlChar const *> (x)
315 #define C2XML(x) reinterpret_cast <xmlChar *> (x)
316 #define XML2CC(x) reinterpret_cast <char const *> (x)
317 #define XML2C(x) reinterpret_cast <char *> (x)
318 
319 #endif // GCU_MACROS_H