[anjuta/sdb-queries: 3/22] symbol-db: Initial symbol query class
- From: Naba Kumar <naba src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta/sdb-queries: 3/22] symbol-db: Initial symbol query class
- Date: Wed, 2 Jun 2010 21:25:49 +0000 (UTC)
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]