[libgda/gtk3] Have "make distcheck" work



commit b4f82bd1e9245b4ac0301eab728587e92e8b78c1
Author: Vivien Malerba <malerba gnome-db org>
Date:   Mon Feb 21 21:09:08 2011 +0100

    Have "make distcheck" work

 doc/C/Makefile.am                               |    8 +-
 doc/C/data_select.xml                           |    3 +
 doc/C/data_validation.xml                       |    5 +
 doc/C/examples/blobtest.c                       |    5 +
 doc/C/examples/full_example.c                   |    5 +
 doc/C/fdl-appendix.sgml                         |    7 +-
 doc/C/gda-sql-manual.xml                        |   10 +-
 doc/C/gettingstarted.xml                        |   15 +-
 doc/C/howto.xml                                 |    5 +
 doc/C/installation.xml                          |    7 +
 doc/C/libgda-5.0-docs.sgml                      |  458 ++++-------
 doc/C/limitations.xml                           |    5 +
 doc/C/migration.xml                             |    3 +
 doc/C/migration2.xml                            |    7 +-
 doc/C/packaging.xml                             |    5 +
 doc/C/packaging_ui.xml                          |    5 +
 doc/C/prov-notes.xml                            |    3 +
 doc/C/prov-writing-assembly.xml                 |  110 +++
 doc/C/prov-writing-blobs.xml                    |   87 ++
 doc/C/prov-writing-parser.xml                   |  147 ++++
 doc/C/prov-writing-recordsets.xml               |   96 +++
 doc/C/prov-writing-virtual-methods.xml          |  596 +++++++++++++
 doc/C/prov-writing.xml                          | 1016 -----------------------
 doc/C/server-operation.xml                      |    5 +
 doc/C/virtual.xml                               |    9 +-
 libgda-report/engine/rt-parser.c                |    6 +-
 libgda-ui/gdaui-rt-editor.c                     |    8 +-
 libgda-ui/internal/gdaui-provider-spec-editor.c |    4 +-
 libgda-ui/internal/utility.c                    |    4 +-
 po/POTFILES.skip                                |    2 +-
 tools/browser/doc/gda-browser-docs.sgml         |   56 +-
 31 files changed, 1324 insertions(+), 1378 deletions(-)
---
diff --git a/doc/C/Makefile.am b/doc/C/Makefile.am
index d6f2820..b560eef 100644
--- a/doc/C/Makefile.am
+++ b/doc/C/Makefile.am
@@ -17,6 +17,9 @@ SCANGOBJ_OPTIONS=
 # The directory containing the source code. Relative to $(srcdir)
 DOC_SOURCE_DIR=../..
 
+# Add the builddir to the HTML path so that version.xml is found
+MKHTML_OPTIONS=--path="$(abs_srcdir)"
+
 # Used for dependencies.
 HFILE_GLOB=
 CFILE_GLOB=
@@ -24,7 +27,7 @@ CFILE_GLOB=
 # Header files to ignore when scanning
 IGNORE_HFILES= gda-marshal.h gda-custom-marshal.h gda-enum-types.h sqlite3.h csv.h md5.h \
 	jni-wrapper.h gda-jdbc-recordset.h gda-jdbc-blob-op.h gda-jdbc-provider.h gda-jdbc-pstmt.h \
-	popup-container.h providers tools control-center tests samples plugins
+	popup-container.h providers tools control-center tests samples plugins tmp
 
 # CFLAGS and LDFLAGS for compiling scan program. Only needed
 # if $(DOC_MODULE).types is non-empty.
@@ -77,7 +80,8 @@ include $(top_srcdir)/gtk-doc.make
 # Other files to distribute
 EXTRA_DIST += examples/full_example.c installation.xml limitations.xml migration.xml migration2.xml \
 	server-operation.xml gettingstarted.xml virtual.xml virtual-notice.xml store-meta-type.xml \
-	prov-writing.xml packaging.xml packaging_ui.xml i_s_doc.xml howto.xml gda-sql-manual.xml data_validation.xml data_select.xml \
+	prov-writing-virtual-methods.xml prov-writing-recordsets.xml prov-writing-blobs.xml prov-writing-parser.xml prov-writing-assembly.xml \
+	packaging.xml packaging_ui.xml i_s_doc.xml howto.xml gda-sql-manual.xml data_validation.xml data_select.xml \
 	DataModels.svg \
 	architecture.svg parts.svg stmt-unknown.svg stmt-select.svg stmt-insert1.svg stmt-insert2.svg \
 	stmt-update.svg stmt-compound.svg information_schema.svg howto-exec.svg thread-wrapper.svg \
diff --git a/doc/C/data_select.xml b/doc/C/data_select.xml
index 2c1a7d7..20ed086 100644
--- a/doc/C/data_select.xml
+++ b/doc/C/data_select.xml
@@ -1,3 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
 <sect1 id="data-select">
   <title>Advanced GdaDataSelect usage</title>
   <para>
diff --git a/doc/C/data_validation.xml b/doc/C/data_validation.xml
index 7203c9e..194fa7b 100644
--- a/doc/C/data_validation.xml
+++ b/doc/C/data_validation.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <sect1 id="data-validation">
   <title>Custom data validation</title>
   <para>
diff --git a/doc/C/examples/blobtest.c b/doc/C/examples/blobtest.c
index b92a74a..df7fcb4 100644
--- a/doc/C/examples/blobtest.c
+++ b/doc/C/examples/blobtest.c
@@ -1,3 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
+<programlisting>
 <![CDATA[#include <libgda/libgda.h>
 #include <libgda/sql-parser/gda-sql-parser.h>
 #include <libgda/gda-blob-op.h>
@@ -190,3 +194,4 @@ do_fetch (GdaConnection *cnc, gint id, GError **error)
 	return result;
 }
 ]]>
+</programlisting>
diff --git a/doc/C/examples/full_example.c b/doc/C/examples/full_example.c
index 2fd2ad9..6fad3d8 100644
--- a/doc/C/examples/full_example.c
+++ b/doc/C/examples/full_example.c
@@ -1,3 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
+<programlisting>
 <![CDATA[#include <libgda/libgda.h>
 #include <sql-parser/gda-sql-parser.h>
 
@@ -229,3 +233,4 @@ run_sql_non_select (GdaConnection *cnc, const gchar *sql)
 	g_object_unref (stmt);
 }
 ]]>
+</programlisting>
diff --git a/doc/C/fdl-appendix.sgml b/doc/C/fdl-appendix.sgml
index 6ab4128..6301540 100644
--- a/doc/C/fdl-appendix.sgml
+++ b/doc/C/fdl-appendix.sgml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY copy          "The GNOME Foundation">
+]>
 <!--  
      The GNU Free Documentation License 1.1 in DocBook
      Markup by Eric Baudais <baudais okstate edu>
@@ -627,7 +632,7 @@
     
     <blockquote>
       <para>
-	Copyright &copy; YEAR YOUR NAME.
+	Copyright &copy; 1999 - 2011.
       </para>
       <para>
 	Permission is granted to copy, distribute and/or modify this
diff --git a/doc/C/gda-sql-manual.xml b/doc/C/gda-sql-manual.xml
index df81fe8..0bb7258 100644
--- a/doc/C/gda-sql-manual.xml
+++ b/doc/C/gda-sql-manual.xml
@@ -1,3 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<part id="gda-sql">
+  <title>Gda SQL console's user manual</title>
 <para>
   The &LIBGDA;'s console tool allow one to send SQL commands to a database server, and
   to easily browse the meta data associated to the database (ie. get information about
@@ -773,5 +780,4 @@ SalesTest>
   </sect1>
 
 </chapter>
-
-
+</part>
diff --git a/doc/C/gettingstarted.xml b/doc/C/gettingstarted.xml
index 8ad2b87..b4af31e 100644
--- a/doc/C/gettingstarted.xml
+++ b/doc/C/gettingstarted.xml
@@ -1,4 +1,9 @@
-<chapter id="getting_started">
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="getting_started" xmlns:xi="http://www.w3.org/2003/XInclude";>
   <title>Code examples</title>
   <sect1 id="initializing">
     <title>Initializing</title>
@@ -342,9 +347,7 @@ cc -o example example.c `pkg-config --cflags --libs libgda-3.0`
     </para>
     <para>
       The code is:
-      <programlisting>
-&fullexample;
-      </programlisting>
+<xi:include href="examples/full_example.c"/>
       and executing should output something like:
       <programlisting>> ./example 
 ref   | name  | price   
@@ -461,9 +464,7 @@ create_table (GdaConnection *cnc)
     </para>
     <para>
       The code is:
-      <programlisting>
-&blobsexample;
-      </programlisting>
+<xi:include href="examples/blobtest.c"/>
     </para>
   </sect1>
 
diff --git a/doc/C/howto.xml b/doc/C/howto.xml
index 31b35aa..f182d64 100644
--- a/doc/C/howto.xml
+++ b/doc/C/howto.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <chapter id="howto">
   <title>HOWTO for common tasks</title>
   <para>
diff --git a/doc/C/installation.xml b/doc/C/installation.xml
index 1940f3a..e84075d 100644
--- a/doc/C/installation.xml
+++ b/doc/C/installation.xml
@@ -1,3 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+<!ENTITY GNOMEDB         "<acronym>Gnome-Db</acronym>">
+<!ENTITY RPM             "<acronym>RPM</acronym>">
+]>
 <chapter id="installation">
   <title>Installation</title>
   <sect1 id="installation-introduction">
