The Gnome Chemistry Utils 0.12.10
|
00001 // -*- C++ -*- 00002 00003 /* 00004 * Gnome Chemisty Utils 00005 * macros.h 00006 * 00007 * Copyright (C) 2001-2009 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_POINTER_PROP(type,member) \ 00113 public: \ 00114 type const *Get##member (void) const {return m_##member;} \ 00115 private: \ 00116 type *m_##member; 00117 00131 #define GCU_PROT_PROP(type,member) \ 00132 public: \ 00133 type Get##member (void) {return m_##member;} \ 00134 protected: \ 00135 type m_##member; 00136 00152 #define GCU_PROT_POINTER_PROP(type,member) \ 00153 public: \ 00154 type *Get##member (void) {return m_##member;} \ 00155 type const *Get##member (void) const {return m_##member;} \ 00156 protected: \ 00157 type *m_##member; 00158 00168 #define go_conf_get_float go_conf_get_double 00169 #define GCU_GCONF_GET(key,type,target,defaultval) \ 00170 target = go_conf_get_##type (m_ConfNode, key); \ 00171 if (target == (type) 0) \ 00172 target = defaultval; 00173 00181 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \ 00182 target = go_conf_get_##type (m_ConfNode, key); 00183 00194 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \ 00195 { \ 00196 type val = go_conf_get_##type (m_ConfNode, key); \ 00197 if (val == (type) 0) \ 00198 val = defaultval; \ 00199 target = func (val); \ 00200 } 00201 00211 #define GCU_GCONF_GET_STRING(key,target,defaultval) \ 00212 if (target) { \ 00213 g_free (target); \ 00214 target = NULL; \ 00215 } \ 00216 target = go_conf_get_string (m_ConfNode, key); \ 00217 if (target == NULL && defaultval) \ 00218 target = g_strdup (defaultval); 00219 00226 #define GCU_UPDATE_KEY(key,type,target,action) \ 00227 if (!strcmp (name, ROOTDIR key)) { \ 00228 target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \ 00229 action \ 00230 return; \ 00231 } 00232 00239 #define GCU_UPDATE_STRING_KEY(key,target,action) \ 00240 if (!strcmp (name, ROOTDIR key)) { \ 00241 target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \ 00242 action \ 00243 return; \ 00244 } 00245 00246 #endif // GCU_MACROS_H