00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef TYPES_H
00021 #define TYPES_H
00022
00041 #include "midgard/midgard_legacy.h"
00042 #include <glib-object.h>
00043 #include <midgard/query_builder.h>
00044
00045 #define MIDGARD_TYPE_OBJECT midgard_object_get_type()
00046 #define MIDGARD_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MIDGARD_TYPE_OBJECT, MgdObject))
00047 #define MIDGARD_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MIDGARD_TYPE_OBJECT, MidgardObjectClass))
00048 #define MIDGARD_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MIDGARD_TYPE_OBJECT))
00049 #define MIDGARD_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDGARD_TYPE_OBJECT))
00050 #define MIDGARD_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDGARD_TYPE_OBJECT, MidgardObjectClass))
00051 #define MIDGARD_OBJECT_GET_CLASS_BY_NAME(name) ((MidgardObjectClass*) g_type_class_peek(g_type_from_name(name)))
00052
00053 typedef struct _MgdObject MgdObject;
00054 typedef struct _MidgardObjectClass MidgardObjectClass;
00055
00056 typedef struct _MidgardTypePrivate MidgardTypePrivate;
00057
00058 typedef struct MidgardMetadata MidgardMetadata;
00059 typedef struct MidgardMetadataClass MidgardMetadataClass;
00060
00061
00062
00063 #define _MIDGARD_OBJECT_GET_BY_TYPE(klassname) \
00064 if ((object = midgard_object_new(mgd, klassname, NULL)) != NULL ) { \
00065 g_object_set((GObject*) object, "id" , (guint)id, NULL ); \
00066 if ((midgard_object_get_by_id(object)) == 0); \
00067 return object; \
00068 return NULL; \
00069 } else { \
00070 return NULL; \
00071 } \
00072
00073 struct _MgdObject {
00074 GObject parent;
00075
00076
00077 MidgardTypePrivate *private;
00078 MgdSchemaTypeAttr *data;
00079
00080 midgard *mgd;
00081 GType type;
00082 const gchar *cname;
00083 gpointer *klass;
00084 MidgardMetadata *metadata;
00085 };
00086
00087 struct _MidgardObjectClass {
00088 GObjectClass parent;
00089
00090
00091 MgdSchemaTypeAttr *data;
00092 };
00093
00094 extern void midgard_get_midgard(MgdObject *mobj, midgard *mgd);
00095
00102 extern GType midgard_object_get_type(void);
00103
00126 extern enum
00127 {
00128 MGD_OBJECT_ACTION_NONE = 0,
00129 MGD_OBJECT_ACTION_DELETE,
00130 MGD_OBJECT_ACTION_PURGE,
00131 MGD_OBJECT_ACTION_CREATE,
00132 MGD_OBJECT_ACTION_UPDATE
00133 }MidgardObjectAction;
00134
00168 extern MgdObject *midgard_object_new(midgard *mgd, const gchar *name, GValue *value);
00169
00196 extern MgdObject *midgard_object_new_by_id(midgard *mgd, const gchar *name, gchar *id);
00197
00221 extern gboolean midgard_object_get_by_id(MgdObject *object);
00222
00272 extern gboolean midgard_object_update(MgdObject *object);
00273
00321 extern gboolean midgard_object_create(MgdObject *object);
00322
00339 extern GObject **midgard_object_find(MgdObject *object, guint *n_objects);
00340
00341 extern gchar * midgard_object_build_path(MgdObject *mobj);
00342
00361 extern gboolean midgard_object_is_in_parent_tree(MgdObject *object, guint rootid, guint id);
00362
00380 extern gboolean midgard_object_is_in_tree(MgdObject *object, guint rootid, guint id);
00381
00382 extern gchar * midgard_object_get_tree(MgdObject *object, GSList *tnodes);
00383
00384 extern MgdObject *midgard_object_get_by_old_guid(midgard *mgd, gchar *guid);
00385
00404 extern gboolean midgard_object_get_by_guid(MgdObject *object);
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429 extern gboolean midgard_object_delete(MgdObject *object);
00430
00453 extern gboolean midgard_object_purge(MgdObject *object);
00454
00470 extern MgdObject *midgard_object_get_parent(MgdObject *object);
00471
00472 extern gint midgard_object_get(MgdObject *object);
00473
00486 extern GObject **midgard_object_list(MgdObject *object, guint *n_objects);
00487
00501 extern GObject **midgard_object_list_children(MgdObject *object, const gchar *childname,
00502 guint *n_objects);
00514 extern GObject **midgard_object_get_languages(
00515 MgdObject *self, guint *n_objects);
00516
00517
00541 extern MgdObject *midgard_get_object_by_guid(
00542 MidgardConnection *mgd, const gchar *guid);
00543
00549 extern MgdObject *midgard_object_get_by_path(midgard *mgd, const gchar *classname , const gchar *path);
00550
00556 extern const gchar *midgard_object_parent(MgdObject *object);
00557
00576 extern gboolean midgard_object_undelete(MidgardConnection *mgd,
00577 const gchar *guid);
00578
00596 extern gchar *midgard_object_export(MgdObject *self);
00597
00598
00620 extern gboolean midgard_import_object(
00621 MidgardConnection *mgd, gchar *xml);
00622
00623 #endif