diff --git a/doc/C/libgda-5.0-docs.sgml b/doc/C/libgda-5.0-docs.sgml
index 67d2e62..946748f 100644
--- a/doc/C/libgda-5.0-docs.sgml
+++ b/doc/C/libgda-5.0-docs.sgml
@@ -1,164 +1,25 @@
 <?xml version="1.0"?>
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
      "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"; [
-<!ENTITY nbsp            " ">
+<!ENTITY copy           "The GNOME Foundation">
 <!ENTITY version SYSTEM "version.xml">
 <!ENTITY builddate SYSTEM "builddate.xml">
 <!ENTITY LIBGDA          "<application>Libgda</application>">
-<!ENTITY GNOMEDB         "<application>GNOME-DB</application>">
 <!ENTITY igalia          '<emphasis><ulink url="http://www.igalia.com";>Igalia, S.L.</ulink></emphasis>'>
 <!ENTITY xobas           '<emphasis><ulink url="http://www.xobas.com";>Xobas Software</ulink></emphasis>'>
 <!ENTITY API             "<acronym>API</acronym>">
-<!ENTITY DBMS            "<acronym>DBMS</acronym>">
-<!ENTITY DSN             "<acronym>DSN</acronym>">
 <!ENTITY ODBC            "<acronym>ODBC</acronym>">
 <!ENTITY GDA             "<acronym>GDA</acronym>">
 <!ENTITY LDAP            "<acronym>LDAP</acronym>">
-<!ENTITY CORBA           "<acronym>CORBA</acronym>">
-<!ENTITY IDL             "<acronym>IDL</acronym>">
-<!ENTITY ORB             "<acronym>ORB</acronym>">
 <!ENTITY SQL             "<acronym>SQL</acronym>">
-<!ENTITY RPM             "<acronym>RPM</acronym>">
-<!ENTITY XML             "<acronym>XML</acronym>">
-<!ENTITY PGSQL           "<application>PostgreSQL</application>">
-<!ENTITY MYSQL           "<application>MySQL</application>">
-<!ENTITY ORAC            "<application>Oracle</application>">
-<!ENTITY INTERB          "<application>Interbase</application>">
-<!ENTITY SYBASE          "<application>Sybase</application>">
-<!ENTITY MSACC           "<application>MS Access</application>">
-<!ENTITY INFOR           "<application>Informix</application>">
-<!ENTITY GDASERVERPROVIDER "<link linkend='GdaServerProvider'>GdaServerProvider</link>">
-<!ENTITY GDADATAMODEL    "<link linkend='GdaDataModel'>GdaDataModel</link>">
-<!ENTITY GDADATAMODELARRAY "<link linkend='GdaDataModelArray'>GdaDataModelArray</link>">
-<!ENTITY GDADATAMODELHASH "<link linkend='GdaDataModelHash'>GdaDataModelHash</link>">
 <!ENTITY gda-list-server-op "<command>gda-list-server-op-5.0</command>">
 <!ENTITY gda-list-config "<command>gda-list-config-5.0</command>">
-<!ENTITY gda-sql "<command>gda-sql</command>">
+<!ENTITY gda-sql         "<command>gda-sql</command>">
 <!ENTITY gda-test-connection "<command>gda-test-connection-5.0</command>">
-<!ENTITY fullexample SYSTEM "examples/full_example.c">
-<!ENTITY blobsexample SYSTEM "examples/blobtest.c">
-<!ENTITY install SYSTEM "installation.xml">
-<!ENTITY examples SYSTEM "gettingstarted.xml">
-<!ENTITY migration SYSTEM "migration.xml">
-<!ENTITY migration2 SYSTEM "migration2.xml">
-<!ENTITY data-validation SYSTEM "data_validation.xml">
-<!ENTITY data-select SYSTEM "data_select.xml">
-<!ENTITY limitations SYSTEM "limitations.xml">
-<!ENTITY provnotes SYSTEM "prov-notes.xml">
-<!ENTITY libgda-GdaCommand SYSTEM "xml/gda-command.xml">
-<!ENTITY libgda-config SYSTEM "xml/gda-config.xml">
-<!ENTITY libgda-GdaConnection SYSTEM "xml/gda-connection.xml">
-<!ENTITY libgda-GdaMutex SYSTEM "xml/gda-mutex.xml">
-<!ENTITY libgda-GdaLockable SYSTEM "xml/gda-lockable.xml">
-<!ENTITY libgda-GdaRow SYSTEM "xml/gda-row.xml">
-<!ENTITY libgda-GdaDataModelArray SYSTEM "xml/gda-data-model-array.xml">
-<!ENTITY libgda-GdaDataModelBdb SYSTEM "xml/gda-data-model-bdb.xml">
-<!ENTITY libgda-GdaDataModelDir SYSTEM "xml/gda-data-model-dir.xml">
-<!ENTITY libgda-GdaDataModel SYSTEM "xml/gda-data-model.xml">
-<!ENTITY libgda-GdaDataModelIter SYSTEM "xml/gda-data-model-iter.xml">
-<!ENTITY libgda-GdaDataModelImport SYSTEM "xml/gda-data-model-import.xml">
-<!ENTITY libgda-GdaDataAccessWrapper SYSTEM "xml/gda-data-access-wrapper.xml">
-<!ENTITY libgda-GdaDataProxy SYSTEM "xml/gda-data-proxy.xml">
-<!ENTITY libgda-GdaConnection-event SYSTEM "xml/gda-connection-event.xml">
-<!ENTITY libgda-GdaColumn SYSTEM "xml/gda-column.xml">
-<!ENTITY libgda-init SYSTEM "xml/libgda.xml">
-<!ENTITY libgdaui-init SYSTEM "xml/libgdaui.xml">
-<!ENTITY libgda-log SYSTEM "xml/gda-log.xml">
-<!ENTITY libgda-quark-list SYSTEM "xml/gda-quark-list.xml">
-<!ENTITY libgda-GdaServerProvider SYSTEM "xml/gda-server-provider.xml">
-<!ENTITY libgda-GdaVirtualProvider SYSTEM "xml/gda-virtual-provider.xml">
-<!ENTITY libgda-GdaVproviderDataModel SYSTEM "xml/gda-vprovider-data-model.xml">
-<!ENTITY libgda-GdaVproviderHub SYSTEM "xml/gda-vprovider-hub.xml">
-<!ENTITY libgda-GdaVirtualConnection SYSTEM "xml/gda-virtual-connection.xml">
-<!ENTITY libgda-GdaVconnectionDataModel SYSTEM "xml/gda-vconnection-data-model.xml">
-<!ENTITY libgda-GdaVconnectionHub SYSTEM "xml/gda-vconnection-hub.xml">
-<!ENTITY libgda-GdaServerOperation SYSTEM "xml/gda-server-operation.xml">
-<!ENTITY libgda-GdaServerOperationNodes SYSTEM "xml/gda-server-operation-nodes.xml">
-<!ENTITY libgda-GdaServerOperationSequences SYSTEM "xml/gda-server-operation-sequences.xml">
-<!ENTITY libgda-serverop-intro SYSTEM "server-operation.xml">
-<!ENTITY libgda-virtual SYSTEM "virtual.xml">
-<!ENTITY libgda-virtual-notice SYSTEM "virtual-notice.xml">
-<!ENTITY libgda-xa-transaction SYSTEM "xml/gda-xa-transaction.xml">
-<!ENTITY libgda-transaction-status SYSTEM "xml/gda-transaction-status.xml">
-<!ENTITY libgda-util SYSTEM "xml/gda-util.xml">
-<!ENTITY libgda-GValue SYSTEM "xml/gda-value.xml">
-<!ENTITY libgda-GdaConnection SYSTEM "xml/gda-connection.xml">
-<!ENTITY GdaStoreMetaType SYSTEM "store-meta-type.xml">
-<!ENTITY libgda-GdaDataHandler SYSTEM "xml/gda-data-handler.xml">
-<!ENTITY libgda-GdaHandlerString SYSTEM "xml/gda-handler-string.xml">
-<!ENTITY libgda-GdaHandlerBoolean SYSTEM "xml/gda-handler-boolean.xml">
-<!ENTITY libgda-GdaHandlerTime SYSTEM "xml/gda-handler-time.xml">
-<!ENTITY libgda-GdaHandlerNumerical SYSTEM "xml/gda-handler-numerical.xml">
-<!ENTITY libgda-GdaHandlerBin SYSTEM "xml/gda-handler-bin.xml">
-<!ENTITY libgda-GdaHandlerType SYSTEM "xml/gda-handler-type.xml">
-<!ENTITY libgda-GdaBlobOp SYSTEM "xml/gda-blob-op.xml">
-<!ENTITY libgda-GdaReportEngine SYSTEM "xml/gda-report-engine.xml">
-<!ENTITY libgda-GdaReportDocument SYSTEM "xml/gda-report-document.xml">
-<!ENTITY libgda-GdaReportDocbookDocument SYSTEM "xml/gda-report-docbook-document.xml">
-<!ENTITY libgda-GdaReportRmlDocument SYSTEM "xml/gda-report-rml-document.xml">
-<!ENTITY libgda-GdaHolder SYSTEM "xml/gda-holder.xml">
-<!ENTITY libgda-GdaSet SYSTEM "xml/gda-set.xml">
-<!ENTITY libgda-GdaStatement SYSTEM "xml/gda-statement.xml">
-<!ENTITY libgda-GdaRepetitiveStatement SYSTEM "xml/gda-repetitive-statement.xml">
-<!ENTITY libgda-GdaSqlStatement SYSTEM "xml/gda-sql-statement.xml">
-<!ENTITY libgda-GdaBatch SYSTEM "xml/gda-batch.xml">
-<!ENTITY libgda-GdaSqlParser SYSTEM "xml/gda-sql-parser.xml">
-<!ENTITY libgda-GdaMetaStore SYSTEM "xml/gda-meta-store.xml">
-<!ENTITY libgda-GdaMetaStruct SYSTEM "xml/gda-meta-struct.xml">
-<!ENTITY libgda-GdaDataSelect SYSTEM "xml/gda-data-select.xml">
-<!ENTITY libgda-GdaDataSelectPriv SYSTEM "xml/gda-data-select-priv.xml">
-<!ENTITY libgda-PStmt SYSTEM "xml/gda-pstmt.xml">
-<!ENTITY libgda-Enums SYSTEM "xml/gda-enums.xml">
-<!ENTITY libgda-convenient SYSTEM "xml/gda-convenient.xml">
-<!ENTITY libgda-GdaDataComparator SYSTEM "xml/gda-data-comparator.xml">
-<!ENTITY provider-writing SYSTEM "prov-writing.xml">
-<!ENTITY packaging SYSTEM "packaging.xml">
-<!ENTITY packaging-ui SYSTEM "packaging_ui.xml">
-<!ENTITY provider-support SYSTEM "xml/provider-support.xml">
-<!ENTITY provider-support-sql SYSTEM "xml/provider-support-sql.xml">
-<!ENTITY i-s-doc SYSTEM "i_s_doc.xml">
-<!ENTITY fdl-appendix SYSTEM "fdl-appendix.sgml">
-<!ENTITY howto SYSTEM "howto.xml">
-<!ENTITY libgda-TreeIndex SYSTEM "xml/tree_index.sgml">
-<!ENTITY GdaSqlManual SYSTEM "gda-sql-manual.xml">
-<!ENTITY GdaAttributesManager SYSTEM "xml/gda-attributes-manager.xml">
-<!ENTITY libgda-GdaTree SYSTEM "xml/gda-tree.xml">
-<!ENTITY libgda-GdaTreeManager SYSTEM "xml/gda-tree-manager.xml">
-<!ENTITY libgda-GdaTreeNode SYSTEM "xml/gda-tree-node.xml">
-<!ENTITY libgda-GdaTreeMgrLabel SYSTEM "xml/gda-tree-mgr-label.xml">
-<!ENTITY libgda-GdaTreeMgrSelect SYSTEM "xml/gda-tree-mgr-select.xml">
-<!ENTITY libgda-GdaTreeMgrSchemas SYSTEM "xml/gda-tree-mgr-schemas.xml">
-<!ENTITY libgda-GdaTreeMgrTables SYSTEM "xml/gda-tree-mgr-tables.xml">
-<!ENTITY libgda-GdaTreeMgrColumns SYSTEM "xml/gda-tree-mgr-columns.xml">
-<!ENTITY libgda-GdaSqlBuilder SYSTEM "xml/gda-sql-builder.xml">
-<!ENTITY libgda-GdaThreadWrapper SYSTEM "xml/gda-thread-wrapper.xml">
-
-<!ENTITY visual-index SYSTEM "visual_index.xml">
-<!ENTITY libgdaui-GdauiBasicForm SYSTEM "xml/gdaui-basic-form.xml">
-<!ENTITY libgdaui-GdauiCombo SYSTEM "xml/gdaui-combo.xml">
-<!ENTITY libgdaui-GdauiDataEntry SYSTEM "xml/gdaui-data-entry.xml">
-<!ENTITY libgdaui-gdaui-easy SYSTEM "xml/gdaui-easy.xml">
-<!ENTITY libgdaui-gdaui-plugins SYSTEM "xml/gdaui-plugins.xml">
-<!ENTITY libgdaui-GdauiDataStore SYSTEM "xml/gdaui-data-store.xml">
-<!ENTITY libgdaui-GdauiDataFilter SYSTEM "xml/gdaui-data-filter.xml">
-<!ENTITY libgdaui-GdauiDataProxy SYSTEM "xml/gdaui-data-proxy.xml">
-<!ENTITY libgdaui-GdauiDataProxyInfo SYSTEM "xml/gdaui-data-proxy-info.xml">
-<!ENTITY libgdaui-GdauiForm SYSTEM "xml/gdaui-form.xml">
-<!ENTITY libgdaui-GdauiGrid SYSTEM "xml/gdaui-grid.xml">
-<!ENTITY libgdaui-GdauiLogin SYSTEM "xml/gdaui-login.xml">
-<!ENTITY libgdaui-GdauiProviderSelector SYSTEM "xml/gdaui-provider-selector.xml">
-<!ENTITY libgdaui-GdauiRawForm SYSTEM "xml/gdaui-raw-form.xml">
-<!ENTITY libgdaui-GdauiRawGrid SYSTEM "xml/gdaui-raw-grid.xml">
-<!ENTITY libgdaui-GdauiServerOperation SYSTEM "xml/gdaui-server-operation.xml">
-<!ENTITY libgdaui-GdauiTreeStore SYSTEM "xml/gdaui-tree-store.xml">
-<!ENTITY libgdaui-GdauiCloud SYSTEM "xml/gdaui-cloud.xml">
-<!ENTITY libgdaui-GdauiDataSelector SYSTEM "xml/gdaui-data-selector.xml">
-<!ENTITY libgdaui-GdauiRtEditor SYSTEM "xml/gdaui-rt-editor.xml">
 ]>
-
-<book id="index">
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude";>
   <bookinfo>
-    <title>GNOME Data Access 4 manual</title>
+    <title>GNOME Data Access 5 manual</title>
     <releaseinfo>for version &version;</releaseinfo>
     <authorgroup>
       <author>
@@ -237,7 +98,7 @@
     <date>&builddate;</date>
     <copyright>
       <year>1999 - 2011</year>
-      <holder>The GNOME Foundation</holder>
+      <holder>&copy;</holder>
     </copyright>
     <abstract>
       <para>
@@ -443,12 +304,12 @@
       </mediaobject>
     </chapter>
 
-    &install;
-    &examples;
-    &migration;
-    &migration2;
-    &provnotes;
-    &limitations;
+    <xi:include href="installation.xml"/>
+    <xi:include href="gettingstarted.xml"/>
+    <xi:include href="migration.xml"/>
+    <xi:include href="migration2.xml"/>
+    <xi:include href="prov-notes.xml"/>
+    <xi:include href="limitations.xml"/>
   </part>  
   <part id="part_libgda_api">
     <title>API reference</title>
@@ -543,17 +404,17 @@
 
     </chapter>
 
