The Gnome Chemistry Utils 0.13.3
|
00001 // -*- C++ -*- 00002 00003 /* 00004 * Gnome Chemisty Utils 00005 * macros.h 00006 * 00007 * Copyright (C) 2001-2011 Jean Bréfort <jean.brefort@normalesup.org> 00008 * 00009 * This program is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU General Public License as 00011 * published by the Free Software Foundation; either version 2 of the 00012 * License, or (at your option) any later version. 00013 * 00014 * This program is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this program; if not, write to the Free Software 00021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 00022 * USA 00023 */ 00024 00025 #ifndef GCU_MACROS_H 00026 #define GCU_MACROS_H 00027 00028 #include <goffice/goffice.h> 00029 00050 #define GCU_PROP(type,member) \ 00051 public: \ 00052 void Set##member (type val) {m_##member = val;} \ 00053 type Get##member (void) const {return m_##member;} \ 00054 type &GetRef##member (void) {return m_##member;} \ 00055 private: \ 00056 type m_##member; 00057 00072 #define GCU_POINTER_PROP(type,member) \ 00073 public: \ 00074 void Set##member (type *val) {m_##member = val;} \ 00075 type *Get##member (void) {return m_##member;} \ 00076 type const *Get##member (void) const {return m_##member;} \ 00077 private: \ 00078 type *m_##member; 00079 00093 #define GCU_RO_PROP(type,member) \ 00094 public: \ 00095 type Get##member (void) const {return m_##member;} \ 00096 private: \ 00097 type m_##member; 00098 00112 #define GCU_RO_STATIC_PROP(type,member) \ 00113 public: \ 00114 type Get##member (void) const {return m_##member;} \ 00115 private: \ 00116 static type m_##member; 00117 00131 #define GCU_RO_POINTER_PROP(type,member) \ 00132 public: \ 00133 type const *Get##member (void) const {return m_##member;} \ 00134 private: \ 00135 type *m_##member; 00136 00150 #define GCU_PROT_PROP(type,member) \ 00151 public: \ 00152 type Get##member (void) {return m_##member;} \ 00153 protected: \ 00154 type m_##member; 00155 00171 #define GCU_PROT_POINTER_PROP(type,member) \ 00172 public: \ 00173 type *Get##member (void) {return m_##member;} \ 00174 type const *Get##member (void) const {return m_##member;} \ 00175 protected: \ 00176 type *m_##member; 00177 00187 #define go_conf_get_float go_conf_get_double 00188 #define GCU_GCONF_GET(key,type,target,defaultval) \ 00189 target = go_conf_get_##type (m_ConfNode, key); \ 00190 if (target == (type) 0) \ 00191 target = defaultval; 00192 00200 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \ 00201 target = go_conf_get_##type (m_ConfNode, key); 00202 00213 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \ 00214 { \ 00215 type val = go_conf_get_##type (m_ConfNode, key); \ 00216 if (val == (type) 0) \ 00217 val = defaultval; \ 00218 target = func (val); \ 00219 } 00220 00230 #define GCU_GCONF_GET_STRING(key,target,defaultval) \ 00231 if (target) { \ 00232 g_free (target); \ 00233 target = NULL; \ 00234 } \ 00235 target = go_conf_get_string (m_ConfNode, key); \ 00236 if (target == NULL && defaultval) \ 00237 target = g_strdup (defaultval); 00238 00245 #define GCU_UPDATE_KEY(key,type,target,action) \ 00246 if (!strcmp (name, ROOTDIR key)) { \ 00247 target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \ 00248 action \ 00249 return; \ 00250 } 00251 00258 #define GCU_UPDATE_STRING_KEY(key,target,action) \ 00259 if (!strcmp (name, ROOTDIR key)) { \ 00260 target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \ 00261 action \ 00262 return; \ 00263 } 00264 00265 #define CC2XML(x) reinterpret_cast <xmlChar const *> (x) 00266 #define C2XML(x) reinterpret_cast <xmlChar *> (x) 00267 #define XML2CC(x) reinterpret_cast <char const *> (x) 00268 #define XML2C(x) reinterpret_cast <char *> (x) 00269 00270 #endif // GCU_MACROS_H