[libgda/LIBGDA_4.2] Backported GObject Introspection and documentation improvements and added new API to GdaSqlBuilder.



commit 3ed8d350ee92e7ae0db09a12201cea4fb0cb6238
Author: Daniel Espinosa <despinosa src gnome org>
Date:   Thu Oct 13 19:16:26 2011 -0500

    Backported GObject Introspection and documentation improvements and added new API to GdaSqlBuilder.
    
    * Added annotations to make introspectable some important GdaSqlBuilder API
    * Backported documentation to different sql-parser directory object.
    * Added function: gda_sql_builder_compound_add_sub_select_from_builder
    * Added function: gda_sql_builder_import_expression_from_builder

 libgda/Makefile.am                                |    4 +-
 libgda/gda-sql-builder.c                          |   63 +++++++++
 libgda/gda-sql-builder.h                          |    3 +
 libgda/handlers/gda-handler-time.c                |   12 +-
 libgda/sql-parser/gda-statement-struct-compound.h |   21 +++-
 libgda/sql-parser/gda-statement-struct-decl.h     |   49 +++++++
 libgda/sql-parser/gda-statement-struct-parts.h    |  139 ++++++++++++++++++++-
 7 files changed, 280 insertions(+), 11 deletions(-)
---
diff --git a/libgda/Makefile.am b/libgda/Makefile.am
index 61760c6..15819a8 100644
--- a/libgda/Makefile.am
+++ b/libgda/Makefile.am
@@ -314,7 +314,9 @@ threadwrapper = \
 sqlparser = \
 	sql-parser/gda-sql-parser.h \
 	sql-parser/gda-sql-parser.c \
-	sql-parser/gda-statement-struct-decl.h
+	sql-parser/gda-statement-struct-decl.h \
+	sql-parser/gda-statement-struct-parts.h \
+	sql-parser/gda-statement-struct-compound.h
 
 handlers = \
 	handlers/gda-handler-bin.h \
