[anjuta/sdb-queries: 3/22] symbol-db: Initial symbol query class



commit df23f580f36b0bb35a42a96269d9e8fc5082bb1a
Author: Naba Kumar <naba gnome org>
Date:   Thu May 13 22:43:14 2010 +0300

    symbol-db: Initial symbol query class

 libanjuta/interfaces/libanjuta.idl  |   22 +++++++
 plugins/symbol-db/Makefile.am       |    4 +-
 plugins/symbol-db/symbol-db-query.c |  110 ++++++++++++++++++++---------------
 plugins/symbol-db/symbol-db-query.h |   15 +++--
 4 files changed, 98 insertions(+), 53 deletions(-)
---
diff --git a/libanjuta/interfaces/libanjuta.idl b/libanjuta/interfaces/libanjuta.idl
index f608c3e..e5a3cd8 100644
--- a/libanjuta/interfaces/libanjuta.idl
+++ b/libanjuta/interfaces/libanjuta.idl
@@ -5404,6 +5404,28 @@ interface IAnjutaSymbol
 	const GdkPixbuf *get_icon ();	
 }
 
+interface IAnjutaSymbolQuery {
+
+	enum IAnjutaSymbolQueryKind {
+		SEARCH,
+		SEARCH_SYSTEM,
+		SEARCH_PROJECT,
+		SEARCH_FILE
+	};
+
+	/**
+    * IAnjutaSymbolQueryAsyncResult:
+    * @result: #IAnjutaIterable iterator object that contains the database query result.
+    * @user_data: User data
+    *
+    * Callback called for an async query to the database.
+	*/
+	typedef void (*AsyncResult) (IAnjutaIterable* result, gpointer user_data);
+	void set_async (gboolean asyn_mode);
+	void set_offset (gint offset);
+	void set_limit (gint limit);
+}
+
 /**
  * SECTION:ianjuta-symbol-manager
  * @title: IAnjutaSymbolManager
diff --git a/plugins/symbol-db/Makefile.am b/plugins/symbol-db/Makefile.am
index 6c2abb8..140f5b8 100644
--- a/plugins/symbol-db/Makefile.am
+++ b/plugins/symbol-db/Makefile.am
@@ -88,7 +88,9 @@ libanjuta_symbol_db_la_SOURCES = \
 	symbol-db-views.h \
 	libgda-extra/gda-data-model-concat.c \
 	libgda-extra/gda-data-model-concat.h \
-	$(BUILT_SOURCES)
+	$(BUILT_SOURCES) \
+	symbol-db-query.h \
+	symbol-db-query.c
 
 libanjuta_symbol_db_la_LDFLAGS = $(ANJUTA_PLUGIN_LDFLAGS)
 
diff --git a/plugins/symbol-db/symbol-db-query.c b/plugins/symbol-db/symbol-db-query.c
index 76d8010..3084fbb 100644
--- a/plugins/symbol-db/symbol-db-query.c
+++ b/plugins/symbol-db/symbol-db-query.c
@@ -17,54 +17,63 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <limits.h>
+#include <libgda/gda-statement.h>
 #include "symbol-db-query.h"
+#include "symbol-db-engine.h"
+
+#define SYMBOL_DB_QUERY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
+	SYMBOL_DB_TYPE_QUERY, SymbolDBQueryPriv))
 
 enum
 {
 	PROP_0,
-
-	PROP_SQL_STATEMENT,
-	PROP_SQL_LIMIT,
-	PROP_SQL_OFFSET,
+	PROP_QUERY_KIND,
+	PROP_STATEMENT,
+	PROP_LIMIT,
+	PROP_OFFSET,
 	PROP_DB_ENGINE
 };
 
-
+struct _SymbolDBQueryPriv {
+	GdaStatement *stmt;
+	gint limit;
+	gint offset;
+	SymbolDBEngine *dbe;
+};
 
 G_DEFINE_TYPE (SymbolDBQuery, sdb_query, G_TYPE_OBJECT);
 
 static void
 sdb_query_init (SymbolDBQuery *object)
 {
-	/* TODO: Add initialization code here */
+	object->priv = SYMBOL_DB_QUERY_GET_PRIVATE(object);
 }
 
 static void
 sdb_query_finalize (GObject *object)
 {
-	/* TODO: Add deinitalization code here */
-
 	G_OBJECT_CLASS (sdb_query_parent_class)->finalize (object);
 }
 
 static void
 sdb_query_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
