midgard/midgard_collector.h

00001 /* 
00002  * Copyright (C) 2006 Piotr Pokora <piotrek.pokora@gmail.com>
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_COLLECTOR_H
00020 #define MIDGARD_COLLECTOR_H
00021 
00039 #include "midgard/midgard_connection.h"
00040 #include <midgard/query_builder.h>
00041 
00042 /* convention macros */
00043 #define MIDGARD_TYPE_COLLECTOR (midgard_collector_get_type())
00044 #define MIDGARD_COLLECTOR(object)  \
00045         (G_TYPE_CHECK_INSTANCE_CAST ((object),MIDGARD_TYPE_COLLECTOR, MidgardCollector))
00046 #define MIDGARD_COLLECTOR_CLASS(klass)  \
00047         (G_TYPE_CHECK_CLASS_CAST ((klass), MIDGARD_TYPE_COLLECTOR, MidgardCollectorClass))
00048 #define MIDGARD_IS_COLLECTOR(object)   \
00049         (G_TYPE_CHECK_INSTANCE_TYPE ((object), MIDGARD_TYPE_COLLECTOR))
00050 #define MIDGARD_IS_COLLECTOR_CLASS(klass) \
00051         (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDGARD_TYPE_COLLECTOR))
00052 #define MIDGARD_COLLECTOR_GET_CLASS(obj) \
00053         (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDGARD_TYPE_COLLECTOR, MidgardCollectorClass))
00054 
00055 typedef struct _MidgardCollectorPrivate MidgardCollectorPrivate;
00056 
00061 typedef struct MidgardCollector MidgardCollector;
00062 
00063 struct MidgardCollector{
00064         MidgardQueryBuilder parent;
00065         
00066         /* < private > */
00067         MidgardCollectorPrivate *private;
00068 };
00069 
00074 typedef struct MidgardCollectorClass MidgardCollectorClass;
00075 
00076 struct MidgardCollectorClass{
00077         MidgardQueryBuilderClass parent;
00078         
00079         /* class members */
00080         gboolean (*set_key_property) (
00081                 MidgardCollector *collector, const gchar *key, GValue *value);
00082 
00083         gboolean (*add_value_property) (
00084                 MidgardCollector *collector, const gchar *value);
00085 
00086         gboolean (*set) (
00087                 MidgardCollector *collector, const gchar *key, 
00088                 const gchar *subkey, GValue *value);
00089 
00090         GHashTable *(*get) (
00091                 MidgardCollector *collector, const gchar *key);
00092 
00093         GValue *(*get_subkey) (
00094                 MidgardCollector *collector, const gchar *key, const gchar *subkey);
00095 
00096         gboolean (*merge) (
00097                 MidgardCollector *collector, MidgardCollector *mc, gboolean overwrite);
00098 
00099         const gchar **(*list_keys)(
00100                 MidgardCollector *collector);
00101         
00102         gboolean (*remove_key) (
00103                 MidgardCollector *collector, const gchar *key);
00104 
00105         void (*destroy) (
00106                 MidgardCollector *collector);
00107 
00108         gboolean (*add_constraint) (
00109                 MidgardCollector *self, const gchar *name,
00110                 const gchar *op, const GValue *value);
00111 
00112         gboolean (*begin_group) (
00113                 MidgardCollector *self, const gchar *type);
00114         
00115         gboolean (*end_group) (
00116                 MidgardCollector *self);
00117 
00118         gboolean (*add_order) (
00119                 MidgardCollector *self, 
00120                 const gchar *name, const gchar *dir);
00121 
00122         void (*set_offset) (
00123                 MidgardCollector *self, guint offset);
00124 
00125         void (*set_limit) (
00126                 MidgardCollector *self, guint limit);
00127 
00128         void (*unset_languages) (
00129                 MidgardCollector *self);
00130 
00131         void (*count) (
00132                 MidgardCollector *self);
00133 
00134         gboolean (*execute) (
00135                 MidgardCollector *self);
00136 };
00137 
00144 extern GType midgard_collector_get_type(void);
00145 
00170 extern MidgardCollector *midgard_collector_new(
00171         MidgardConnection *mgd, const gchar *classname, const gchar *domain, GValue *value);
00172 
00200 extern gboolean midgard_collector_set_key_property(
00201         MidgardCollector *collector, const gchar *key, GValue *value); 
00202 
00223 extern gboolean midgard_collector_add_value_property(
00224         MidgardCollector *collector, const gchar *value);
00225 
00256 extern gboolean midgard_collector_set(
00257         MidgardCollector *collector, const gchar *key, const gchar *subkey, GValue *value);
00258 
00274 extern GHashTable *midgard_collector_get(
00275         MidgardCollector *collector, const gchar *key);
00276 
00288 extern GValue *midgard_collector_get_subkey(
00289         MidgardCollector *collector, const gchar *key, const gchar *subkey);
00290 
00305 extern const gchar **midgard_collector_list_keys(
00306         MidgardCollector *self);
00307 
00308 
00330 extern gboolean midgard_collector_merge(
00331         MidgardCollector *self, MidgardCollector *mc, gboolean overwrite);
00332 
00345 extern gboolean midgard_collector_remove_key(
00346         MidgardCollector *collector, const gchar *key);
00347 
00359 extern void midgard_collector_destroy(
00360         MidgardCollector *collector);
00368 extern gboolean midgard_collector_add_constraint(
00369         MidgardCollector *self, const gchar *name,
00370         const gchar *op, const GValue *value);
00371 
00379 extern gboolean midgard_collector_begin_group(
00380         MidgardCollector *self, const gchar *type);
00381 
00389 extern gboolean midgard_collector_end_group(
00390         MidgardCollector *self);
00391 
00399 extern gboolean midgard_collector_add_order(
00400         MidgardCollector *self,
00401         const gchar *name, const gchar *dir);
00402 
00410 extern void midgard_collector_set_offset(
00411         MidgardCollector *self, guint offset);
00412 
00420 extern void midgard_collector_set_limit(
00421         MidgardCollector *self, guint limit);
00422 
00429 extern void midgard_collector_unset_languages(
00430         MidgardCollector *self);
00431 
00437 extern void midgard_collector_count(
00438         MidgardCollector *self);
00439 
00462 extern gboolean midgard_collector_execute(
00463         MidgardCollector *self);
00464 
00465 #endif /* MIDGARD_COLLECTOR_H */

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