midgard/midgard_reflection_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_REFLECTION_PROPERTY_H
00020 #define MIDGARD_REFLECTION_PROPERTY_H
00021 
00032 #include "midgard/midgard_type.h"
00033 #include "midgard/types.h"
00034 
00035 /* convention macros */
00036 #define MIDGARD_TYPE_REFLECTION_PROPERTY (midgard_reflection_property_get_type())
00037 #define MIDGARD_REFLECTION_PROPERTY(object)  \
00038         (G_TYPE_CHECK_INSTANCE_CAST ((object),MIDGARD_TYPE_REFLECTION_PROPERTY, midgard))
00039 #define MIDGARD_REFLECTION_PROPERTY_CLASS(klass)  \
00040         (G_TYPE_CHECK_CLASS_CAST ((klass), MIDGARD_TYPE_REFLECTION_PROPERTY, MidgardReflectionPropertyClass))
00041 #define MIDGARD_IS_REFLECTION_PROPERTY(object)   \
00042         (G_TYPE_CHECK_INSTANCE_TYPE ((object), MIDGARD_TYPE_REFLECTION_PROPERTY))
00043 #define MIDGARD_IS_REFLECTION_PROPERTY_CLASS(klass) \
00044         (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDGARD_REFLECTION_OBJECT_PROPERTY))
00045 #define MIDGARD_REFLECTION_PROPERTY_GET_CLASS(obj) \
00046         (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDGARD_TYPE_REFLECTION_PROPERTY, MidgardReflectionPropertyClass))
00047 
00048 typedef struct _MidgardReflectionProperty MidgardReflectionProperty;
00049 typedef struct _MidgardReflectionPropertyClass MidgardReflectionPropertyClass;
00050 
00058 struct _MidgardReflectionPropertyClass{
00059         GObjectClass parent;
00060 
00061         /* public class members */
00062         gboolean (*is_multilang) (MidgardReflectionProperty *object, const gchar *property);
00063         gboolean (*is_link) (MidgardReflectionProperty *object, const gchar *property);
00064 };
00065 
00073 extern GType midgard_reflection_property_get_type(void);
00074 
00082 extern MidgardReflectionProperty *midgard_reflection_property_new(
00083                 MidgardObjectClass *klass);
00084 
00101 extern GType 
00102 midgard_reflection_property_get_midgard_type(
00103                 MidgardReflectionProperty *object, const gchar *name);
00104 
00119 extern gboolean 
00120 midgard_reflection_property_is_link(
00121                 MidgardReflectionProperty *object, const gchar *name);
00122 
00138 extern gboolean
00139 midgard_reflection_property_is_linked(
00140                 MidgardReflectionProperty *object, const gchar *name);
00141 
00157 extern MidgardObjectClass 
00158 *midgard_reflection_property_get_link_class(
00159                 MidgardReflectionProperty *object, const gchar *name);
00160 
00175 extern const gchar
00176 *midgard_reflection_property_get_link_name(
00177                 MidgardReflectionProperty *object, const gchar *name);
00178 
00194 extern const gchar 
00195 *midgard_reflection_property_get_link_target(
00196                 MidgardReflectionProperty *object, const gchar *name);
00197 
00216 extern const gchar 
00217 *midgard_reflection_property_description(
00218                 MidgardReflectionProperty *object, const gchar *name);
00219 
00236 extern gboolean
00237 midgard_reflection_property_is_multilang(
00238                 MidgardReflectionProperty *object, const gchar *name); 
00239 
00240 #endif /* MIDGARD_REFLECTION_PROPERTY_H */

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