The Gnome Chemistry Utils  0.12.13
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-2009 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 2 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 
72 #define GCU_POINTER_PROP(type,member) \
73 public: \
74  void Set##member (type *val) {m_##member = val;} \
75  type *Get##member (void) {return m_##member;} \
76  type const *Get##member (void) const {return m_##member;} \
77 private: \
78  type *m_##member;
79 
93 #define GCU_RO_PROP(type,member) \
94 public: \
95  type Get##member (void) const {return m_##member;} \
96 private: \
97  type m_##member;
98 
112 #define GCU_RO_POINTER_PROP(type,member) \
113 public: \
114  type const *Get##member (void) const {return m_##member;} \
115 private: \
116  type *m_##member;
117 
131 #define GCU_PROT_PROP(type,member) \
132 public: \
133  type Get##member (void) {return m_##member;} \
134 protected: \
135  type m_##member;
136 
152 #define GCU_PROT_POINTER_PROP(type,member) \
153 public: \
154  type *Get##member (void) {return m_##member;} \
155  type const *Get##member (void) const {return m_##member;} \
156 protected: \
157  type *m_##member;
158 
168 #define go_conf_get_float go_conf_get_double
169 #define GCU_GCONF_GET(key,type,target,defaultval) \
170  target = go_conf_get_##type (m_ConfNode, key); \
171  if (target == (type) 0) \
172  target = defaultval;
173 
181 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
182  target = go_conf_get_##type (m_ConfNode, key);
183 
194 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
195  { \
196  type val = go_conf_get_##type (m_ConfNode, key); \
197  if (val == (type) 0) \
198  val = defaultval; \
199  target = func (val); \
200  }
201 
211 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
212  if (target) { \
213  g_free (target); \
214  target = NULL; \
215  } \
216  target = go_conf_get_string (m_ConfNode, key); \
217  if (target == NULL && defaultval) \
218  target = g_strdup (defaultval);
219 
226 #define GCU_UPDATE_KEY(key,type,target,action) \
227  if (!strcmp (name, ROOTDIR key)) { \
228  target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \
229  action \
230  return; \
231  }
232 
239 #define GCU_UPDATE_STRING_KEY(key,target,action) \
240  if (!strcmp (name, ROOTDIR key)) { \
241  target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \
242  action \
243  return; \
244  }
245 
246 #endif // GCU_MACROS_H