-    &howto;
+    <xi:include href="howto.xml"/>
     <chapter>
       <title>Object Hierarchy</title>
-      &libgda-TreeIndex;
+      <xi:include href="xml/tree_index.sgml"/>
     </chapter>
 
     <chapter id="init_config">
       <title>Initialization and configuration</title>
       <para>Configuration examples are given in <link linkend="installation-configuring">this introduction section</link></para>
-      &libgda-init;
-      &libgda-config;
+      <xi:include href="xml/libgda.xml"/>
+      <xi:include href="xml/gda-config.xml"/>
       <sect1 id="libgda_env_variables">
 	<title>Configuring &LIBGDA; with environment variables</title>
 	<para>Some functional aspects of &LIBGDA; can be configured using environment variables which are
@@ -670,30 +531,30 @@
 	  </textobject>
 	</mediaobject>
       </para>
-      &libgda-convenient;
-      &libgda-GdaConnection;
-      &libgda-GdaSqlParser;
-      &libgda-GdaSqlBuilder;
-      &libgda-GdaStatement;
-      &libgda-GdaRepetitiveStatement;
-      &libgda-GdaBatch;
-      &libgda-GdaHolder;
-      &libgda-GdaSet;
-      &libgda-GdaConnection-event;
-      &libgda-transaction-status;
-      &libgda-xa-transaction;
-      &GdaStoreMetaType;
+      <xi:include href="xml/gda-convenient.xml"/>
+      <xi:include href="xml/gda-connection.xml"/>
+      <xi:include href="xml/gda-sql-parser.xml"/>
+      <xi:include href="xml/gda-sql-builder.xml"/>
+      <xi:include href="xml/gda-statement.xml"/>
+      <xi:include href="xml/gda-repetitive-statement.xml"/>
+      <xi:include href="xml/gda-batch.xml"/>
+      <xi:include href="xml/gda-holder.xml"/>
+      <xi:include href="xml/gda-set.xml"/>
+      <xi:include href="xml/gda-connection-event.xml"/>
+      <xi:include href="xml/gda-transaction-status.xml"/>
+      <xi:include href="xml/gda-xa-transaction.xml"/>
+      <xi:include href="store-meta-type.xml"/>
     </chapter>
 
     <chapter id="virtual_connection">
       <title>Virtual connections</title>
-      &libgda-virtual;
-      &libgda-GdaVirtualProvider;
-      &libgda-GdaVproviderDataModel;
-      &libgda-GdaVproviderHub;
-      &libgda-GdaVirtualConnection;
-      &libgda-GdaVconnectionDataModel;
-      &libgda-GdaVconnectionHub;
+      <xi:include href="virtual.xml"/>
+      <xi:include href="xml/gda-virtual-provider.xml"/>
+      <xi:include href="xml/gda-vprovider-data-model.xml"/>
+      <xi:include href="xml/gda-vprovider-hub.xml"/>
+      <xi:include href="xml/gda-virtual-connection.xml"/>
+      <xi:include href="xml/gda-vconnection-data-model.xml"/>
+      <xi:include href="xml/gda-vconnection-hub.xml"/>
     </chapter>
 
     <chapter id="data_models">
@@ -738,22 +599,22 @@
 	  </listitem>
 	</itemizedlist>
       </para>
-      &libgda-GValue;
-      &data-validation;
-      &data-select;
-      &libgda-GdaBlobOp;
-      &libgda-GdaDataModel;
-      &libgda-GdaDataSelect;
-      &libgda-GdaColumn;
-      &libgda-GdaDataModelIter;
-      &libgda-GdaDataModelImport;
-      &libgda-GdaDataAccessWrapper;
-      &libgda-GdaDataModelArray;
-      &libgda-GdaRow;
-      &libgda-GdaDataModelBdb;
-      &libgda-GdaDataModelDir;
-      &libgda-GdaDataProxy;
-      &libgda-GdaDataComparator;
+      <xi:include href="xml/gda-value.xml"/>
+      <xi:include href="data_validation.xml"/>
+      <xi:include href="data_select.xml"/>
+      <xi:include href="xml/gda-blob-op.xml"/>
+      <xi:include href="xml/gda-data-model.xml"/>
+      <xi:include href="xml/gda-data-select.xml"/>
+      <xi:include href="xml/gda-column.xml"/>
+      <xi:include href="xml/gda-data-model-iter.xml"/>
+      <xi:include href="xml/gda-data-model-import.xml"/>
+      <xi:include href="xml/gda-data-access-wrapper.xml"/>
+      <xi:include href="xml/gda-data-model-array.xml"/>
+      <xi:include href="xml/gda-row.xml"/>
+      <xi:include href="xml/gda-data-model-bdb.xml"/>
+      <xi:include href="xml/gda-data-model-dir.xml"/>
+      <xi:include href="xml/gda-data-proxy.xml"/>
+      <xi:include href="xml/gda-data-comparator.xml"/>
     </chapter>
 
     <chapter id="trees">
@@ -910,14 +771,14 @@ else {
 g_object_unref (tree);
 	</programlisting>
       </para>
-      &libgda-GdaTree;
-      &libgda-GdaTreeManager;
-      &libgda-GdaTreeNode;
-      &libgda-GdaTreeMgrLabel;
-      &libgda-GdaTreeMgrSelect;
-      &libgda-GdaTreeMgrSchemas;
-      &libgda-GdaTreeMgrTables;
-      &libgda-GdaTreeMgrColumns;
+      <xi:include href="xml/gda-tree.xml"/>
+      <xi:include href="xml/gda-tree-manager.xml"/>
+      <xi:include href="xml/gda-tree-node.xml"/>
+      <xi:include href="xml/gda-tree-mgr-label.xml"/>
+      <xi:include href="xml/gda-tree-mgr-select.xml"/>
+      <xi:include href="xml/gda-tree-mgr-schemas.xml"/>
+      <xi:include href="xml/gda-tree-mgr-tables.xml"/>
+      <xi:include href="xml/gda-tree-mgr-columns.xml"/>
     </chapter>
 
     <chapter id="data_conv">
@@ -949,13 +810,13 @@ g_object_unref (tree);
 	  </listitem>
 	</itemizedlist>
       </para>
-      &libgda-GdaDataHandler;
-      &libgda-GdaHandlerString;
-      &libgda-GdaHandlerBoolean;
-      &libgda-GdaHandlerTime;
-      &libgda-GdaHandlerNumerical;
-      &libgda-GdaHandlerBin;
-      &libgda-GdaHandlerType;
+      <xi:include href="xml/gda-data-handler.xml"/>
+      <xi:include href="xml/gda-handler-string.xml"/>
+      <xi:include href="xml/gda-handler-boolean.xml"/>
+      <xi:include href="xml/gda-handler-time.xml"/>
+      <xi:include href="xml/gda-handler-numerical.xml"/>
+      <xi:include href="xml/gda-handler-bin.xml"/>
+      <xi:include href="xml/gda-handler-type.xml"/>
     </chapter>
 
     <chapter id="gda-dict">
@@ -1272,64 +1133,64 @@ g_object_unref (store);
 	</sect2>
 
 	<!-- tables and views documentation -->
-	&i-s-doc;
+	<xi:include href="i_s_doc.xml"/>
       </sect1>
 
-      &libgda-GdaMetaStore;
-      &libgda-GdaMetaStruct;
+      <xi:include href="xml/gda-meta-store.xml"/>
+      <xi:include href="xml/gda-meta-struct.xml"/>
     </chapter>
 
     <chapter>
       <title>Data definition (DDL) queries</title>
-      &libgda-serverop-intro;
-      &libgda-GdaServerOperation;
-      &libgda-GdaServerOperationNodes;
-      &libgda-GdaServerOperationSequences;
+      <xi:include href="server-operation.xml"/>
+      <xi:include href="xml/gda-server-operation.xml"/>
+      <xi:include href="xml/gda-server-operation-nodes.xml"/>
+      <xi:include href="xml/gda-server-operation-sequences.xml"/>
     </chapter>
 
     <chapter>
       <title>User interface API reference</title>
-      &visual-index;
-
-      &libgdaui-init;
-      &libgdaui-GdauiLogin;
-      &libgdaui-GdauiProviderSelector;
-
-      &libgdaui-GdauiDataSelector;
-      &libgdaui-GdauiDataProxy;
-      &libgdaui-GdauiBasicForm;
-      &libgdaui-GdauiForm;
-      &libgdaui-GdauiRawForm;
-      &libgdaui-GdauiGrid;
-      &libgdaui-GdauiRawGrid;
-      &libgdaui-GdauiCombo;
-      &libgdaui-GdauiCloud;
-      &libgdaui-GdauiRtEditor;
-
-      &libgdaui-gdaui-plugins;
-
-      &libgdaui-GdauiDataEntry;
-      &libgdaui-GdauiDataStore;
-      &libgdaui-GdauiDataFilter;
-      &libgdaui-GdauiDataProxyInfo;
-      &libgdaui-GdauiServerOperation;
-      &libgdaui-GdauiTreeStore;
-
-      &libgdaui-gdaui-easy;
+      <xi:include href="visual_index.xml"/>
+
+      <xi:include href="xml/libgdaui.xml"/>
+
+      <xi:include href="xml/gdaui-login.xml"/>
+      <xi:include href="xml/gdaui-provider-selector.xml"/>
+
+      <xi:include href="xml/gdaui-data-selector.xml"/>
+      <xi:include href="xml/gdaui-data-proxy.xml"/>
+      <xi:include href="xml/gdaui-basic-form.xml"/>
+      <xi:include href="xml/gdaui-form.xml"/>
+      <xi:include href="xml/gdaui-raw-form.xml"/>
+      <xi:include href="xml/gdaui-grid.xml"/>
+      <xi:include href="xml/gdaui-raw-grid.xml"/>
+      <xi:include href="xml/gdaui-combo.xml"/>
+      <xi:include href="xml/gdaui-cloud.xml"/>
+      <xi:include href="xml/gdaui-rt-editor.xml"/>
+      <xi:include href="xml/gdaui-plugins.xml"/>
+
+      <xi:include href="xml/gdaui-data-entry.xml"/>
+      <xi:include href="xml/gdaui-data-store.xml"/>
+      <xi:include href="xml/gdaui-data-filter.xml"/>
+      <xi:include href="xml/gdaui-data-proxy-info.xml"/>
+      <xi:include href="xml/gdaui-server-operation.xml"/>
+      <xi:include href="xml/gdaui-tree-store.xml"/>
+
+      <xi:include href="xml/gdaui-easy.xml"/>
     </chapter>
 
     <chapter id="multi-threading">
       <title>Multi threading</title>
-      &libgda-GdaMutex;
-      &libgda-GdaLockable;
-      &libgda-GdaThreadWrapper;      
+      <xi:include href="xml/gda-mutex.xml"/>
+      <xi:include href="xml/gda-lockable.xml"/>
+      <xi:include href="xml/gda-thread-wrapper.xml"/>
     </chapter>
 
     <chapter id="misc">
       <title>Miscellaneous</title>
-      &libgda-util;
-      &libgda-log;
-      &GdaAttributesManager;
+      <xi:include href="xml/gda-util.xml"/>
+      <xi:include href="xml/gda-log.xml"/>
+      <xi:include href="xml/gda-attributes-manager.xml"/>
     </chapter>
   </part>
 
@@ -1701,10 +1562,10 @@ g_object_unref (eng);
     </chapter>
     <chapter>
       <title>API reference</title>
-      &libgda-GdaReportEngine;
-      &libgda-GdaReportDocument;
-      &libgda-GdaReportDocbookDocument;
-      &libgda-GdaReportRmlDocument;
+      <xi:include href="xml/gda-report-engine.xml"/>
+      <xi:include href="xml/gda-report-document.xml"/>
+      <xi:include href="xml/gda-report-docbook-document.xml"/>
+      <xi:include href="xml/gda-report-rml-document.xml"/>
     </chapter>
   </part>
 
@@ -1726,10 +1587,7 @@ g_object_unref (eng);
     </chapter>
   </part>
 
-  <part id="gda-sql">
-    <title>Gda SQL console's user manual</title>
-    &GdaSqlManual;
-  </part>
+  <xi:include href="gda-sql-manual.xml"/>
 
   <part id="part_providers">
     <title>Databases providers for developers</title>
@@ -1765,62 +1623,66 @@ g_object_unref (eng);
       <link linkend="psupport">Providers' support API</link> section.
     </para>
 
+    <chapter>
+      <title>Getting started</title>
+      <para>
+	&LIBGDA;'s sources contain templates to get started in creating a new database provider. The following templates
+	are available:
+	<itemizedlist>
+	  <listitem><para>the template in the <filename class="directory">providers/skel-implementation/capi</filename>
+	      directory which can be used when writing a provider using the database's C or C++ API (for example
+	      the PostgreSQL or MySQL providers)</para></listitem>
+	  <listitem><para>the template in the <filename class="directory">providers/skel-implementation/models</filename>
+	      directory which can be used when writing a provider for a system which is not a relational database (or
+	      does offer a very limited API, such as for the MS Access or Berkeley DB systems).</para></listitem>
+	</itemizedlist>
+      </para>
+      <para>
+	In any case, for example to create a DummyDb provider, follow these steps:
+	<itemizedlist>
+	  <listitem><para>copy one of the template's directory into a new directory named
+	      <filename class="directory">dummydb</filename></para></listitem>
+	  <listitem><para>From inside that new directory, run the
+	      <filename class="directory">providers/prepare_provider_sources.sh</filename> script with the name
+	      of the provider as sole argument ("dummydb" here), which replaces
+	      all the class and object names with the name of the provider and renames the files correctly. These
+	      new sources should be compilable without any modification.</para></listitem>
+	  <listitem><para>Edit the <filename>Makefile.am</filename> to add provider specific compilation and link
+	      flags</para></listitem>
+	  <listitem><para>Integrate the provider's new code into a compilation unit: either &LIBGDA;'s sources in
+	      the <filename class="directory">providers</filename>directory or in your own application (this step usually involves
+	      modifying the <filename>configure.ac</filename> or <filename>configure.in</filename> files).</para></listitem>
+	  <listitem><para>Implement the missing parts (it is usually a good idea to look how other provider's
+	      implementations are done to get ideas).</para></listitem>
+	</itemizedlist>
+      </para>
+    </chapter>
+
+    <xi:include href="prov-writing-virtual-methods.xml"/>
+    <xi:include href="prov-writing-recordsets.xml"/>
+    <xi:include href="prov-writing-blobs.xml"/>
+    <xi:include href="prov-writing-parser.xml"/>
+    <xi:include href="prov-writing-assembly.xml"/>
 
     <chapter id="psupport">
       <title>Providers' support API</title>
