The Gnome Chemistry Utils  0.15.0
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 
50 #define GCU_PROP(type,member) \
51 public: \
52  void Set##member (type val) {m_##member = val;} \
53  type Get##member (void) const {return m_##member;} \
54  type &GetRef##member (void) {return m_##member;} \
55 private: \
56  type m_##member;
57 
74 #define GCU_PROP_EX(type,member) \
75 public: \
76  void Set##member (type val) {m_##member = val; Changed##member ();} \
77  type Get##member (void) const {return m_##member;} \
78 private: \
79  void Changed##member (void); \
80  type m_##member;
81 
98 #define GCU_PROP_FULL(type,member,callback) \
99 public: \
100  void Set##member (type val) {m_##member = val; callback ();} \
101  type Get##member (void) const {return m_##member;} \
102 private: \
103  type m_##member;
104 
119 #define GCU_POINTER_PROP(type,member) \
120 public: \
121  void Set##member (type *val) {m_##member = val;} \
122  type *Get##member (void) {return m_##member;} \
123  type const *Get##member (void) const {return m_##member;} \
124 private: \
125  type *m_##member;
126 
140 #define GCU_RO_PROP(type,member) \
141 public: \
142  type Get##member (void) const {return m_##member;} \
143 private: \
144  type m_##member;
145 
159 #define GCU_RO_STATIC_PROP(type,member) \
160 public: \
161  type Get##member (void) const {return m_##member;} \
162 private: \
163  static type m_##member;
164 
178 #define GCU_RO_POINTER_PROP(type,member) \
179 public: \
180  type const *Get##member (void) const {return m_##member;} \
181 private: \
182  type *m_##member;
183 
197 #define GCU_PROT_PROP(type,member) \
198 public: \
199  type Get##member (void) {return m_##member;} \
200 protected: \
201  type m_##member;
202 
218 #define GCU_PROT_POINTER_PROP(type,member) \
219 public: \
220  type *Get##member (void) {return m_##member;} \
221  type const *Get##member (void) const {return m_##member;} \
222 protected: \
223  type *m_##member;
224 
234 #define go_conf_get_float go_conf_get_double
235 #define GCU_GCONF_GET(key,type,target,defaultval) \
236  target = go_conf_get_##type (m_ConfNode, key); \
237  if (target == (type) 0) \
238  target = defaultval;
239 
247 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
248  target = go_conf_get_##type (m_ConfNode, key);
249 
260 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
261  { \
262  type val = go_conf_get_##type (m_ConfNode, key); \
263  if (val == (type) 0) \
264  val = defaultval; \
265  target = func (val); \
266  }
267 
277 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
278  if (target) { \
279  g_free (target); \
280  target = NULL; \
281  } \
282  target = go_conf_get_string (m_ConfNode, key); \
283  if (target == NULL && defaultval != NULL) \
284  target = g_strdup (defaultval);
285 
292 #define GCU_UPDATE_KEY(key,type,target,action) \
293  if (!strcmp (name, ROOTDIR key)) { \
294  target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \
295  action \
296  return; \
297  }
298 
305 #define GCU_UPDATE_STRING_KEY(key,target,action) \
306  if (!strcmp (name, ROOTDIR key)) { \
307  target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \
308  action \
309  return; \
310  }
311 
312 #define CC2XML(x) reinterpret_cast <xmlChar const *> (x)
313 #define C2XML(x) reinterpret_cast <xmlChar *> (x)
314 #define XML2CC(x) reinterpret_cast <char const *> (x)
315 #define XML2C(x) reinterpret_cast <char *> (x)
316 
317 #endif // GCU_MACROS_H