midgard/midgard_object_property.h

00001 /* 
00002  * Copyright (C) 2006 Piotr Pokora <piotr.pokora@infoglob.pl>
00003  *
00004  * This program is free software; you can redistribute it and/or modify it
00005  * under the terms of the GNU Lesser General Public License as published
00006  * by the Free Software Foundation; either version 2 of the License, or
00007  * (at your option) any later version.
00008  * 
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  * 
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017  */
00018 
00019 #ifndef MIDGARD_OBJECT_PROPERTY_H
00020 #define MIDGARD_OBJECT_PROPERTY_H
00021 
00022 #include "midgard/midgard_type.h"
00023 #include "midgard/types.h"
00024 
00025 /* MidgardObjectProperty , reflection */
00026 
00027 /* convention macros */
00028 #define MIDGARD_TYPE_OBJECT_PROPERTY (midgard_object_property_get_type())
00029 #define MIDGARD_OBJECT_PROPERTY(object)  \
00030         (G_TYPE_CHECK_INSTANCE_CAST ((object),MIDGARD_TYPE_OBJECT_PROPERTY, midgard))
00031 #define MIDGARD_OBJECT_PROPERTY_CLASS(klass)  \
00032         (G_TYPE_CHECK_CLASS_CAST ((klass), MIDGARD_TYPE_OBJECT_PROPERTY, MidgardObjectPropertyClass))
00033 #define MIDGARD_IS_OBJECT_PROPERTY(object)   \
00034         (G_TYPE_CHECK_INSTANCE_TYPE ((object), MIDGARD_TYPE_OBJECT_PROPERTY))
00035 #define MIDGARD_IS_OBJECT_PROPERTY_CLASS(klass) \
00036         (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDGARD_TYPE_OBJECT_PROPERTY))
00037 #define MIDGARD_OBJECT_PROPERTY_GET_CLASS(obj) \
00038         (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDGARD_TYPE_OBJECT_PROPERTY, MidgardObjectPropertyClass))
00039 
00040 typedef struct _MidgardObjectProperty MidgardObjectProperty;
00041 typedef struct _MidgardObjectPropertyClass MidgardObjectPropertyClass;
00042 
00050 struct _MidgardObjectPropertyClass{
00051         GObjectClass parent;
00052 
00053         /* public class members */
00054         gboolean (*is_multilang) (const gchar *classname, const gchar *property);
00055         gboolean (*is_link) (const gchar *classname, const gchar *property);
00056 };
00057 
00065 struct _MidgardObjectProperty{
00066         GObject parent;
00067 };
00068 
00076 extern GType 
00077 midgard_object_property_get_type(void);
00078 
00095 extern GType 
00096 midgard_object_property_get_midgard_type(const gchar *classname, const gchar *name);
00097 
00113 extern gboolean 
00114 midgard_object_property_is_link(const gchar *classname, const gchar *name);
00115 
00131 extern gboolean
00132 midgard_object_property_is_linked(const gchar *classname, const gchar *name);
00133 
00150 extern MidgardObjectClass 
00151 *midgard_object_property_get_link_class(MidgardObjectClass *klass, const gchar *name);
00152 
00167 extern const gchar
00168 *midgard_object_property_get_link_name(const gchar *classname, const gchar *name);
00169 
00188 extern const gchar 
00189 *midgard_object_property_description(const gchar *classname, const gchar *name);
00190 
00207 extern gboolean
00208 midgard_object_property_is_multilang(const gchar *classname, const gchar *name); 
00209 
00210 #endif /* MIDGARD_OBJECT_PROPERTY_H */

Generated on Thu Feb 22 06:15:14 2007 for midgard-core by  doxygen 1.4.6