-      &libgda-GdaServerProvider;
-      &libgda-GdaDataSelectPriv;
-      &libgda-PStmt;
-      &libgda-quark-list;
-      &provider-support-sql;
-      &provider-support;
+      <xi:include href="xml/gda-server-provider.xml"/>
+      <xi:include href="xml/gda-data-select-priv.xml"/>
+      <xi:include href="xml/gda-pstmt.xml"/>
+      <xi:include href="xml/gda-quark-list.xml"/>
+      <xi:include href="xml/provider-support-sql.xml"/>
+      <xi:include href="xml/provider-support.xml"/>
     </chapter>
-<sect1>
-    <title>Getting started</title>
-    <para>
-      &LIBGDA;'s sources contain templates to get started in creating a new database provider. The following templates
-      are available:
-      <itemizedlist>
-	<listitem><para>the template in the <filename class="directory">providers/skel-implementation/capi</filename>
-	    directory which can be used when writing a provider using the database's C or C++ API (for example
-	    the PostgreSQL or MySQL providers)</para></listitem>
-	<listitem><para>the template in the <filename class="directory">providers/skel-implementation/models</filename>
-	    directory which can be used when writing a provider for a system which is not a relational database (or
-	    does offer a very limited API, such as for the MS Access or Berkeley DB systems).</para></listitem>
-      </itemizedlist>
-    </para>
-    <para>
-      In any case, for example to create a DummyDb provider, follow these steps:
-      <itemizedlist>
-	<listitem><para>copy one of the template's directory into a new directory named
-	    <filename class="directory">dummydb</filename></para></listitem>
-	<listitem><para>From inside that new directory, run the
-	    <filename class="directory">providers/prepare_provider_sources.sh</filename> script with the name
-	    of the provider as sole argument ("dummydb" here), which replaces
-	    all the class and object names with the name of the provider and renames the files correctly. These
-	    new sources should be compilable without any modification.</para></listitem>
-	<listitem><para>Edit the <filename>Makefile.am</filename> to add provider specific compilation and link
-	    flags</para></listitem>
-	<listitem><para>Integrate the provider's new code into a compilation unit: either &LIBGDA;'s sources in
-	    the <filename class="directory">providers</filename>directory or in your own application (this step usually involves
-	    modifying the <filename>configure.ac</filename> or <filename>configure.in</filename> files).</para></listitem>
-	<listitem><para>Implement the missing parts (it is usually a good idea to look how other provider's
-	    implementations are done to get ideas).</para></listitem>
-      </itemizedlist>
-    </para>
-  </sect1>
-    &provider-writing;
   </part>
 
   <part>
     <title>Packaging</title>
-    &packaging;
-    &packaging-ui;
+    <xi:include href="packaging.xml"/>
+    <xi:include href="packaging_ui.xml"/>
   </part>
 
   <part id="part_index">
     <title>Appendix</title>
-    &fdl-appendix;
     <index id="index_main">
       <title>Index</title>
     </index>
@@ -1842,7 +1704,7 @@ g_object_unref (eng);
     <index id="index-deprecated" role="deprecated">
       <title>Index of deprecated symbols</title>
     </index>
-    &fdl-appendix;
+    <xi:include href="fdl-appendix.sgml"/>
   </part>
 </book>
 
diff --git a/doc/C/limitations.xml b/doc/C/limitations.xml
index e510951..066a7a4 100644
--- a/doc/C/limitations.xml
+++ b/doc/C/limitations.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <chapter id="limitations">
   <title>Limitations</title>
 
diff --git a/doc/C/migration.xml b/doc/C/migration.xml
index f5e38d7..cdd17a8 100644
--- a/doc/C/migration.xml
+++ b/doc/C/migration.xml
@@ -1,3 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
 <chapter id="migration-1">
   <title>Migration from 1.X versions</title>
   <sect1><title>GdaValue and GdaDataModel changes</title>
diff --git a/doc/C/migration2.xml b/doc/C/migration2.xml
index 9db3d90..a1a893c 100644
--- a/doc/C/migration2.xml
+++ b/doc/C/migration2.xml
@@ -1,4 +1,9 @@
-<chapter id="migration-2">
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="migration-2" xmlns:xi="http://www.w3.org/2003/XInclude";>
   <title>Migration from 3.X versions</title>
   <sect1><title>Overview</title>
     <para>Version 4.0 of &LIBGDA; is a major rework of the library for the following benefits:
diff --git a/doc/C/packaging.xml b/doc/C/packaging.xml
index b6e128e..ba79090 100644
--- a/doc/C/packaging.xml
+++ b/doc/C/packaging.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <chapter id="libgda-packaging">
   <title>Packaging &LIBGDA;</title>
   <para>
diff --git a/doc/C/packaging_ui.xml b/doc/C/packaging_ui.xml
index ba9a941..3683eda 100644
--- a/doc/C/packaging_ui.xml
+++ b/doc/C/packaging_ui.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <chapter id="libgdaui-packaging">
   <title>Packaging &LIBGDA; UI extension</title>
   <para>
diff --git a/doc/C/prov-notes.xml b/doc/C/prov-notes.xml
index 91f1292..9fda183 100644
--- a/doc/C/prov-notes.xml
+++ b/doc/C/prov-notes.xml
@@ -1,3 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
 <chapter id="provider-notes">
   <title>Provider's notes</title>
 
