The Gnome Chemistry Utils
0.13.6
|
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 00074 #define GCU_PROP_EX(type,member) \ 00075 public: \ 00076 void Set##member (type val) {m_##member = val; Changed##member ();} \ 00077 type Get##member (void) const {return m_##member;} \ 00078 private: \ 00079 void Changed##member (void); \ 00080 type m_##member; 00081 00096 #define GCU_POINTER_PROP(type,member) \ 00097 public: \ 00098 void Set##member (type *val) {m_##member = val;} \ 00099 type *Get##member (void) {return m_##member;} \ 00100 type const *Get##member (void) const {return m_##member;} \ 00101 private: \ 00102 type *m_##member; 00103 00117 #define GCU_RO_PROP(type,member) \ 00118 public: \ 00119 type Get##member (void) const {return m_##member;} \ 00120 private: \ 00121 type m_##member; 00122 00136 #define GCU_RO_STATIC_PROP(type,member) \ 00137 public: \ 00138 type Get##member (void) const {return m_##member;} \ 00139 private: \ 00140 static type m_##member; 00141 00155 #define GCU_RO_POINTER_PROP(type,member) \ 00156 public: \ 00157 type const *Get##member (void) const {return m_##member;} \ 00158 private: \ 00159 type *m_##member; 00160 00174 #define GCU_PROT_PROP(type,member) \ 00175 public: \ 00176 type Get##member (void) {return m_##member;} \ 00177 protected: \ 00178 type m_##member; 00179 00195 #define GCU_PROT_POINTER_PROP(type,member) \ 00196 public: \ 00197 type *Get##member (void) {return m_##member;} \ 00198 type const *Get##member (void) const {return m_##member;} \ 00199 protected: \ 00200 type *m_##member; 00201 00211 #define go_conf_get_float go_conf_get_double 00212 #define GCU_GCONF_GET(key,type,target,defaultval) \ 00213 target = go_conf_get_##type (m_ConfNode, key); \ 00214 if (target == (type) 0) \ 00215 target = defaultval; 00216 00224 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \ 00225 target = go_conf_get_##type (m_ConfNode, key); 00226 00237 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \ 00238 { \ 00239 type val = go_conf_get_##type (m_ConfNode, key); \ 00240 if (val == (type) 0) \ 00241 val = defaultval; \ 00242 target = func (val); \ 00243 } 00244 00254 #define GCU_GCONF_GET_STRING(key,target,defaultval) \ 00255 if (target) { \ 00256 g_free (target); \ 00257 target = NULL; \ 00258 } \ 00259 target = go_conf_get_string (m_ConfNode, key); \ 00260 if (target == NULL && defaultval) \ 00261 target = g_strdup (defaultval); 00262 00269 #define GCU_UPDATE_KEY(key,type,target,action) \ 00270 if (!strcmp (name, ROOTDIR key)) { \ 00271 target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \ 00272 action \ 00273 return; \ 00274 } 00275 00282 #define GCU_UPDATE_STRING_KEY(key,target,action) \ 00283 if (!strcmp (name, ROOTDIR key)) { \ 00284 target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \ 00285 action \ 00286 return; \ 00287 } 00288 00289 #define CC2XML(x) reinterpret_cast <xmlChar const *> (x) 00290 #define C2XML(x) reinterpret_cast <xmlChar *> (x) 00291 #define XML2CC(x) reinterpret_cast <char const *> (x) 00292 #define XML2C(x) reinterpret_cast <char *> (x) 00293 00294 #endif // GCU_MACROS_H