macros.h

00001 // -*- C++ -*-
00002 
00003 /* 
00004  * Gnome Chemisty Utils
00005  * macros.h 
00006  *
00007  * Copyright (C) 2001-2006 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 #define GCU_PROP(type,member) \
00029 public: \
00030         void Set##member (type val) {m_##member = val;} \
00031         type Get##member (void) {return m_##member;}    \
00032 private:        \
00033         type m_##member;
00034 
00035 #define GCU_RO_PROP(type,member) \
00036 public: \
00037         type Get##member (void) {return m_##member;}    \
00038 private:        \
00039         type m_##member;
00040 
00041 #define GCU_PROT_PROP(type,member) \
00042 public: \
00043         type Get##member (void) {return m_##member;}    \
00044 protected:      \
00045         type m_##member;
00046 
00047 #define GCU_GCONF_GET(key,type,target,defaultval) \
00048         type target = gconf_client_get_##type (m_ConfClient, key, &error); \
00049         if (error) {    \
00050                 target = defaultval;    \
00051                 g_message ("GConf failed: %s", error->message); \
00052                 g_error_free (error);   \
00053                 error = NULL;   \
00054         }       \
00055         if (target == (type) 0) \
00056                 target = defaultval;
00057 
00058 #define GCU_GCONF_GET_NO_CHECK(key,type,target,defaultval) \
00059         target = gconf_client_get_##type (m_ConfClient, key, &error); \
00060         if (error) {    \
00061                 target = defaultval;    \
00062                 g_message ("GConf failed: %s", error->message); \
00063                 g_error_free (error);   \
00064                 error = NULL;   \
00065         }
00066 
00067 #define GCU_GCONF_GET_N_TRANSFORM(key,type,target,defaultval,func) \
00068         {       \
00069                 type val = gconf_client_get_##type (m_ConfClient, key, &error); \
00070                 if (error) {    \
00071                         val = defaultval;       \
00072                         g_message ("GConf failed: %s", error->message); \
00073                         g_error_free (error);   \
00074                         error = NULL;   \
00075                 }       \
00076                 if (val == (type) 0)    \
00077                         val = defaultval; \
00078                 target = func (val);    \
00079         }
00080 
00081 #define GCU_GCONF_GET_STRING(key,target,defaultval) \
00082         if (target) {   \
00083                 g_free (target);        \
00084                 target = NULL;  \
00085         }       \
00086         target = gconf_client_get_string (m_ConfClient, key, &error); \
00087         if (error) {    \
00088                 if (defaultval) \
00089                         target = g_strdup (defaultval); \
00090                 g_message ("GConf failed: %s", error->message); \
00091                 g_error_free (error);   \
00092                 error = NULL;   \
00093         }
00094 
00095 #endif  //      GCU_MACROS_H

Generated on Tue Aug 15 10:47:35 2006 for The Gnome Chemistry Utils by  doxygen 1.4.7