diff --git a/doc/C/prov-writing-assembly.xml b/doc/C/prov-writing-assembly.xml
new file mode 100644
index 0000000..cdb37c7
--- /dev/null
+++ b/doc/C/prov-writing-assembly.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="libgda-provider-pack">
+  <title>Assembling all the parts</title>
+  <para>
+    A database provider is in fact a shared library which is loaded when &LIBGDA; is initialized. The skeleton implementations
+    in <filename class="directory">providers/skel-implementation</filename> propose the following files layout (some of the files
+    are not required for virtual providers).
+  </para>
+  <para> Of course this files layout is not required, but make it easy for maintenance. In the following list,
+    the filenames here are the one for the "Capi" provider, and each provider should rename them:
+    <itemizedlist>
+      <listitem><para><filename>gda-capi.h</filename>: contains the provider name, the include files necessary to use the API and the
+	  declaration of the provider's specific connection data</para></listitem>
+      <listitem><para><filename>gda-capi-provider.[ch]</filename>: are the header and implementation files for the object
+	  inheriting the <link linkend="GdaServerProvider">GdaServerProvider</link> object. This object must implement its
+	  <link linkend="libgda-provider-class">virtual methods</link>.</para></listitem>
+      <listitem><para><filename>gda-capi-recordset.[ch]</filename>: are the header and implementation files for the object
+	  inheriting the <link linkend="GdaDataSelect">GdaDataSelect</link> object. This object must implement its
+	  <link linkend="libgda-provider-recordset">virtual methods</link>.</para></listitem>
+      <listitem><para><filename>gda-capi-ddl.[ch]</filename>: are the files implementing the DDL queries</para></listitem>
+      <listitem><para><filename>gda-capi-parser.[ch]</filename>: are the header and implementation files 
+	  for the object implementing a specific parser,
+	  inheriting <link linkend="GdaSqlParser">GdaSqlParser</link>, see the PostgreSQL provider's implementation for 
+	  example.</para></listitem>
+      <listitem><para><filename>gda-capi-pstmt.[ch]</filename>: are the header and implementation files for the object
+      representing prepared statement and inheriting <link linkend="GdaPStmt">GdaPStmt</link></para></listitem>
+      <listitem><para><filename>gda-capi-blob-op.[ch]</filename>: are the header and implementation files for the object
+	  inheriting the <link linkend="GdaBlobOp">GdaBlopOp</link> object. This object must implement its
+	  <link linkend="libgda-provider-blobop">virtual methods</link>.</para></listitem>
+      <listitem><para><filename>gda-capi-meta.[ch]</filename>: are the files where the meta-data information extraction
+      is implemented.</para></listitem>
+      <listitem><para><filename>libmain.c</filename>: file to make it possible for &LIBGDA; to identify the provider.</para></listitem>
+      <listitem><para><filename>capi_specs_dsn.xml.in</filename>: file where the connection parameters are described, 
+	  before being translated</para></listitem>
+      <listitem><para><filename>libgda-capi-5.0.pc.in</filename>: file to be used by <command>pkg-config</command> to identify
+	  the provider, before being computed by the <command>configure</command> script.</para></listitem>
+      <listitem><para>other .xml.in files: DDL queries' parameters, before translation</para></listitem>
+    </itemizedlist>
+  </para>
+
+  <sect1>
+    <title>libmain.c</title>
+    <para>
+      Once the shared library implementing the provider is loaded (and
+      all the necessary dependencies are also loaded), &LIBGDA; tries to locate some functions to identify the provider (if any of
+      these function is missing, then the DLL is unloaded and the provider is not availaibe).
+    </para>
+    <para>
+      The skeleton implementations in <filename class="directory">providers/skel-implementation</filename> propose to implement those
+      functions in a <filename>libmain.c</filename> file. The functions are the following ones:
+    </para>
+    <sect2>
+      <title>plugin_init()</title>
+      <para>This function initializes the plugin; it has a single argument which is the path where the provider is.
+	As the module can be unloaded, any static data allocated here must be freed when the module is unloaded,
+	in a <link linkend="GModuleUnload">g_module_unload()</link> function. If the module must not be
+	unloaded, it must be made resident using <link linkend="g-module-make-resident">g_module_make_resident()</link>, 
+	in a <link linkend="GModuleCheckInit">g_module_check_init()</link> function</para>
+      <para>Note that after a <link linkend="GdaServerProvider">GdaServerProvider</link> object has been 
+	created (ie after plugin_create_provider() has
+	been called once), the module will not be unloaded anymore.</para>
+    </sect2>
+    <sect2>
+      <title>plugin_get_name()</title>
+      <para>This funtion returns the name of the provider, it <emphasis>must</emphasis> return the same string as what the
+	<link linkend="prov-get-name">get_name()</link>'s provider's virtual method returns.</para>
+    </sect2>
+    <sect2>
+      <title>plugin_get_description()</title>
+      <para>This funtion returns a description of the provider.</para>
+    </sect2>
+    <sect2>
+      <title>plugin_get_dsn_spec()</title>
+      <para>This function returns a description of the parameters which have or can be set when opening a connection. This
+	description uses an XML syntax and is usually stored in a separate XML file (for easier translation).</para>
+      <para>Here is an example, when only one "DB_NAME" parameter is required:
+	<programlisting>
+&lt;?xml version="1.0"?&gt;
+&lt;data-set-spec&gt;
+  &lt;parameters&gt;
+    &lt;parameter id="DB_NAME" _name="Database name" _descr="The name of a database to use" gdatype="gchararray" nullok="FALSE"/&gt;
+  &lt;/parameters&gt;
+&lt;/data-set-spec&gt;
+	</programlisting>
+	Note that the the attributes which have a name starting with an underscore should be translated (see the
+	<filename>Makefile.am</filename> file for some example on ho this is done).
+      </para>
+    </sect2>
+    <sect2>
+      <title>plugin_get_auth_spec()</title>
+      <para>
+	This function returns a description of the authentication information required by the provider. If the
+	only information is a username/password pair, then it is not necessary to implement that function.
+      </para>
+      <para>
+	However, if a username is required, then it must be name "USERNAME", and if a password is required,
+	it must be named "PASSWORD".
+      </para>
+    </sect2>
+    <sect2>
+      <title>plugin_create_provider()</title>
+      <para>This function actually instantiates a provider object and returns it.</para>
+    </sect2>
+  </sect1>
+
+</chapter>
diff --git a/doc/C/prov-writing-blobs.xml b/doc/C/prov-writing-blobs.xml
new file mode 100644
index 0000000..25808cf
--- /dev/null
+++ b/doc/C/prov-writing-blobs.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="libgda-provider-blobop">
+  <title>Virtual methods for Blob operations</title>
+  <para>
+    Blobs are a special feature of databases because they allow one to access the contents of a "cell" from the
+    API without using SQL (usually no SQL can be used to manipulate a blob's contents: an SQL statement is used to
+    create, delete or retrieve a blob, but the contents is accessed through the API).
+  </para>
+  <para>
+    &LIBGDA; encapsulates all blob operations in objects which must be implemented by each provider if they want to support
+    blobs; otherwise binary data may still be used if supported by the database, but the whole binary data is transferred in
+    the SQL statement which is not suitable for large data.
+  </para>
+  <para>
+    &LIBGDA; defines <link linkend="GdaBlop">GdaBlob</link> structure which is an extension of the
+    <link linkend="GdaBinary">GdaBinary</link> structure (which contains a pointer to some data and the size of the pointed
+    data). The extension simply adds a pointer to a <link linkend="GdaBlopOp">GdaBlobOp</link> object which has
+    to be implemented by each provider which supports blobs. The following documents the
+    <link linkend="GdaBlopOp">GdaBlobOp</link>'s virtual methods which actually implement the reading from and
+    writing to a blob contained in the database.
+  </para>
+  <para>
+    When reading from a blob in the database or writing to a blob in the database, data read or written is the stored in
+    the <link linkend="GdaBinary">GdaBinary</link> part of the <link linkend="GdaBlopOp">GdaBlobOp</link>.
+  </para>
+  <sect2>
+    <title>get_length()</title>
+    <para>
+      This method returns the total length of a blob in bytes. In case of error, -1 is returned and the
+      provider should have added an error (a <link linkend="GdaConnectionEvent">GdaConnectionEvent</link>) to the connection.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>read()</title>
+    <para>
+      This method requests that some data be read from the blob. The data read must be stored in the
+      <link linkend="GdaBinary">GdaBinary</link> part of the <parameter>blob</parameter> parameter. The data to read is
+      the data starting at the <parameter>offset</parameter> offset from the beginning of the blob, and
+      of the <parameter>size</parameter> length.
+    </para>
+    <para>
+      Note that in this method, the <structfield>op</structfield> attribute of the <parameter>blob</parameter>
+      parameter is not used.
+    </para>
+    <para>
+      The returned value is the number of bytes read, or -1 if an error
+      occured (then the provider should have added an error to the connection).
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>write()</title>
+    <para>
+      This method requests the some data be written to the blob. The data has to be written
+      in the blob starting at the <parameter>offset</parameter> offset from the beginning of the blob.
+    </para>
+    <para>
+      If the <structfield>op</structfield> attribute of the <parameter>blob</parameter> parameter is not NULL and is different
+      than the <parameter>op</parameter>, then the data to be written is the complete contents of the data stored in the
+      blob represented by the <structfield>op</structfield> attribute of the <parameter>blob</parameter> parameter. Otherwise
+      The data to be written is stored in the
+      <link linkend="GdaBinary">GdaBinary</link> part of the <parameter>blob</parameter>.
+    </para>
+    <para>
+      The returned value is the number of bytes written, or -1 if an error
+      occured (then the provider should have added an error to the connection).
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>write_all()</title>
+    <para>
+      This method requests that all the contents of the blob be replaced by some data (if necessary the
+      blob is truncated from its previous length). The data to be written is the same as for the write() method, and
+      the returned value is also the same.
+    </para>
+    <para>
+      If this virtual method is not implemented, then the write() virtual method is used with an <parameter>offset</parameter>
+      parameter of 0.
+    </para>
+  </sect2>
+</chapter>
diff --git a/doc/C/prov-writing-parser.xml b/doc/C/prov-writing-parser.xml
new file mode 100644
index 0000000..3fe1e0e
--- /dev/null
+++ b/doc/C/prov-writing-parser.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="libgda-provider-parser" xmlns:xi="http://www.w3.org/2003/XInclude";>
+  <title>SQL parser</title>
+  <para>
+    &LIBGDA; implements a generic SQL parser which creates <link linkend="GdaStatement">GdaStatement</link> objects from
+    an SQL string. If the database provider needs to implement its own parser because the generic one does not handle
+    the database specific SQL syntax, it can be done using instructions in this chapter. Otherwise, the provider's sources
+    can be cleared of any code related to the parser.
+  </para>
+  <sect1>
+    <title>Implementation overview</title>
+    <para>
+      This section describes how the generic SQL parser and a provider specific parser are built regarding the files
+      and programs which are involved.
+    </para>
+    <sect2>
+      <title>Generic SQL parser</title>
+      <para>
+	The <link linkend="GdaSqlParser">GdaSqlParser</link> object can parse any SQL string of any SQL dialect,
+	while always identifying the variables (which have a &LIBGDA;'s specific syntax) in the string. If the parser
+	can identify a structure in the SQL string it understands, then it internally builds a
+	<link linkend="GdaSqlStatement">GdaSqlStatement</link> structure of the correct type, and if it cannot then is simply
+	delimits parts in the SQL string to identify variables and also builds a
+	<link linkend="GdaSqlStatement">GdaSqlStatement</link> structure but of 
+	<link linkend="GDA-SQL-STATEMENT-UNKNOWN:CAPS">GDA_SQL_STATEMENT_UNKNOWN</link>. If the string
+	cannot be delimited and variables identified, then it returns an error (usually there is a quotes mismatch problem
+	within the SQL string).
+      </para>
+      <para>
+	Failing to identify a known structure in the SQL string can have several reasons:
+	<itemizedlist>
+	   <listitem><para>the SQL string is not one of the known types of statements (see 
+	       <link linkend="GdaSqlStatementType">GdaSqlStatementType</link>)</para></listitem>
+	   <listitem><para>the SQL uses some database specific extensions</para></listitem>
+	</itemizedlist>
+      </para>
+      <para>
+	The generic SQL parser implementation has its source files in the 
+	<filename class="directory">libgda/sql-parser</filename> directory; the files which actually implement
+	the parser itself are the <filename>parser.y</filename>, <filename>delimiter.y</filename> and
+	 <filename>parser_tokens.h</filename> files:
+	 <itemizedlist>
+	   <listitem><para>The <filename>parser.y</filename> file contains the grammar used by the parser</para></listitem>
+	   <listitem><para>The <filename>delimiter.y</filename> file contains the grammar used by the parser when it 
+	       is operating as a delimiter</para></listitem>
+	   <listitem><para>The <filename>parser_tokens.h</filename> defines some hard coded tokens</para></listitem>
+	 </itemizedlist>
+      </para>
+      <para>
+	The parser grammar files use the <ulink url="http://www.hwaci.com/sw/lemon/";>Lemon parser generator</ulink> syntax
+	which is a LALR parser similar to <application>YACC</application> or <application>bison</application>. The lexer part
+	however is not <application>LEX</application> but is a custom one integrated in the
+	<filename>gda-sql-parser.c</filename> file (this allows a better integration between the lexer and parser parts).
+      </para>
+      <para>
+	The following figure illustrates the files involved and how they are produced and used to create
+	the generic SQL parser.
+	<mediaobject>
+          <imageobject role="html">
+            <imagedata fileref="parser_gen.png" format="PNG"/>
+          </imageobject>
+          <textobject> 
+            <phrase>Generic SQL parser's implementation</phrase>
+          </textobject>
+	</mediaobject>
+	<itemizedlist>
+	   <listitem><para>The white background indicate files which are sources
+	       (part of &LIBGDA;'s distribution)</para></listitem>
+	   <listitem><para>The blue background indicate files that they are produced dynamically</para></listitem>
+	   <listitem><para>The pink background indicate programs that are compiled and used themselves in
+	       the compilation process to generate files. These programs are:
+	       <itemizedlist>
+		 <listitem><para><application>lemon</application>: the lemon parser itself</para></listitem>
+		 <listitem><para><application>gen_def</application>: generated the "converters" arrays (see blow)</para>
+		 </listitem>
+	       </itemizedlist>
+	       Note that none of these programs gets installed (and when cross compiling, they are compiled as programs
+	       executing on the host actually making the compilation).
+	   </para></listitem>
+	   <listitem><para>The green background identifies components which are reused when implementing provider specific
+	       parsers</para></listitem>
+	 </itemizedlist>
+      </para>
+      <para>
+	The tokenizer (AKA lexer) generates values identified by the "L_" prefix (for example "L_BEGIN"). Because
+	the GdaSqlParser object uses the same lexer with at least two different parsers (namely the parser and delimiter
+	mentioned earlier), and because the Lemon parser generator generates its own value identifiers for tokens, there
+	is a conversion step (the "converter" block in the diagram) which converts the "L_" prefixed tokens with the ones
+	usable by each parser (both converters are defined as arrays in the <filename>token_types.h</filename> file.
+      </para>
+    </sect2>
+    <sect2>
+      <title>Provider specific SQL parser</title>
+      <para>
+	One wants to write a database specific SQL parser when:
+	<itemizedlist>
+	  <listitem><para>the SQL understood by the database differs from the generic SQL. For example
+	      PostgreSQL associates priorities to the compound statement in a different way as the generic SQL.
+	      In this case it is strongly recommended to write a custom SQL parser</para></listitem>
+	  <listitem><para>the SQL understood by the database has specific extensions</para></listitem>
+	</itemizedlist>
+      </para>
+      <para>
+	Using the same background color conventions as the previous diagram, the following diagram illustrates
+	the files involved and how they are produced and used to create a provider specific SQL parser:
+      </para>
+      <para>
+	<mediaobject>
+          <imageobject role="html">
+            <imagedata fileref="parser_prov.png" format="PNG"/>
+          </imageobject>
+          <textobject> 
+            <phrase>Provider specific SQL parser's implementation</phrase>
+          </textobject>
+	</mediaobject>
+      </para>
+      <para>
+	The key differences are:
+	<itemizedlist>
+	  <listitem><para>The delimiter part of the <link linkend="GdaSqlParser">GdaSqlParser</link> object
+	      is the same as for the generic SQL parser implementation</para></listitem>
+	  <listitem><para>While the <application>lemon</application> program is the same as for the generic SQL parser,
+	      the <application>gen_def</application> is different, and takes as its input the ".h" file produced by
+	      the <application>lemon</application> program and the <filename>libgda/sql-parser/token_types.h</filename>.
+	  </para></listitem>
+	</itemizedlist>
+      </para>
+    </sect2>
+  </sect1>
+  <sect1>
+    <title>Tips to write a custom parser</title>
+    <para>
+      <itemizedlist>
+	<listitem><para>Write a new <filename>parser.y</filename> file (better to copy and adapt 
+	    it than starting from scratch)</para></listitem>
+	<listitem><para>Sub class the <link linkend="GdaSqlParser">GdaSqlParser</link> class and "connect" the
+	    class's virtual methods to the new generated parser</para></listitem>
+	<listitem><para>Start from the skeleton implementation</para></listitem>
+      </itemizedlist>
+    </para>
+  </sect1>
+  <xi:include href="xml/gda-sql-statement.xml"/>
+</chapter>
diff --git a/doc/C/prov-writing-recordsets.xml b/doc/C/prov-writing-recordsets.xml
new file mode 100644
index 0000000..04bbd40
--- /dev/null
+++ b/doc/C/prov-writing-recordsets.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="libgda-provider-recordset">
+  <title>Virtual methods for recordsets</title>
+  <para>
+    This section explains how to write virtual methods for the <link linkend="GdaDataSelect">GdaDataSelect</link> subclasses
+    implementations, which should be done when implementing a database provider.
+  </para>
+  <para>
+    That data model implementation simplifies the implementation of provider's recordsets by having them implement only a
+    few virtual methods, and offering some services.
+  </para>
+  <para>
+    The data model represents each row in a separate <link linkend="GdaRow">GdaRow</link> object, and virtual
+    methods to retrieve rows have to return new (and correctly initialized) objects of that class. The referencing
+    of these new objects is left up to the implementation which:
+    <itemizedlist>
+      <listitem>
+	<para>can rely on the <link linkend="GdaRow">GdaRow</link> implementation to keep them, using
+	  the <link linkend="gda-data-select-take-row">gda_data_select_take_row ()</link> method for each row object created which
+	  is the easiest, the fastest as once created, the rows are available for further usage, 
+	  but will consume more memory with each row read from the model.</para>
+      </listitem>
+      <listitem>
+	<para>can keep the references to these objects to the subclass implementation which will consume less memory but
+	  will make it necessary to create a new row object each time a row is read which is slower</para>
+      </listitem>
+      <listitem>
+	<para>can do a mix of the two solutions above: monitor the memory usage for the data model to 
+	  enable to "cache" some rows and discard some when memory is needed</para>
+      </listitem>
+    </itemizedlist>
+    Note that the methods mentioned in the 1st and 3rd items should be reserved for random data access mode, 
+    and that cursor based access mode should implement the method mentioned in th 2nd item.
+  </para>
+  <sect2>
+    <title>fetch_nb_rows()</title>
+    <para>
+      This method is called when the user calls <link linkend="gda-data-model-get-n-rows">gda_data_model_get_n_rows ()</link>.
+    </para>
+    <para>
+      Note that the number of rows of the data model may not be known until the cursor has reached the last row of
+      the recordset.
+      Once known, the number of rows can be stored in the <structfield>advertized_nrows</structfield>'s member of the
+      <link linkend="GdaDataSelect">GdaDataSelect</link> object.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>fetch_random()</title>
+    <para>
+      This method is called when the user calls <link linkend="gda-data-model-get-value-at">gda_data_model_get_value_at ()</link>,
+      and in available only when the data access mode for the data model is random (that is not cursor based). When data
+      access is cursor based, this method will not be called.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>store_all()</title>
+    <para>
+      This method is called when the user sets the "store-all-rows" to TRUE. It has the effect of forcing the creation
+      of a <link linkend="GdaRow">GdaRow</link> object for each row of the data model (thus increasing the memory consumption
+      but reducing further access times). It is available only when the data access mode for the data model is random 
+      (that is not cursor based). When data access is cursor based, this method will not be called.
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>fetch_next()</title>
+    <para>
+      This method is called when data access is cursor based and a data model iterator is moved one position forward. The
+      <parameter>rownum</parameter> is an indication of what the row number will be once the next row has been fetched (it can 
+      safely be discarded if that information is not necessary).
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>fetch_prev()</title>
+    <para>
+      This method is called when data access is cursor based and a data model iterator is moved one position backward. The
+      <parameter>rownum</parameter> is an indication of what the row number will be once the previous row has been fetched (it can 
+      safely be discarded if that information is not necessary).
+    </para>
+  </sect2>
+
+  <sect2>
+    <title>fetch_at()</title>
+    <para>
+      This method can be implemented when data access is cursor based and there is a shorter way of getting to a
+      specific row than having to call the fetch_next() or fetch_prev() methods several times.
+    </para>
+  </sect2>
+</chapter>
diff --git a/doc/C/prov-writing-virtual-methods.xml b/doc/C/prov-writing-virtual-methods.xml
new file mode 100644
index 0000000..9329dc0
--- /dev/null
+++ b/doc/C/prov-writing-virtual-methods.xml
@@ -0,0 +1,596 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<chapter id="libgda-provider-class">
+  <title>Virtual methods for providers</title>
+  <para>
+    Database providers usually (that is except for <emphasis>virtual</emphasis> providers explained later) subclass
+    the <link linkend="GdaServerProvider">GdaServerProvider</link> class and implement at least the mandatory
+    virtual methods.
+  </para>
+  <para>
+    Virtual providers are database providers when the database engine accessed does not support SQL (or
+    supports it poorly), such as Berkeley databases or MDB (or even LDAP). These provider's implementation's
+    design is to create <link linkend="GdaDataModel">GdaDataModel</link> data model objects and make
+    each of them appear as a named table once the connection is opened. For example the MDB provider creates
+    a read-only data model for each table in an MDB file and make it appear using the original table
+    name used in MS Access (the tables cannot be modified but it is possible to use all SQLite's SQL
+    to make SELECT queries).
+  </para>
+  <para>
+    Virtual providers inherit the <link linkend="GdaVproviderDataModel">GdaVproviderDataModel</link> class
+    and not the <link linkend="GdaServerProvider">GdaServerProvider</link> as "normal" providers do,
+    and the number of virtual methods to implement is very limited: only the <link linkend="prov-get-name">get_name()</link>,
+    <link linkend="prov-get-version">get_version()</link>, <link linkend="prov-get-server-version">get_server_version()</link>, 
+    <link linkend="prov-open-connection">open_connection()</link> and <link linkend="prov-get-database">get_database()</link>
+    should be implemented, optionnally the <link linkend="prov-close-connection">close_connection()</link> can
+    also be implemented.
+  </para>
+
+  <sect1>
+    <title>Synchronous / asynchronous mode</title>
+    <para>
+      All the provider's commands are executed in a synchronous mode (the caller is blocked until the provider's
+      method terminates). However some virtual methods have the a <parameter>task_id</parameter> parameter, 
+      an <parameter>async_cb</parameter> or <parameter>exec_cb</parameter> callback function pointer and 
+      a <parameter>cb_data</parameter> parameter which can be set when an asynchronous mode 
+      is required; asynchronous mode is requested if and only if the <parameter>async_cb</parameter> or
+      <parameter>exec_cb</parameter> parmeter is not NULL.
+    </para>
+    <para>
+      When an asynchronous mode is requested, the method should return TRUE if it returns a boolean or NULL if it returns a
+      pointer and set a task identifier
+      into the <parameter>task_id</parameter> parameter if not NULL. The task identifier is passed again when
+      the <parameter>async_cb</parameter> or <parameter>exec_cb</parameter> callback functions are called by the
+      provider when the execution is finished.
+    </para>
+    <para>
+      When the provider's method terminates, it then should call the function passed as <parameter>async_cb</parameter>
+      with the <parameter>cb_data</parameter> as last parameters.
+    </para>
+  </sect1>
+
+  <sect1>
+    <title>Multi threaded environment</title>
+    <para>
+      Each database provider should be usable in a multi threaded environment, even if they impose some restrictions
+      as to how they can be used in such an environment. The &LIBGDA;'s framework provides some locking mechanism which
+      is:
+      <itemizedlist>
+	<listitem><para>if multi threading cannot be supported at all (for example if the client library internally
+	    used by the provider does not support it), then  the provider's
+	    class implementation should set the class's <structfield>limiting_thread</structfield> attribute to:
+	    the GDA_SERVER_PROVIDER_UNDEFINED_LIMITING_THREAD constant.
+	    This constant will be resolved at run time as the thread which creates the 1st connection using that
+	    provider.</para>
+	</listitem>
+	<listitem><para>if multi threading is supported but any connection (or related object) can only be 
+	    used by the thread in which it was created, then for each opened connection, the 
+	    &quot;<link linkend="GdaConnection--thread-owner">thread-owner</link>&quot; connection's property
+	    must be set to the current thread (and other related objects must be locked in a similar way)</para>
+	</listitem>
+	<listitem><para>if no locking is done, then the provider is assumed to support full multi threading access,
+	  in this case make sure to set class's <structfield>limiting_thread</structfield> attribute to the NULL constant.</para>
+	</listitem>
+      </itemizedlist>
+    </para>
+    <para>
+      Note that the default provider's class value for the <structfield>limiting_thread</structfield> is safely set to the
+      GDA_SERVER_PROVIDER_UNDEFINED_LIMITING_THREAD constant.
+    </para>
+  </sect1>
+
+  <sect1>
+    <title>Methods - provider's information</title>
+    <sect2 id="prov-get-name">
+      <title>get_name() - mandatory</title>
+      <para>This method returns the name of the provider; it should only contain alphanumeric characters.</para>
+    </sect2>
+    <sect2 id="prov-get-version">
+      <title>get_version() - mandatory</title>
+      <para>This method returns the version of the provider (providers built as part of &LIBGDA; have the same
+	version as &LIBGDA;).</para>
+    </sect2>
+    <sect2 id="prov-get-server-version">
+      <title>get_server_version() - mandatory</title>
+      <para>This method returns the version of the database server to which a connection is opened</para>
+    </sect2>
+    <sect2>
+      <title>supports_feature()</title>
+      <para>This method allows one to ask the provider if some specific features are available</para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - connection management</title>
+    <sect2 id="prov-open-connection">
+      <title>open_connection() - mandatory</title>
+      <para>
+	This method actually opens a connection to the database.
+      </para>
+      <para>
+	Any data specific to the connection (such as 
+	a database handle created by the database API when opening the connection) must be stored in a private structure
+	(which should be defined in the <filename>gda-&lt;providername&gt;.h</filename> file as a 
+	<classname>&lt;Providername&gt;ConnectionData</classname>); this private structure's adress should be
+	"attached" to the <link linkend="GdaConnection">GdaConnection</link> object using the
+	<link linkend="gda-connection-internal-set-provider-data">gda_connection_internal_set_provider_data()</link>.
+      </para>
+    </sect2>
+    <sect2 id="prov-close-connection">
+      <title>close_connection() - mandatory</title>
+      <para>
+	This method actually closes a connection previously opened by the 
+	<link linkend="prov-open-connection">open_connection()</link> virtual method. This method is not mandatory for
+	virtual providers.
+      </para>
+      <para>
+	The connection specific data for the database API can be retrieved using the
+	<link linkend="gda-connection-internal-get-provider-data">gda_connection_internal_get_provider_data()</link> method.
+      </para>
+    </sect2>
+    <sect2>
+      <title>get_database()</title>
+      <para>This method returns the name of the database to which a connection is opened.</para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - DDL queries</title>
+    <para>
+      This group of virtual methods is composed of virtual methods which make it possible to handle DDL (data definition) queries
+      to be executed using descriptions of the data required for each kind of DDL query, rather than using SQL directly (because
+      DDL SQL is usually very database specific and must thus be adapted when migrating to another database type). For more
+      information, see the <link linkend="DDLIntro">global introduction to DDL queries</link>.
+    </para>
+    <para>
+      Implementing these methods is not mandatory, and virtual provider's implementation should not implement them.
+    </para>
+    <sect2>
+      <title>supports_operation()</title>
+      <para>
+	This virtual method tells if a particular DDL query type is supported (DDL query types are identified as 
+      <link linkend="GdaServerOperationType">GdaServerOperationType</link> enums).
+      </para>
+    </sect2>
+    <sect2>
+      <title>create_operation()</title>
+      <para>
+	This virtual method is used to create and initialize a <link linkend="GdaServerOperation">GdaServerOperation</link>
+	object.
+      </para>
+    </sect2>
+    <sect2>
+      <title>render_operation()</title>
+      <para>
+	This virtual method uses the information stored in a <link linkend="GdaServerOperation">GdaServerOperation</link> object
+	to create the SQL statement(s) which would be executed if the operation was performed.
+      </para>
+      <para>
+	Note: more than one SQL statement may be returned by this method
+      </para>
+      <para>
+	Note: some operations don't return any SQL at all, if the operation can only be done using an API (and not through SQL)
+      </para>
+    </sect2>
+    <sect2>
+      <title>perform_operation()</title>
+      <para>
+	This virtual method "performs" (execute) a <link linkend="GdaServerOperation">GdaServerOperation</link> object.
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - transactions management</title>
+    <para>
+      When a connection has been opened and no transaction has been started, then the provider should execute queries in
+      auto commit mode.
+    </para>
+    <sect2>
+      <title>begin_transaction()</title>
+      <para>
+	This method starts a new transaction.
+      </para>
+    </sect2>
+    <sect2>
+      <title>commit_transaction()</title>
+      <para>
+	This method commits the current transaction.
+      </para>
+    </sect2>
+    <sect2>
+      <title>rollback_transaction()</title>
+      <para>
+	This method cancels the current transaction.
+      </para>
+    </sect2>
+    <sect2>
+      <title>add_savepoint()</title>
+      <para>
+	This method adds a save point to the current transaction, which allows for partial rollbacks within transactions.
+      </para>
+    </sect2>
+    <sect2>
+      <title>rollback_savepoint()</title>
+      <para>
+	This method rolls back to a previously defined save point within the current transaction.
+      </para>
+    </sect2>
+    <sect2>
+      <title>delete_savepoint()</title>
+      <para>
+	This method deletes a previously defined save point within the current transaction, it does not affect the
+	transaction but it simply won't be possible to roll back to the savepoint afterwards.
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - DML queries</title>
+    <para>
+      This group of virtual methods is related to executing SQL queries of any kind. &LIBGDA; imposes that SQL
+      statements be converted to one or more <link linkend="GdaStatement">GdaStatement</link> object(s), each
+      GdaStatement object containing exactly one SQL statement (usually terminated
+      by a semi colon). Each GdaStatement can then be prepared and/or executed individually.
+    </para>
+    <para>
+      Creating a <link linkend="GdaStatement">GdaStatement</link> object from some SQL is the job of a
+      <link linkend="GdaSqlParser">GdaSqlParser</link> object.
+    </para>
+    <sect2>
+      <title>create_parser()</title>
+      <para>
+	This method instantiates a <link linkend="GdaSqlParser">GdaSqlParser</link> object which is
+	adapted to the database's specific SQL dialect. If the provider does not implement its own parser,
+	then this method should not be implemented.
+      </para>
+    </sect2>
+    <sect2>
+      <title>statement_to_sql()</title>
+      <para>
+	This method converts a <link linkend="GdaStatement">GdaStatement</link> object to its SQL representation. It should be
+	implemented only if the default rendering is incorrect (to support some SQL specific dialect). The rendering process
+	is decomposed into several rendering methods, and it is possible to override only some of the methods (see the
+	PostgreSQL's implementation as an example).
+      </para>
+    </sect2>
+    <sect2>
+      <title>statement_prepare()</title>
+      <para>
+	This method requests that a <link linkend="GdaStatement">GdaStatement</link> object be prepared for a future execution.
+	It is called when <link linkend="gda-connection-statement-prepare">gda_connection_statement_prepare()</link> is called.
+      </para>
+    </sect2>
+    <sect2>
+      <title>statement_execute() - mandatory</title>
+      <para>
+	This method actually executes a query represented by a <link linkend="GdaStatement">GdaStatement</link> object. See
+	<link linkend="gda-connection-statement-execute">gda_connection_statement_execute()</link> for more information, note that
+	this method is also always the one called when any of the gda_connection_statement_execute*() methods are called.
+      </para>
+      <para>
+	A non NULL <parameter>exec_cb</parameter> parameter specifies that the user requests an asynchronous execution: the
+	function has to return the NULL value immediately (it must not be blocking), and the <parameter>task_id</parameter>
+	parameter must be set to contain a provider specific task ID.
+	The <parameter>exec_cb</parameter> parameter points to a callback function (specified by the
+	<link linkend="GdaConnection">GdaConnection</link>) which the provider has to call once the statement has been
+	executed, using the same task ID which was defined when the statement_execute() function was called, and
+	the <parameter>cb_data</parameter> specified when the statement_execute() function was called.
+      </para>
+      <para>
+	Note that if an asynchronous execution is requested, then the <parameter>stmt</parameter>, <parameter>params</parameter>,
+	<parameter>col_types</parameter>, <parameter>last_inserted_row</parameter>, and <parameter>cb_data</parameter>
+	parameters are supposed to exist and not be altered during the time the statement is executed (the
+	<link linkend="GdaConnection">GdaConnection</link> ensures this) which means it's not necessary to make copies
+	of them during the execution.
+      </para>
+    </sect2>
+    <sect2>
+      <title>handle_async()</title>
+      <para>
+	This method, if implemented, is called to give the database provider a chance to execute some code in case an
+	asynchronous statement's execution has been requested. Often providers will send some data over the network to the
+	database server when the statement_execute() is called, and implement this virtual function as a way to get
+	some data from the database server to see if the execution is terminated.
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - data representation</title>
+    <para>
+      This group of virtual methods is related to converting some data between the three representations which are the 
+      SQL representation (to be directly included in a SQL statement), the human readable representation, and the 
+      <link linkend="GValue">GValue</link> representation. For each type of data (identified as a 
+      <link linkend="GType">GType</link> type) which the provider can handle, a <link linkend="GdaDataHandler">GdaDataHandler</link>
+      object is responsible of the conversions.
+    </para>
+    <sect2>
+      <title>get_data_handler()</title>
+      <para>
+	This method returns a <link linkend="GdaDataHandler">GdaDataHandler</link> for the requested data type. It should
+	only instantiate each <link linkend="GdaDataHandler">GdaDataHandler</link> once and reuse it if the same request happens 
+	(the returned object will not be modified).
+      </para>
+      <para>
+	This method is called by both
+	<link linkend="gda-server-provider-get-data-handler-g-type">gda_server_provider_get_data_handler_g_type()</link> and
+	<link linkend="gda-server-provider-get-data-handler-dbms">gda_server_provider_get_data_handler_dbms()</link> methods.
+      </para>
+    </sect2>
+    <sect2>
+      <title>get_def_dbms_type()</title>
+      <para>
+	This method returns the name of the most common (database specific) data type which has the requested type.
+      </para>
+    </sect2>
+    <sect2>
+      <title>escape_string()</title>
+      <para>
+	This method adds escape characters to a string, to be able to safely add it into an SQL statement.
+      </para>
+    </sect2>
+    <sect2>
+      <title>unescape_string()</title>
+      <para>
+	This method does the reverse of the escape_string() method.
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1 id="prov-metadata">
+    <title>Methods - metadata</title>
+    <para>
+      The <link linkend="GdaServerProviderMeta">GdaServerProviderMeta</link> structure defines all the methods
+      which database providers must implement for the meta data extraction feature to work. Each method is
+      used internally by the <link linkend="GdaConnection">GdaConnection</link> object when one calls the
+      <link linkend="gda-connection-update-meta-store">gda_connection_update_meta_store()</link> method (where the
+      connection object itself computes the list and order of methods to call).
+      Each method must update the contents of one table in the connection's associated metadata
+      (in its associated <link linkend="GdaMetaStore">GdaMetaStore</link> object), each has the same
+      "base" arguments and some have extra arguments further specifying what needs to be updated. 
+    </para>
+    <para>
+      For each table to update, there are two methods, which differ in their name only by the fact that one is starting 
+      with an underscore '_'. The method starting with an underscore must update the whole contents of the meta data
+      table, and the other one must accept some more parameters to refine what gets updated. There are exception 
+      to this rule (such as the
+      "tables_views()" method which must update both the <link linkend="is:_tables">"_tables"</link> and 
+      <link linkend="is:_views">"_views"</link> tables, or the for the
+      tables which have no foreign key (no dependency) to any other table).
+    </para>
+    <para> 
+      Also, by convetion, the arguments can't be NULL unless the argument name has the "_n" suffix. For example
+      the signature of the "tables_views()" method has the following signature (as defined in the 
+      <filename>gda-server-provider.h</filename> file) 
+      <programlisting>
+gboolean (*tables_views) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                          GdaMetaContext *, GError **,
+                          const GValue *table_catalog, const GValue *table_schema, 
+                          const GValue *table_name_n);
+      </programlisting>
+      which means that the <parameter>table_catalog</parameter> and <parameter>table_schema</parameter>
+      arguments can't be NULL, whereas the <parameter>table_name</parameter> can be NULL (and in this case the 
+      "tables_views()" method must update the <link linkend="is:_tables">"_tables"</link> and 
+      <link linkend="is:_views">"_views"</link> tables regarding all the tables which
+      are in the specified catalog and schema.
+    </para>
+    <para>
+      Make sure you read the information about the meta data's database structure in the
+      <link linkend="information_schema">Database structure</link>, and specifically the
+      <link linkend="information_schema:data_types">data types</link> section and the 
+      <link linkend="information_schema:sql_identifiers">SQL identifiers</link> section.
+    </para>
+    <sect2>
+      <title>Important note about SQL identifiers</title>
+      <para>
+	As mentioned in the <link linkend="information_schema:sql_identifiers">SQL identifiers</link> section,
+	any SQL identifier in the meta store is represented either:
+	<itemizedlist>
+	  <listitem><para>between double quotes if the SQL identifier is case sensitive</para></listitem>
+	  <listitem><para>all in lower case if the SQL identifier is not case sensitive</para></listitem>
+	</itemizedlist>
+      </para>
+      <para>
+	For database engines which internally store case insensitive SQL identifiers in lower case
+	(such as PostgreSQL),
+	the meta data reported by the database engine can be used almost AS IS, but for database
+	engines which internally store case insensitive SQL identifiers in upper case (such as Oracle),
+	the upper case needs to be converted to lower case. Also case sensitive SQL identifiers also need
+	to be double quoted.
+      </para>
+      <para>
+	To minimize the work required to implement a database provider, &LIBGDA; allows the database
+	provider to specifiy how case insensitive SQL identifiers are represented using 
+	<link linkend="gda-meta-store-set-identifiers-style">gda_meta_store_set_identifiers_style()</link>
+	and the <link linkend="GdaMetaStore">GdaMetaStore</link> object will perform the work itself (the
+	default being GDA_SQL_IDENTIFIERS_LOWER_CASE in <link linkend="GdaSqlIdentifierStyle">GdaSqlIdentifierStyle</link>.
+      </para>
+      <para>
+	Also note that the extra arguments for each virtual method listed below, when they are present
+	and when they represent an SQL identifier, will be represented:
+	<itemizedlist>
+	  <listitem><para>for case insensitive SQL identifiers: using all lower or all upper case (depending on the setting
+	      set using <link linkend="gda-meta-store-set-identifiers-style">gda_meta_store_set_identifiers_style()</link>
+	  </para></listitem>
+	  <listitem><para>for case sensitive SQL identifiers: without the double quotes, but possibily with
+	      mixed or not lower and upper characters</para></listitem>
+	</itemizedlist>
+      </para>
+    </sect2>
+    <sect2>
+      <title>Reserved SQL keywords</title>
+      <para>
+	Every database engine reserves some keywords for its own usage or because they are part of the SQL
+	language. Reserved keywords can be used as SQL identifiers if they are put between double quotes.
+      </para>
+      <para>
+	As Each database engine has its own set of reserved keywords, the database provider has to tell the
+	<link linkend="GdaMetaStore">GdaMetaStore</link> object what its keywords are, which is done using
+	<link linkend="gda-meta-store-set-reserved-keywords-func">gda_meta_store_set_reserved_keywords_func()</link>
+	and passing a function which determines if a specific string is a reserved keyword. The usage of
+	this function is similar to the usage of the
+	<link linkend="gda-meta-store-set-identifiers-style">gda_meta_store_set_identifiers_style()</link>
+	mentioned above.
+      </para>
+      <para>
+	Writing a function which tests if a string is a reserved keyword is a non complicated but error
+	prone and not optimized, in the same way as writing a parser/lexer directly, so &LIBGDA; has a tool
+	which generates a static hash table from a list of reserved keywords, which is in the
+	<filename>keywords.list</filename> (several keywords can appear on the same line, separated by spaces or commas
+	but the last line must remain empty).
+      </para>
+    </sect2>
+    <sect2>
+      <title>_info()</title>
+      <para>
+	<programlisting>
+gboolean (*_info) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                   GdaMetaContext *, GError **);
+	</programlisting>
+	This method must update the contents of the 
+	<link linkend="is:_information_schema_catalog_name">"_information_schema_catalog_name"</link>
+	table, which must contain exactly
+	one row describing the catalog name for the connection.
+      </para>
+    </sect2>
+    
+    <sect2>
+      <title>_btypes()</title>
+      <para>
+	<programlisting>
+gboolean (*_btypes) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                     GdaMetaContext *, GError **);
+	</programlisting>
+	This method must update the contents of the <link linkend="is:_builtin_data_types">"_builtin_data_types"</link>
+	table which lists all the
+	database's built in data types. There is no specific parameter.
+      </para>
+    </sect2>
+    
+    <sect2>
+      <title>schemata() and _schemata()</title>
+      <para>
+	<programlisting>
+gboolean (*_schemata) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                       GdaMetaContext *, GError **);
+gboolean (*schemata)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                       GdaMetaContext *, GError **,
+                       const GValue *catalog_name, const GValue *schema_name_n);
+	</programlisting>
+        This method must update the contents of the <link linkend="is:_schemata">"_schemata"</link> table, 
+	which lists all the schemas (namespaces). 
+      </para>
+    </sect2>
+    <sect2>
+      <title>tables_views() and _tables_views()</title>
+      <para>
+	<programlisting>
+gboolean (*_tables_views) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                           GdaMetaContext *, GError **);
+gboolean (*tables_views)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                           GdaMetaContext *, GError **,
+                           const GValue *table_catalog, const GValue *table_schema, 
+                           const GValue *table_name_n);
+	</programlisting>
+	This method must update the contents of the <link linkend="is:_tables">"_tables"</link> and 
+	<link linkend="is:_views">"_views"</link> tables which list all the
+	tables and views.
+      </para>
+    </sect2>
+
+    <sect2>
+      <title>columns() and _columns()</title>
+      <para>
+	<programlisting>
+gboolean (*_columns) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                      GdaMetaContext *, GError **);
+gboolean (*columns)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                      GdaMetaContext *, GError **,
+                      const GValue *table_catalog, const GValue *table_schema, 
+                      const GValue *table_name);
+	</programlisting>
+	This method must update the contents of the <link linkend="is:_columns">"_columns"</link> table which lists all the
+	columns of all the tables and views.
+      </para>
+    </sect2>
+
+    <sect2>
+      <title>constraints_tab() and _constraints_tab()</title>
+      <para>
+	<programlisting>
+gboolean (*_constraints_tab) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                              GdaMetaContext *, GError **);
+gboolean (*constraints_tab)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                              GdaMetaContext *, GError **,
+                              const GValue *table_catalog, const GValue *table_schema, 
+                              const GValue *table_name, const GValue *constraint_name_n);
+	</programlisting>
+	This method must update the contents of the <link linkend="is:_table_constraints">"_table_constraints"</link>
+	table which lists all the
+	constraints (primary key, foreign key, unique or check constraints) for each table.
+      </para>
+    </sect2>
+
+    <sect2>
+      <title>constraints_ref() and _constraints_ref()</title>
+      <para>
+	<programlisting>
+gboolean (*_constraints_ref) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                              GdaMetaContext *, GError **);
+gboolean (*constraints_ref)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                              GdaMetaContext *, GError **,
+                              const GValue *table_catalog, const GValue *table_schema, 
+                              const GValue *table_name, const GValue *constraint_name);
+	</programlisting>
+	This method must update the contents of the 
+	<link linkend="is:_referential_constraints">"_referential_constraints"</link> table which lists all the
+	referential constraints (which are also listed in the 
+	<link linkend="is:_table_constraints">"_table_constraints"</link> table).
+      </para>
+    </sect2>
+
+    <sect2>
+      <title>key_columns() and _key_columns()</title>
+      <para>
+	<programlisting>
+gboolean (*_key_columns) (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                          GdaMetaContext *, GError **);
+gboolean (*key_columns)  (GdaServerProvider *, GdaConnection *, GdaMetaStore *, 
+                          GdaMetaContext *, GError **,
+                          const GValue *table_catalog, const GValue *table_schema,
+                          const GValue *table_name, const GValue *constraint_name);
+	</programlisting>
+	This method must update the contents of the <link linkend="is:_key_column_usage">"_key_column_usage"</link>
+	table which lists all the
+	columns involved in each table constraint (as listed in the 
+	<link linkend="is:_table_constraints">"_table_constraints"</link> table).
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1>
+    <title>Methods - misc.</title>
+    <sect2>
+      <title>cancel()</title>
+      <para>
+	This method cancels an asynchronous task.
+      </para>
+    </sect2>
+    <sect2>
+      <title>create_connection()</title>
+      <para>
+	Reserved for internal implementation.
+      </para>
+    </sect2>
+    <sect2>
+      <title>is_busy()</title>
+      <para>
+	This method tests if a connection is already busy in a, asynchronous task.
+      </para>
+    </sect2>
+  </sect1>
+</chapter>
diff --git a/doc/C/server-operation.xml b/doc/C/server-operation.xml
index 2524d0e..b076491 100644
--- a/doc/C/server-operation.xml
+++ b/doc/C/server-operation.xml
@@ -1,3 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
 <sect2 id="DDLIntro">
   <title>General words about DDL queries</title>
   <para>
