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-2008 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 #ifdef HAVE_GO_CONF_SYNC
00029 #       include <goffice/app/go-conf.h>
00030 #else
00031 #       include <gconf/gconf-client.h>
00032 #endif
00033 
00054 #define GCU_PROP(type,member) \
00055 public: \
00056         void Set##member (type val) {m_##member = val;} \
00057         type Get##member (void) const {return m_##member;}      \
00058         type &GetRef##member (void) {return m_##member;}        \
00059 private:        \
00060         type m_##member;
00061 
00062 #define GCU_POINTER_PROP(type,member) \
00063 public: \
00064         void Set##member (type *val) {m_##member = val;}        \
00065         type *Get##member (void) {return m_##member;}   \
00066         type const *Get##member (void) const {return m_##member;}       \
00067 private:        \
00068         type *m_##member;
00069 
00083 #define GCU_RO_PROP(type,member) \
00084 public: \
00085         type Get##member (void) {return m_##member;}    \
00086 private:        \
00087         type m_##member;
00088 
00089 #define GCU_RO_POINTER_PROP(type,member) \
00090 public: \
00091         type const *Get##member (void) const {return m_##member;}       \
00092 private:        \
00093         type *m_##member;
00094 
00108 #define GCU_PROT_PROP(type,member) \
00109 public: \
00110         type Get##member (void) {return m_##member;}    \
00111 protected:      \
00112         type m_##member;
00113 
00114 #define GCU_PROT_POINTER_PROP(type,member) \
00115 public: \
00116         type *Get##member (void) {return m_##member;}   \
00117         type const *Get##member (void) const {return m_##member;}       \
00118 protected:      \
00119         type *m_##member;
00120 
00128 #ifdef HAVE_GO_CONF_SYNC
00129 #define go_conf_get_float go_conf_get_double
00130 #define GCU_GCONF_GET(key,type,target,defaultval) \
00131         target = go_conf_get_##type (m_ConfNode, key); \
00132         if (target == (type) 0) \
00133                 target = defaultval;
00134 #else
00135 #define GCU_GCONF_GET(key,type,target,defaultval) \
00136         target = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00137         if (error) {    \
00138                 target = defaultval;    \
00139                 g_message ("GConf failed: %s", error->message); \
00140                 g_error_free (error);   \
00141                 error = NULL;   \
00142         }       \
00143         if (target == (type) 0) \
00144                 target = defaultval;
00145 #endif
00146 
00152 #ifdef HAVE_GO_CONF_SYNC
00153 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
00154         target = go_conf_get_##type (m_ConfNode, key);
00155 #else
00156 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
00157         target = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00158         if (error) {    \
00159                 target = defaultval;    \
00160                 g_message ("GConf failed: %s", error->message); \
00161                 g_error_free (error);   \
00162                 error = NULL;   \
00163         }
00164 #endif
00165 
00174 #ifdef HAVE_GO_CONF_SYNC
00175 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
00176         {       \
00177                 type val = go_conf_get_##type (m_ConfNode, key); \
00178                 if (val == (type) 0)    \
00179                         val = defaultval; \
00180                 target = func (val);    \
00181         }
00182 #else
00183 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
00184         {       \
00185                 type val = gconf_client_get_##type (m_ConfClient, ROOTDIR key, &error); \
00186                 if (error) {    \
00187                         val = defaultval;       \
00188                         g_message ("GConf failed: %s", error->message); \
00189                         g_error_free (error);   \
00190                         error = NULL;   \
00191                 }       \
00192                 if (val == (type) 0)    \
00193                         val = defaultval; \
00194                 target = func (val);    \
00195         }
00196 #endif
00197 
00206 #ifdef HAVE_GO_CONF_SYNC
00207 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
00208         if (target) {   \
00209                 g_free (target);        \
00210                 target = NULL;  \
00211         }       \
00212         target = go_conf_get_string (m_ConfNode, key); \
00213         if (target == NULL && defaultval)       \
00214                 target = g_strdup (defaultval);
00215 #else
00216 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
00217         if (target) {   \
00218                 g_free (target);        \
00219                 target = NULL;  \
00220         }       \
00221         target = gconf_client_get_string (m_ConfClient, ROOTDIR key, &error); \
00222         if (error) {    \
00223                 if (defaultval) \
00224                         target = g_strdup (defaultval); \
00225                 g_message ("GConf failed: %s", error->message); \
00226                 g_error_free (error);   \
00227                 error = NULL;   \
00228         } else if (target == NULL && defaultval)        \
00229                         target = g_strdup (defaultval);
00230 #endif
00231 
00232 #ifdef HAVE_GO_CONF_SYNC
00233 #define GCU_UPDATE_KEY(key,type,target,action) \
00234         if (!strcmp (name, ROOTDIR key)) { \
00235                 target = go_conf_get_##type (node, ((node)? key: ROOTDIR key)); \
00236                 action \
00237                 return; \
00238         }
00239 #else
00240 #define GCU_UPDATE_KEY(key,type,target,action) \
00241         if (!strcmp (gconf_entry_get_key (entry), ROOTDIR key)) { \
00242                 target = gconf_value_get_##type (gconf_entry_get_value (entry)); \
00243                 action \
00244                 return; \
00245         }
00246 #endif
00247 
00248 #ifdef HAVE_GO_CONF_SYNC
00249 #define GCU_UPDATE_STRING_KEY(key,target,action) \
00250         if (!strcmp (name, ROOTDIR key)) { \
00251                 target = go_conf_get_string (node, ((node)? key: ROOTDIR key)); \
00252                 action \
00253                 return; \
00254         }
00255 #else
00256 #define GCU_UPDATE_STRING_KEY(key,target,action) \
00257         if (!strcmp (gconf_entry_get_key (entry), ROOTDIR key)) { \
00258                 target = g_strdup (gconf_value_get_string (gconf_entry_get_value (entry))); \
00259                 action \
00260                 return; \
00261         }
00262 #endif
00263 
00264 #endif  //      GCU_MACROS_H

Generated on Sun Jun 22 13:26:05 2008 for The Gnome Chemistry Utils by  doxygen 1.5.6