[libgdamm] SqlBuilder: Make set_field_value() and add_expr() templated.



commit eb09a0eb851e6a4ac94345b9311044bc8a330c22
Author: Murray Cumming <murrayc murrayc com>
Date:   Wed Dec 2 09:08:09 2009 +0100

    SqlBuilder: Make set_field_value() and add_expr() templated.
    
    * libgda/src/sqlbuilder.[hg|ccg]: set_field_value(): Rename to
    set_field_value_as_value. Rename add_expr() to add_expr_as_value().
    Add templated set_field_value() and add_expr() methods so people
    do not need to manually construct a Value object.

 ChangeLog                 |    9 +++++++
 libgda/src/sqlbuilder.ccg |    4 +-
 libgda/src/sqlbuilder.hg  |   57 +++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 64 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 33ad6f6..0d71d1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-12-02  Murray Cumming  <murrayc murrayc-desktop>
+
+	SqlBuilder: Make set_field_value() and add_expr() templated.
+
+	* libgda/src/sqlbuilder.[hg|ccg]: set_field_value(): Rename to 
+	set_field_value_as_value. Rename add_expr() to add_expr_as_value().
+	Add templated set_field_value() and add_expr() methods so people 
+	do not need to manually construct a Value object.
+
 2009-12-01  Murray Cumming  <murrayc murrayc com>
 
 	SqlBuilder: Added 2 more methods.
diff --git a/libgda/src/sqlbuilder.ccg b/libgda/src/sqlbuilder.ccg
index fa41720..ffff21a 100644
--- a/libgda/src/sqlbuilder.ccg
+++ b/libgda/src/sqlbuilder.ccg
@@ -41,12 +41,12 @@ guint SqlBuilder::add_id(const Glib::ustring& string)
   return gda_sql_builder_add_id(gobj(), 0, string.c_str());
 }
 
-guint SqlBuilder::add_expr(const Glib::RefPtr<DataHandler>& dh, const Value& value)
+guint SqlBuilder::add_expr_as_value(const Glib::RefPtr<DataHandler>& dh, const Value& value)
 {
   return gda_sql_builder_add_expr_value(gobj(), 0, dh->gobj(), const_cast<GValue*>(value.gobj()));
 }
 
-guint SqlBuilder::add_expr(const Value& value)
+guint SqlBuilder::add_expr_as_value(const Value& value)
 {
   return gda_sql_builder_add_expr_value(gobj(), 0, 0, const_cast<GValue*>(value.gobj()));
 }
diff --git a/libgda/src/sqlbuilder.hg b/libgda/src/sqlbuilder.hg
index fc5f62b..cc37c9e 100644
--- a/libgda/src/sqlbuilder.hg
+++ b/libgda/src/sqlbuilder.hg
@@ -70,7 +70,28 @@ public:
    *
    * @return The ID of the new expression, or 0 if there was an error.
    */
-  guint add_expr(const Glib::RefPtr<DataHandler>& dh, const Value& value);
+  template <class ValueType>
+  guint add_expr(const Glib::RefPtr<DataHandler>& dh, const ValueType& value);
+
+  /** Defines an expression in Builder which may be reused to build other parts of a statement.
+   * @param dh The datahandler to use
+   * @param value: value to set the expression to
+   * 
+   * See expr() except that no custom datahandler is given 
+   *
+   * @return The ID of the new expression, or 0 if there was an error.
+   */
+  guint add_expr_as_value(const Glib::RefPtr<DataHandler>& dh, const Value& value);
+
+  /** Defines an expression in Builder which may be reused to build other parts of a statement.
+   * @param value: value to set the expression to
+   * 
+   * See expr() except that no custom datahandler is given 
+   *
+   * @return The ID of the new expression, or 0 if there was an error.
+   */
+  template <class ValueType>
+  guint add_expr(const ValueType& value);
 
   /** Defines an expression in Builder which may be reused to build other parts of a statement.
    * @param value: value to set the expression to
@@ -79,7 +100,7 @@ public:
    *
    * @return The ID of the new expression, or 0 if there was an error.
    */
-  guint add_expr(const Value& value);
+  guint add_expr_as_value(const Value& value);
 
   /** Defines a parameter which may be reused to build other parts of a statement.
    * @param: param_name: name of the parameter
@@ -158,8 +179,11 @@ public:
 
   _WRAP_METHOD(void add_field_id(guint field_id, guint value_id = 0), gda_sql_builder_add_field_id)
 
-  //TODO: Add templated version:
-  _WRAP_METHOD(void add_field_value(const Glib::ustring& field_name, const Value& value), gda_sql_builder_add_field_value)
+  //TODO: Documentation:
+  template <class ValueType>
+  void add_field_value(const Glib::ustring& field_name, const ValueType& value);
+
+  _WRAP_METHOD(void add_field_value_as_value(const Glib::ustring& field_name, const Value& value), gda_sql_builder_add_field_value)
   _IGNORE(gda_sql_builder_add_field)
 
 
@@ -169,6 +193,31 @@ public:
   
 };
 
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+template <class ValueType> inline
+void SqlBuilder::add_field_value(const Glib::ustring& field_name, const ValueType& value)
+{
+  Gnome::Gda::Value gdavalue(value);
+  this->add_field_value_as_value(field_name, gdavalue);
+}
+
+template <class ValueType> inline
+guint SqlBuilder::add_expr(const Glib::RefPtr<DataHandler>& dh, const ValueType& value)
+{
+  Gnome::Gda::Value gdavalue(value);
+  return this->add_expr_as_value(dh, gdavalue);
+}
+
+template <class ValueType> inline
+guint SqlBuilder::add_expr(const ValueType& value)
+{
+  Gnome::Gda::Value gdavalue(value);
+  return this->add_expr_as_value(gdavalue);
+}
+
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
 } // namespace Gda
 } // namespace Gnome
 



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