diff --git a/doc/C/virtual.xml b/doc/C/virtual.xml
index 551a690..6dfc036 100644
--- a/doc/C/virtual.xml
+++ b/doc/C/virtual.xml
@@ -1,4 +1,9 @@
-<sect2 id="VirtualIntro">
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";[
+<!ENTITY LIBGDA          "<application>Libgda</application>">
+]>
+<sect2 id="VirtualIntro" xmlns:xi="http://www.w3.org/2003/XInclude";>
   <title>Introduction to virtual connections</title>
   <para>
     &LIBGDA; implements so called virtual connections which are used like normal 
@@ -36,5 +41,5 @@ cnc = gda_virtual_connection_open (provider, NULL);
       <listitem><para><filename class="directory">testing/virtual-test-2.c</filename></para></listitem>
     </itemizedlist>
   </para>
-  &libgda-virtual-notice;
+<xi:include href="virtual-notice.xml"/>
 </sect2>
diff --git a/libgda-report/engine/rt-parser.c b/libgda-report/engine/rt-parser.c
index 317ccdf..0553124 100644
--- a/libgda-report/engine/rt-parser.c
+++ b/libgda-report/engine/rt-parser.c
@@ -1,6 +1,6 @@
 /* rt-parser.c
  *
- * Copyright (C) 2010 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2010 - 2011 Vivien Malerba <malerba gnome-db org>
  *
  * This Library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License as
@@ -97,7 +97,7 @@ static MarkupTag get_markup_token (const gchar *alltext, const gchar *start, gin
 static MarkupTag get_token (const gchar *alltext, const gchar *start, gint *out_nb_spaces_before, const gchar **out_end,
 			    MarkupTag start_tag);
 
-/**
+/*
  * get_token
  *
  * returns the token type starting from @iter, and positions @out_end to the last used position
@@ -344,7 +344,7 @@ get_markup_token (const gchar *alltext, const gchar *start, gint *out_nb_spaces_
 	return MARKUP_NONE;
 }
 
-/**
+/*
  * steals @base64
  */
 static gchar *