diff --git a/libgda/gda-sql-builder.c b/libgda/gda-sql-builder.c
index 3c06eb3..60069d7 100644
--- a/libgda/gda-sql-builder.c
+++ b/libgda/gda-sql-builder.c
@@ -1819,6 +1819,41 @@ gda_sql_builder_compound_add_sub_select (GdaSqlBuilder *builder, GdaSqlStatement
 }
 
 /**
+ * gda_sql_builder_compound_add_sub_select_from_builder:
+ * @builder: a #GdaSqlBuilder object
+ * @subselect: a #GdaSqlBuilder, which has to be a SELECT or compound SELECT. This will be copied.
+ *
+ * Add a sub select to a COMPOUND statement
+ *
+ * Since: 4.2
+ */
+void
+gda_sql_builder_compound_add_sub_select_from_builder (GdaSqlBuilder *builder, GdaSqlBuilder *subselect)
+{
+	GdaSqlStatementCompound *cstmt;
+	GdaSqlStatement *sqlst;
+	GdaSqlStatement *sub;
+
+	g_return_if_fail (GDA_IS_SQL_BUILDER (builder));
+	g_return_if_fail (builder->priv->main_stmt);
+	g_return_if_fail (GDA_IS_SQL_BUILDER (subselect));
+	g_return_if_fail (subselect->priv->main_stmt);
+	if (builder->priv->main_stmt->stmt_type != GDA_SQL_STATEMENT_COMPOUND) {
+		g_warning (_("Wrong statement type"));
+		return;
+	}
+	sqlst = gda_sql_builder_get_sql_statement(subselect);
+	g_return_if_fail (sqlst);
+	g_return_if_fail ((sqlst->stmt_type == GDA_SQL_STATEMENT_SELECT) ||
+			  (sqlst->stmt_type == GDA_SQL_STATEMENT_COMPOUND));
+
+	cstmt = (GdaSqlStatementCompound*) builder->priv->main_stmt->contents;
+	sub = gda_sql_statement_copy (sqlst);
+
+	cstmt->stmt_list = g_slist_append (cstmt->stmt_list, sub);
+}
+
+/**
  * gda_sql_builder_add_case: (skip)
  * @builder: a #GdaSqlBuilder object
  * @test_expr: the expression ID representing the test of the CASE, or %0
@@ -1993,3 +2028,31 @@ gda_sql_builder_import_expression (GdaSqlBuilder *builder, GdaSqlExpr *expr)
 	g_return_val_if_fail (GDA_SQL_ANY_PART (expr)->type == GDA_SQL_ANY_EXPR, 0);
 	return add_part (builder, (GdaSqlAnyPart *) gda_sql_expr_copy (expr));
 }
+
+/**
+ * gda_sql_builder_import_expression_from_builder:
+ * @builder: a #GdaSqlBuilder object
+ * @query: a #GdaSqlBuilder object to get expression from
+ * @expr_id: a #GdaSqlBuilderId of the expression in @query
+ *
+ * Imports the an expression located in @query into @builder.
+ *
+ * Returns: the ID of the new expression, or %0 if there was an error
+ *
+ * Since: 4.2
+ */
+GdaSqlBuilderId
+gda_sql_builder_import_expression_from_builder (GdaSqlBuilder *builder, GdaSqlBuilder *query, daSqlBuilderId *expr_id)
+{
+ GdaSqlExpr *expr;
+
+ g_return_val_if_fail (GDA_IS_SQL_BUILDER (builder), 0);
+ g_return_val_if_fail (builder->priv->main_stmt, 0);
+ g_return_val_if_fail (GDA_IS_SQL_BUILDER (query), 0);
+ g_return_val_if_fail (query->priv->main_stmt, 0);
+ g_return_val_if_fail (expr_id, 0);
+
+ expr = gda_sql_builder_export_expression(query, expr_id);
+ g_return_val_if_fail (GDA_SQL_ANY_PART (expr)->type == GDA_SQL_ANY_EXPR, 0);
+ return add_part (builder, (GdaSqlAnyPart *) gda_sql_expr_copy (expr));
+}
diff --git a/libgda/gda-sql-builder.h b/libgda/gda-sql-builder.h
index f82330a..7e6169c 100644
--- a/libgda/gda-sql-builder.h
+++ b/libgda/gda-sql-builder.h
@@ -126,10 +126,13 @@ void              gda_sql_builder_select_group_by (GdaSqlBuilder *builder, GdaSq
 /* COMPOUND SELECT Statement API */
 void              gda_sql_builder_compound_set_type (GdaSqlBuilder *builder, GdaSqlStatementCompoundType compound_type);
 void              gda_sql_builder_compound_add_sub_select (GdaSqlBuilder *builder, GdaSqlStatement *sqlst);
+void              gda_sql_builder_compound_add_sub_select_from_builder (GdaSqlBuilder *builder, GdaSqlBuilder *subselect);
+void              gda_sql_builder_compound_add_sub_select_from_builder (GdaSqlBuilder *builder, GdaSqlBuilder *subselect);
 
 /* import/Export API */
 GdaSqlExpr       *gda_sql_builder_export_expression (GdaSqlBuilder *builder, GdaSqlBuilderId id);
 GdaSqlBuilderId gda_sql_builder_import_expression (GdaSqlBuilder *builder, GdaSqlExpr *expr);
+GdaSqlBuilderId gda_sql_builder_import_expression_from_builder (GdaSqlBuilder *builder, GdaSqlBuilder *query, daSqlBuilderId *expr_id);
 
 G_END_DECLS
 
diff --git a/libgda/handlers/gda-handler-time.c b/libgda/handlers/gda-handler-time.c
index 5db014e..5694819 100644
--- a/libgda/handlers/gda-handler-time.c
+++ b/libgda/handlers/gda-handler-time.c
@@ -425,27 +425,27 @@ handler_compute_locale (GdaHandlerTime *hdl)
 
 /**
  * gda_handler_time_get_no_locale_str_from_value:
- * @hdl: a #GdaHandlerTime object
+ * @dh: a #GdaHandlerTime object
  * @value: a #GValue value
  *
  * Returns: a new string representing @value without taking the current
  * locale into account
  */
 gchar *
-gda_handler_time_get_no_locale_str_from_value (GdaHandlerTime *hdl, const GValue *value)
+gda_handler_time_get_no_locale_str_from_value (GdaHandlerTime *dh, const GValue *value)
 {
 	gchar *retval = NULL, *str;
 	GType type;
 
-	g_return_val_if_fail (GDA_IS_HANDLER_TIME (hdl), NULL);
-	g_return_val_if_fail (hdl->priv, NULL);
+	g_return_val_if_fail (GDA_IS_HANDLER_TIME (dh), NULL);
+	g_return_val_if_fail (dh->priv, NULL);
 	type = G_VALUE_TYPE (value);
 
 	if (type == G_TYPE_DATE) {
 		const GDate *date;
 
 		date = (GDate *) g_value_get_boxed (value);
-		str = render_date_locale (date, hdl->priv->sql_locale);
+		str = render_date_locale (date, dh->priv->sql_locale);
 		if (!str)
 			retval = g_strdup ("NULL");
 		else 
@@ -466,7 +466,7 @@ gda_handler_time_get_no_locale_str_from_value (GdaHandlerTime *hdl, const GValue
 
 		gdats = gda_value_get_timestamp ((GValue *) value);
 		vdate = g_date_new_dmy (gdats->day, gdats->month, gdats->year);
-		str = render_date_locale (vdate, hdl->priv->sql_locale);
+		str = render_date_locale (vdate, dh->priv->sql_locale);
 		g_date_free (vdate);
 
 		if (str) {
diff --git a/libgda/sql-parser/gda-statement-struct-compound.h b/libgda/sql-parser/gda-statement-struct-compound.h
index c3661b7..845f659 100644
--- a/libgda/sql-parser/gda-statement-struct-compound.h
+++ b/libgda/sql-parser/gda-statement-struct-compound.h
@@ -31,6 +31,17 @@ G_BEGIN_DECLS
 /*
  * Kinds
  */
+/**
+ * GdaSqlStatementCompoundType:
+ * @GDA_SQL_STATEMENT_COMPOUND_UNION: 
+ * @GDA_SQL_STATEMENT_COMPOUND_UNION_ALL: 
+ * @GDA_SQL_STATEMENT_COMPOUND_INTERSECT: 
+ * @GDA_SQL_STATEMENT_COMPOUND_INTERSECT_ALL: 
+ * @GDA_SQL_STATEMENT_COMPOUND_EXCEPT: 
+ * @GDA_SQL_STATEMENT_COMPOUND_EXCEPT_ALL: 
+ *
+ **/
+
 typedef enum {
 	GDA_SQL_STATEMENT_COMPOUND_UNION,
 	GDA_SQL_STATEMENT_COMPOUND_UNION_ALL,
@@ -43,11 +54,19 @@ typedef enum {
 /*
  * Structure definition
  */
+/**
+ * GdaSqlStatementCompound: (skip)
+ * @any: 
+ * @compound_type: 
+ * @stmt_list:
+ *
+ **/
 struct _GdaSqlStatementCompound {
 	GdaSqlAnyPart                any;
 	GdaSqlStatementCompoundType  compound_type;
 	GSList                      *stmt_list; /* list of SELECT or COMPOUND statements */
-
+	
+	/*< private >*/
 	/* Padding for future expansion */
 	gpointer         _gda_reserved1;
 	gpointer         _gda_reserved2;
diff --git a/libgda/sql-parser/gda-statement-struct-decl.h b/libgda/sql-parser/gda-statement-struct-decl.h
index 3e26fd7..73b7920 100644
--- a/libgda/sql-parser/gda-statement-struct-decl.h
+++ b/libgda/sql-parser/gda-statement-struct-decl.h
@@ -33,25 +33,69 @@ G_BEGIN_DECLS
 extern GQuark gda_sql_error_quark (void);
 #define GDA_SQL_ERROR gda_sql_error_quark ()
 
+/*
+ * GdaSqlError: (skip)
+ *
+ **/
 typedef enum {
 	GDA_SQL_STRUCTURE_CONTENTS_ERROR,
 	GDA_SQL_MALFORMED_IDENTIFIER_ERROR,
 	GDA_SQL_MISSING_IDENTIFIER_ERROR,
 	GDA_SQL_VALIDATION_ERROR
 } GdaSqlError;
+/*
+ * GdaSqlErrorType: (skip)
+ *
+ **/
 typedef GdaSqlError GdaSqlErrorType;
 
 /*
  * Struct declarations
  */
+/*
+ * GdaSqlAnyPart: (skip)
+ *
+ **/
 typedef struct _GdaSqlAnyPart   GdaSqlAnyPart;
+/*
+ * GdaSqlStatement: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatement GdaSqlStatement;
+/*
+ * GdaSqlStatementUnknown: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementUnknown GdaSqlStatementUnknown;
+/*
+ * GdaSqlStatementTransaction: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementTransaction GdaSqlStatementTransaction;
+/*
+ * GdaSqlStatementSelect: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementSelect GdaSqlStatementSelect;
+/*
+ * GdaSqlStatementInsert: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementInsert GdaSqlStatementInsert;
+/*
+ * GdaSqlStatementDelete: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementDelete GdaSqlStatementDelete;
+/*
+ * GdaSqlStatementUpdate: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementUpdate GdaSqlStatementUpdate;
+/*
+ * GdaSqlStatementCompound: (skip)
+ *
+ **/
 typedef struct _GdaSqlStatementCompound GdaSqlStatementCompound;
 
 /*
@@ -124,6 +168,7 @@ typedef enum {
  * @GDA_SQL_ANY_SQL_SELECT_FROM: structure is a #GdaSqlSelectFrom
  * @GDA_SQL_ANY_SQL_SELECT_ORDER: structure is a #GdaSqlSelectOrder
  *
+ * Type of part.
  */
 typedef enum {
 	/* complete statements */
@@ -159,6 +204,8 @@ typedef enum {
  * @type: type of structure, as a #GdaSqlAnyPartType enum.
  * @parent: pointer to the parent #GdaSqlAnyPart structure
  *
+ * Base structure of which all structures (except #GdaSqlStatement) "inherit". 
+ * its type and its parent in the structure hierarchy.
  */
 struct _GdaSqlAnyPart {
 	GdaSqlAnyPartType  type;
@@ -224,12 +271,14 @@ typedef struct {
 /**
  * GdaSqlStatementCheckValidityData: (skip)
  *
+ * Validation against a dictionary
  */
 typedef struct {
 	GdaConnection *cnc;
 	GdaMetaStore  *store;
 	GdaMetaStruct *mstruct;
 
+	/*< private >*/
 	/* Padding for future expansion */
 	gpointer         _gda_reserved1;
 	gpointer         _gda_reserved2;
diff --git a/libgda/sql-parser/gda-statement-struct-parts.h b/libgda/sql-parser/gda-statement-struct-parts.h
index 38433c5..f03b9fe 100644
--- a/libgda/sql-parser/gda-statement-struct-parts.h
+++ b/libgda/sql-parser/gda-statement-struct-parts.h
@@ -31,23 +31,67 @@
 
 G_BEGIN_DECLS
 
+/*
+ * GdaSqlExpr: (skip)
+ *
+ **/
 typedef struct _GdaSqlExpr      GdaSqlExpr;
+/*
+ * GdaSqlField: (skip)
+ *
+ **/
 typedef struct _GdaSqlField     GdaSqlField;
+/*
+ * GdaSqlTable: (skip)
+ *
+ **/
 typedef struct _GdaSqlTable     GdaSqlTable;
+/*
+ * GdaSqlFunction: (skip)
+ *
+ **/
 typedef struct _GdaSqlFunction  GdaSqlFunction;
+/*
+ * GdaSqlOperation: (skip)
+ *
+ **/
 typedef struct _GdaSqlOperation GdaSqlOperation;
+/*
+ * GdaSqlCase: (skip)
+ *
+ **/
 typedef struct _GdaSqlCase GdaSqlCase;
+/*
+ * GdaSqlSelectField: (skip)
+ *
+ **/
 typedef struct _GdaSqlSelectField GdaSqlSelectField;
+/*
+ * GdaSqlSelectTarget: (skip)
+ *
+ **/
 typedef struct _GdaSqlSelectTarget GdaSqlSelectTarget;
+/*
+ * GdaSqlSelectJoin: (skip)
+ *
+ **/
 typedef struct _GdaSqlSelectJoin GdaSqlSelectJoin;
+/*
+ * GdaSqlSelectFrom: (skip)
+ *
+ **/
 typedef struct _GdaSqlSelectFrom GdaSqlSelectFrom;
+/*
+ * GdaSqlSelectOrder: (skip)
+ *
+ **/
 typedef struct _GdaSqlSelectOrder GdaSqlSelectOrder;
 
 /*
  * Any Expression
  */
 /**
- * GdaSqlExpr:
+ * GdaSqlExpr: (skip)
  * @any: inheritance structure
  * @value: (allow-none): a #GValue, or %NULL. Please see specific note about this field. 
  * @param_spec: (allow-none): a #GdaSqlParamSpec, or %NULL if this is not a variable
@@ -107,6 +151,15 @@ void             gda_sql_expr_take_select    (GdaSqlExpr *expr, GdaSqlStatement
 /*
  * Any Table's field
  */
+/**
+ * GdaSqlField: (skip)
+ * any: 
+ * @field_name: 
+ * @validity_meta_table_column: 
+ *
+ * This structure represents the name of a table's field.
+ **/
+
 struct _GdaSqlField {
 	GdaSqlAnyPart       any;
 	gchar              *field_name;
@@ -131,6 +184,14 @@ void             gda_sql_field_take_name      (GdaSqlField *field, GValue *value
 /*
  * Any table
  */
+/**
+ * GdaSqlTable: (skip)
+ * @any: 
+ * @table_name: 
+ * @validity_meta_object: 
+ *
+ * This structure represents the name of a table.
+ */
 struct _GdaSqlTable
 {
 	GdaSqlAnyPart       any;
@@ -156,6 +217,14 @@ void             gda_sql_table_take_name      (GdaSqlTable *table, GValue *value
 /*
  * A function with any number of arguments
  */
+/**
+ * GdaSqlFunction: (skip)
+ * @any: inheritance structure
+ * @function_name: name of the function , in the form [[catalog.]schema.]functi
+ * @args_list: list of #GdaSqlExpr expressions, one for each argument
+ *
+ * This structure represents a function or an aggregate with zero or more argum
+ **/
 struct _GdaSqlFunction {
 	GdaSqlAnyPart       any;
 	gchar              *function_name;
@@ -249,6 +318,14 @@ typedef enum {
 	GDA_SQL_OPERATOR_TYPE_ILIKE
 } GdaSqlOperatorType;
 
+/**
+ * GdaSqlOperation: (skip)
+ * @any: inheritance structure
+ * @operator_type: 
+ * @operands: (element-type Gda.SqlExpr): list of #GdaSqlExpr operands
+ *
+ * This structure represents an operation between one or more operands.
+ */
 struct _GdaSqlOperation {
 	GdaSqlAnyPart       any;
 	GdaSqlOperatorType  operator_type;
@@ -270,6 +347,16 @@ GdaSqlOperatorType    gda_sql_operation_operator_from_string (const gchar *op);
 /*
  * A CASE expression
  */
+/**
+ * GdaSqlCase: (skip)
+ * @any: inheritance structure
+ * @base_expr: expression to test
+ * @when_expr_list: list of #GdaSqlExpr, one for each WHEN clause
+ * @then_expr_list: list of #GdaSqlExpr, one for each THEN clause
+ * @else_expr: default expression for the CASE
+ *
+ * This structure represents a CASE WHEN... construct
+ **/
 struct _GdaSqlCase
 {
 	GdaSqlAnyPart    any;
@@ -292,6 +379,21 @@ gchar             *gda_sql_case_serialize      (GdaSqlCase *sc);
 /*
  * Any expression in a SELECT ... before the FROM clause
  */
+/**
+ * GdaSqlSelectField: (skip)
+ * @any: inheritance structure
+ * @expr: expression
+ * @field_name: field name part of @expr if @expr represents a field
+ * @table_name: table name part of @expr if @expr represents a field
+ * @as: alias
+ * @validity_meta_object: 
+ * @validity_meta_table_column: 
+ *
+ * This structure represents a selected item in a SELECT statement (when execut
+ * will have one column per selected item). Note that the @table_name and 
+ * @field_name field parts <emphasis>will be</emphasis> overwritten by &LIBGDA;
+ * set the value of @expr->value instead.
+ **/
 struct _GdaSqlSelectField
 {
 	GdaSqlAnyPart       any;
@@ -323,6 +425,19 @@ void               gda_sql_select_field_take_alias     (GdaSqlSelectField *field
 /*
  * Any TARGET ... in a SELECT statement
  */
+/**
+ * GdaSqlSelectTarget: (skip)
+ * @any: inheritance structure
+ * @expr: expression
+ * @table_name: table name part of @expr if @expr represents a table
+ * @as: alias
+ * @validity_meta_object: 
+ *
+ * This structure represents a target used to fetch data from in a SELECT state
+ * a sub select. Note that the @table_name
+ * part <emphasis>will be</emphasis> overwritten by &LIBGDA;,
+ * set the value of @expr->value instead.
+ */
 struct _GdaSqlSelectTarget
 {
 	GdaSqlAnyPart       any;
@@ -352,6 +467,15 @@ void                gda_sql_select_target_take_alias (GdaSqlSelectTarget *target
 /*
  * Any JOIN ... in a SELECT statement
  */
+/**
+ * GdaSqlSelectJoinType:
+ * @GDA_SQL_SELECT_JOIN_CROSS: 
+ * @GDA_SQL_SELECT_JOIN_NATURAL: 
+ * @GDA_SQL_SELECT_JOIN_INNER: 
+ * @GDA_SQL_SELECT_JOIN_LEFT: 
+ * @GDA_SQL_SELECT_JOIN_RIGHT: 
+ * @GDA_SQL_SELECT_JOIN_FULL:
+ */
 typedef enum {
 	GDA_SQL_SELECT_JOIN_CROSS,
 	GDA_SQL_SELECT_JOIN_NATURAL,
@@ -362,7 +486,7 @@ typedef enum {
 } GdaSqlSelectJoinType;
 
 /**
- * GdaSqlSelectJoin:
+ * GdaSqlSelectJoin: (skip)
  * @any: inheritance structure
  * @type: type of join
  * @position: represents a join between a target at (pos &lt; @position) and the one at @position
@@ -397,7 +521,7 @@ const gchar       *gda_sql_select_join_type_to_string (GdaSqlSelectJoinType type
  * Any FROM ... in a SELECT statement
  */
 /**
- * GdaSqlSelectFrom:
+ * GdaSqlSelectFrom: (skip)
  * @any: inheritance structure
  * @targets: (element-type Gda.SqlSelectTarget): list of #GdaSqlSelectTarget
  * @joins: (element-type Gda.SqlSelectJoin): list of #GdaSqlSelectJoin
@@ -427,6 +551,15 @@ void               gda_sql_select_from_take_new_join  (GdaSqlSelectFrom *from, G
 /*
  * Any expression in a SELECT ... after the ORDER BY
  */
+/**
+ * GdaSqlSelectOrder: (skip)
+ * @any: inheritance structure
+ * @expr: expression to order on
+ * @asc: TRUE is ordering is ascending
+ * @collation_name: name of the collation to use for ordering
+ *
+ * This structure represents the ordering of a SELECT statement.
+ */
 struct _GdaSqlSelectOrder
 {
 	GdaSqlAnyPart    any;



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