The Gnome Chemistry Utils  0.13.6
macros.h
Go to the documentation of this file.
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