diff --git a/libgda-ui/gdaui-rt-editor.c b/libgda-ui/gdaui-rt-editor.c
index 44042a0..e8122c1 100644
--- a/libgda-ui/gdaui-rt-editor.c
+++ b/libgda-ui/gdaui-rt-editor.c
@@ -1138,11 +1138,13 @@ text_buffer_changed_cb (GtkTextBuffer *textbuffer, GdauiRtEditor *rte)
 		g_signal_emit (rte, gdaui_rt_editor_signals[CHANGED], 0, NULL);
 }
 
-/**
+/*
  * get_token
  *
  * returns the token type starting from @iter, and positions @out_end to the last used position
  * position.
+ *
+ * Returns: a #MarkupTag
  */
 static MarkupTag
 get_token (GtkTextIter *iter, gint *out_nb_spaces_before, GtkTextIter *out_end,
@@ -1577,7 +1579,7 @@ serialize_tag (GtkTextTag *tag, gboolean starting, GdauiRtEditor *editor)
 	}
 }
 
-/**
+/*
  * steals @base64
  */
 static gchar *
@@ -1596,7 +1598,7 @@ add_newlines_to_base64 (gchar *base64)
 	return g_string_free (string, FALSE);
 }
 
-/**
+/*
  * steals @base64
  */
 static gchar *