-	g_return_if_fail (SYMBOL_IS_DB_QUERY (object));
+	SymbolDBQueryPriv *priv;
 
+	g_return_if_fail (SYMBOL_DB_IS_QUERY (object));
+	priv = SYMBOL_DB_QUERY (object)->priv;
+	
 	switch (prop_id)
 	{
-	case PROP_SQL_STATEMENT:
-		/* TODO: Add setter for "sql-statement" property here */
+	case PROP_LIMIT:
+		priv->limit = g_value_get_int (value);
 		break;
-	case PROP_SQL_LIMIT:
-		/* TODO: Add setter for "sql-limit" property here */
-		break;
-	case PROP_SQL_OFFSET:
-		/* TODO: Add setter for "sql-offset" property here */
+	case PROP_OFFSET:
+		priv->offset = g_value_get_int (value);
 		break;
 	case PROP_DB_ENGINE:
-		/* TODO: Add setter for "db-engine" property here */
+		priv->dbe = g_value_get_object (value);
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -75,21 +84,24 @@ sdb_query_set_property (GObject *object, guint prop_id, const GValue *value, GPa
 static void
 sdb_query_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
 {
-	g_return_if_fail (SYMBOL_IS_DB_QUERY (object));
+	SymbolDBQueryPriv *priv;
 
+	g_return_if_fail (SYMBOL_DB_IS_QUERY (object));
+	priv = SYMBOL_DB_QUERY (object)->priv;
+	
 	switch (prop_id)
 	{
-	case PROP_SQL_STATEMENT:
-		/* TODO: Add getter for "sql-statement" property here */
+	case PROP_STATEMENT:
+		g_value_set_object (value, priv->stmt);
 		break;
-	case PROP_SQL_LIMIT:
-		/* TODO: Add getter for "sql-limit" property here */
+	case PROP_LIMIT:
+		g_value_set_int (value, priv->limit);
 		break;
-	case PROP_SQL_OFFSET:
-		/* TODO: Add getter for "sql-offset" property here */
+	case PROP_OFFSET:
+		g_value_set_int (value, priv->offset);
 		break;
 	case PROP_DB_ENGINE:
-		/* TODO: Add getter for "db-engine" property here */
+		g_value_set_object (value, priv->dbe);
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -101,46 +113,52 @@ static void
 sdb_query_class_init (SymbolDBQueryClass *klass)
 {
 	GObjectClass* object_class = G_OBJECT_CLASS (klass);
-	GObjectClass* parent_class = G_OBJECT_CLASS (klass);
+	g_type_class_add_private (klass, sizeof (SymbolDBQueryPriv));
 
 	object_class->finalize = sdb_query_finalize;
 	object_class->set_property = sdb_query_set_property;
 	object_class->get_property = sdb_query_get_property;
 
 	g_object_class_install_property (object_class,
-	                                 PROP_SQL_STATEMENT,
-	                                 g_param_spec_object ("sql-statement",
+	                                 PROP_QUERY_KIND,
+	                                 g_param_spec_enum ("query-kind",
+	                                                    "Query kind",
+	                                                    "The query kind",
+	                                                    SymbolDBQueryType,
+	                                                    G_PARAM_READABLE | G_PARAM_CONSTRUCT));
+	g_object_class_install_property (object_class,
+	                                 PROP_STATEMENT,
+	                                 g_param_spec_object ("statement",
 	                                                      "Sql Statement",
-	                                                      "The compiled sql statement",
-	                                                      GdaStatement,
+	                                                      "The compiled query statement",
+	                                                      GDA_TYPE_STATEMENT,
 	                                                      G_PARAM_READABLE));
 
 	g_object_class_install_property (object_class,
-	                                 PROP_SQL_LIMIT,
-	                                 g_param_spec_object ("sql-limit",
-	                                                      "Sql Limit",
-	                                                      "Limit to resultset",
-	                                                      gint,
-	                                                      G_PARAM_READABLE | G_PARAM_WRITABLE));
-
+	                                 PROP_LIMIT,
+	                                 g_param_spec_int ("limit",
+	                                                   "Query Limit",
+	                                                   "Limit to resultset",
+	                                                   0, INT_MAX, INT_MAX,
+	                                                   G_PARAM_READABLE | G_PARAM_WRITABLE));
+	
 	g_object_class_install_property (object_class,
-	                                 PROP_SQL_OFFSET,
-	                                 g_param_spec_object ("sql-offset",
-	                                                      "Sql offset",
-	                                                      "Offset of begining of resultset",
-	                                                      gint,
-	                                                      G_PARAM_READABLE | G_PARAM_WRITABLE));
-
+	                                 PROP_OFFSET,
+	                                 g_param_spec_int ("offset",
+	                                                   "Query offset",
+	                                                   "Offset of begining of resultset",
+	                                                   0, INT_MAX, 0,
+	                                                   G_PARAM_READABLE | G_PARAM_WRITABLE));
+	
 	g_object_class_install_property (object_class,
 	                                 PROP_DB_ENGINE,
 	                                 g_param_spec_object ("db-engine",
 	                                                      "DB Engine",
 	                                                      "The SymbolDBEngine",
-	                                                      SymbolDBEngine*,
+	                                                      SYMBOL_TYPE_DB_ENGINE,
 	                                                      G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
 }
 
-
 IAnjutaIterable*
 sdb_query_search (gchar *search_string)
 {
diff --git a/plugins/symbol-db/symbol-db-query.h b/plugins/symbol-db/symbol-db-query.h
index b76fdcc..1b51c02 100644
--- a/plugins/symbol-db/symbol-db-query.h
+++ b/plugins/symbol-db/symbol-db-query.h
@@ -21,18 +21,20 @@
 #define _SYMBOL_DB_QUERY_H_
 
 #include <glib-object.h>
+#include <libanjuta/interfaces/ianjuta-iterable.h>
 
 G_BEGIN_DECLS
 
-#define SYMBOL_TYPE_DB_QUERY             (sdb_query_get_type ())
-#define SYMBOL_DB_QUERY(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), SYMBOL_TYPE_DB_QUERY, SymbolDBQuery))
-#define SYMBOL_DB_QUERY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), SYMBOL_TYPE_DB_QUERY, SymbolDBQueryClass))
-#define SYMBOL_IS_DB_QUERY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SYMBOL_TYPE_DB_QUERY))
-#define SYMBOL_IS_DB_QUERY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), SYMBOL_TYPE_DB_QUERY))
-#define SYMBOL_DB_QUERY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), SYMBOL_TYPE_DB_QUERY, SymbolDBQueryClass))
+#define SYMBOL_DB_TYPE_QUERY             (sdb_query_get_type ())
+#define SYMBOL_DB_QUERY(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), SYMBOL_DB_TYPE_QUERY, SymbolDBQuery))
+#define SYMBOL_DB_QUERY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), SYMBOL_DB_TYPE_QUERY, SymbolDBQueryClass))
+#define SYMBOL_DB_IS_QUERY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SYMBOL_DB_TYPE_QUERY))
+#define SYMBOL_DB_IS_QUERY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), SYMBOL_DB_TYPE_QUERY))
+#define SYMBOL_DB_QUERY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), SYMBOL_DB_TYPE_QUERY, SymbolDBQueryClass))
 
 typedef struct _SymbolDBQueryClass SymbolDBQueryClass;
 typedef struct _SymbolDBQuery SymbolDBQuery;
+typedef struct _SymbolDBQueryPriv SymbolDBQueryPriv;
 
 struct _SymbolDBQueryClass
 {
@@ -42,6 +44,7 @@ struct _SymbolDBQueryClass
 struct _SymbolDBQuery
 {
 	GObject parent_instance;
+	SymbolDBQueryPriv *priv;
 };
 
 GType sdb_query_get_type (void) G_GNUC_CONST;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]