diff --git a/libgda-ui/internal/gdaui-provider-spec-editor.c b/libgda-ui/internal/gdaui-provider-spec-editor.c
index 2aef203..375c02d 100644
--- a/libgda-ui/internal/gdaui-provider-spec-editor.c
+++ b/libgda-ui/internal/gdaui-provider-spec-editor.c
@@ -1,5 +1,5 @@
 /* GNOME DB library
- * Copyright (C) 2005 - 2009 The GNOME Foundation
+ * Copyright (C) 2005 - 2011 The GNOME Foundation
  *
  * AUTHORS:
  *      Vivien Malerba <malerba gnome-db org>
@@ -346,7 +346,7 @@ _gdaui_provider_spec_editor_get_type (void)
 	return type;
 }
 
-/**
+/*
  * _gdaui_provider_spec_editor_new
  * @provider: the provider to be used 
  *
diff --git a/libgda-ui/internal/utility.c b/libgda-ui/internal/utility.c
index 290db14..e5face5 100644
--- a/libgda-ui/internal/utility.c
+++ b/libgda-ui/internal/utility.c
@@ -1,6 +1,6 @@
 /* utility.c
  *
- * Copyright (C) 2003 - 2010 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2003 - 2011 Vivien Malerba <malerba gnome-db org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -28,7 +28,7 @@
 #include <libgda-ui/gdaui-decl.h>
 
 
-/**
+/*
  * _gdaui_utility_entry_build_actions_menu
  * @obj_data:
  * @attrs:
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index de79439..a1951b6 100755
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,4 +1,4 @@
-doc/C/prov-writing.xml
+doc/C/prov-writing-assembly.xml
 libgda/sqlite/sql-parser.c/lemon.c
 libgda/sqlite/sql-parser.c/lempar.c
 libgda/sqlite/sqlite-src/sqlite3.c
diff --git a/tools/browser/doc/gda-browser-docs.sgml b/tools/browser/doc/gda-browser-docs.sgml
index d969a87..de7cb6d 100644
--- a/tools/browser/doc/gda-browser-docs.sgml
+++ b/tools/browser/doc/gda-browser-docs.sgml
@@ -1,27 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-     "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"; [
-<!ENTITY nbsp            " ">
-<!ENTITY LIBGDA          "<application>Libgda</application>">
-<!ENTITY GNOMEDB         "<application>GNOME-DB</application>">
-<!ENTITY fdl-appendix SYSTEM "fdl-appendix.sgml">
-<!ENTITY BrowserCore SYSTEM "xml/browser-core.xml">
-<!ENTITY BrowserWindow SYSTEM "xml/browser-window.xml">
-<!ENTITY BrowserConnection SYSTEM "xml/browser-connection.xml">
-<!ENTITY BrowserFavorites SYSTEM "xml/browser-favorites.xml">
-<!ENTITY BrowserPage SYSTEM "xml/browser-page.xml">
-<!ENTITY BrowserPerspective SYSTEM "xml/browser-perspective.xml">
-<!ENTITY DataManagerPerspective SYSTEM "xml/data-manager-perspective.xml">
-<!ENTITY SchemaBrowserPerspective SYSTEM "xml/schema-browser-perspective.xml">
-<!ENTITY QueryExecPerspective SYSTEM "xml/query-exec-perspective.xml">
-<!ENTITY CCGrayBar SYSTEM "xml/cc-gray-bar.xml">
-<!ENTITY PopupContainer SYSTEM "xml/popup-container.xml">
-<!ENTITY UIFomrGrid SYSTEM "xml/ui-formgrid.xml">
-<!ENTITY MgrFavorites SYSTEM "xml/mgr-favorites.xml">
-<!ENTITY Support SYSTEM "xml/support.xml">
-]>
-
-<book id="index">
+     "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude";>
   <bookinfo>
     <title>GdaBrowser hacking manual</title>
     <authorgroup>
@@ -35,7 +15,7 @@
         </contrib>
       </author>
     </authorgroup>
-    <date>Jan. 2011</date>
+    <date>Feb. 2011</date>
     <copyright>
       <year>2009 - 2011</year>
       <holder>The GNOME Foundation</holder>
@@ -126,10 +106,10 @@
 	This section is a reference to all the core objects of the Gda browser,
 	which can be used in any extension.
       </para>
-      &BrowserCore;
-      &BrowserConnection;
-      &BrowserFavorites;
-      &Support;
+      <xi:include href="xml/browser-core.xml"/>
+      <xi:include href="xml/browser-connection.xml"/>
+      <xi:include href="xml/browser-favorites.xml"/>
+      <xi:include href="xml/support.xml"/>
     </chapter>
 
     <chapter id="windows">
@@ -150,9 +130,9 @@
         </textobject>
       </mediaobject>
       </para>
-      &BrowserWindow;
-      &BrowserPerspective;
-      &BrowserPage;
+      <xi:include href="xml/browser-window.xml"/>
+      <xi:include href="xml/browser-perspective.xml"/>
+      <xi:include href="xml/browser-page.xml"/>
     </chapter>
 
     <chapter id="extrawidgets">
@@ -161,9 +141,9 @@
 	This section is a reference to all the extra widgets used in the Gda browser,
 	which can be used in any extension.
       </para>
-      &UIFomrGrid;
-      &CCGrayBar;
-      &PopupContainer;
+      <xi:include href="xml/ui-formgrid.xml"/>
+      <xi:include href="xml/cc-gray-bar.xml"/>
+      <xi:include href="xml/popup-container.xml"/>
     </chapter>
 
     <chapter id="perspectives">
@@ -172,16 +152,16 @@
 	This section is a reference to some of the existing perspectives and the associated
 	widgets.
       </para>
-      &MgrFavorites;
-      &SchemaBrowserPerspective;
-      &DataManagerPerspective;
-      &QueryExecPerspective;
+      <xi:include href="xml/mgr-favorites.xml"/>
+      <xi:include href="xml/schema-browser-perspective.xml"/>
+      <xi:include href="xml/data-manager-perspective.xml"/>
+      <xi:include href="xml/query-exec-perspective.xml"/>
     </chapter>
   </part>
 
   <part id="part_index">
     <title>Appendix</title>
-    &fdl-appendix;
+      <xi:include href="fdl-appendix.xml"/>
   </part>
 </book>
 



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