[libgda] Vala: fix libgda bindings generation



commit 9aa5c38f58f0fa1a25234e8a5364189dab3fcbbc
Author: Daniel Espinosa <esodan gmail com>
Date:   Wed Jul 11 19:36:12 2018 -0500

    Vala: fix libgda bindings generation
    
    Fixed structs as abstract compact classes with
    custom code due to issue: https://gitlab.gnome.org/GNOME/vala/issues/652
    
    Fixed GdaSqlStatementContentsInfo convertion to GBoxed.

 libgda/{Gda-6.0.custom => Gda-6.0-custom.vala} | 45 ++++++++++++++------------
 libgda/Gda-6.0.metadata                        |  2 ++
 libgda/meson.build                             | 27 +++++++++++++++-
 libgda/sql-parser/gda-statement-struct-decl.h  |  4 +--
 libgda/sql-parser/gda-statement-struct.c       |  6 ++--
 5 files changed, 58 insertions(+), 26 deletions(-)
---
diff --git a/libgda/Gda-6.0.custom b/libgda/Gda-6.0-custom.vala
similarity index 76%
rename from libgda/Gda-6.0.custom
rename to libgda/Gda-6.0-custom.vala
index 4411fe375..d046c5c24 100644
--- a/libgda/Gda-6.0.custom
+++ b/libgda/Gda-6.0-custom.vala
@@ -1,7 +1,7 @@
 namespace Gda {
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
-       public class BlobOpFunctions {
+       public abstract class BlobOpFunctions {
                public abstract long get_length (BlobOp op);
                public abstract long read (BlobOp op, Blob blob, long offset, long size);
                public abstract long write (BlobOp op, Blob blob, long offset);
@@ -10,7 +10,7 @@ namespace Gda {
 
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
-       public class ServerProviderBase {
+       public abstract class ServerProviderBase {
                public abstract string get_name (ServerProvider provider);
                public abstract string get_version (ServerProvider provider);
                public abstract string get_server_version (ServerProvider provider, Connection cnc);
@@ -20,8 +20,8 @@ namespace Gda {
                public abstract Connection create_connection (ServerProvider provider);
                public abstract SqlParser create_parser (ServerProvider provider, Connection cnc);
                public abstract DataHandler get_data_handler (ServerProvider provider, Connection? cnc,
-                                                                Type g_type, string dbms_type);
-               public abstract string get_def_dbms_type (ServerProvider provider, Connection cnc, Type  
g_type);
+                                                                GLib.Type g_type, string dbms_type);
+               public abstract string get_def_dbms_type (ServerProvider provider, Connection cnc, GLib.Type  
g_type);
                public abstract bool supports_operation (ServerProvider provider, Connection cnc,
                                                                 ServerOperationType type, Set options);
                public abstract ServerOperation create_operation (ServerProvider provider, Connection cnc,
@@ -30,7 +30,7 @@ namespace Gda {
                                                                 ServerOperation op) throws GLib.Error;
                public abstract string statement_to_sql (ServerProvider provider, Connection cnc,
                                                                 Statement stmt, Set params, StatementSqlFlag 
flags,
-                                                                ref SList params_used) throws GLib.Error;
+                                                                ref GLib.SList params_used) throws 
GLib.Error;
                public abstract string identifier_quote (ServerProvider provider, Connection? cnc,
                                                                 string id,
                                                                 bool for_meta_store, bool force_quotes);
@@ -50,32 +50,32 @@ namespace Gda {
                                                         string name, TransactionIsolation level) throws 
GLib.Error;
                public abstract bool commit_transaction (ServerProvider provider, Connection cnc,
                                                         string name) throws GLib.Error;
-               public abstract bool rollback_transaction) (ServerProvider provider, Connection cnc,
+               public abstract bool rollback_transaction (ServerProvider provider, Connection cnc,
                                                         string name) throws GLib.Error;
                public abstract bool add_savepoint (ServerProvider provider, Connection cnc,
                                                         string name) throws GLib.Error;
                public abstract bool rollback_savepoint (ServerProvider provider, Connection cnc,
                                                         string name) throws GLib.Error;
                public abstract bool delete_savepoint (ServerProvider provider, Connection cnc,
-                                                        strin gname) throws GLib.Error;
+                                                        string name) throws GLib.Error;
                public abstract bool statement_prepare (ServerProvider provider, Connection cnc,
                                                         Statement stmt) throws GLib.Error;
-               public abstract Object statement_execute (ServerProvider provider, Connection cnc,
+               public abstract GLib.Object statement_execute (ServerProvider provider, Connection cnc,
                                                         Statement stmt, Set params,
                                                         StatementModelUsage model_usage,
-                                                        Type[] col_types, ref Set last_inserted_row) throws 
GLib.Error;
+                                                        GLib.Type[] col_types, ref Set last_inserted_row) 
throws GLib.Error;
 
                /*< private >*/
                /* Padding for future expansion */
-               public virtual void _gda_reserved11 () {};
-               public virtual void _gda_reserved12 () {};
-               public virtual void _gda_reserved13 () {};
-               public virtual void _gda_reserved14 () {};
+               public abstract void _gda_reserved11 ();
+               public abstract void _gda_reserved12 ();
+               public abstract void _gda_reserved13 ();
+               public abstract void _gda_reserved14 ();
        }
-       
+
        [CCode (cheader_filename = "libgda/libgda.h", has_type_id = false)]
        [Compact]
-       public class SqlStatementContentsInfo {
+       public abstract class SqlStatementContentsInfo {
                public Gda.SqlStatementType type;
                public weak string name;
                public abstract void* construct ();
@@ -84,10 +84,15 @@ namespace Gda {
                public abstract string serialize (void* stm);
                public weak Gda.SqlForeachFunc check_structure_func;
                public weak Gda.SqlForeachFunc check_validity_func;
-               public virtual void* _gda_reserved1 () {};
-               public virtual void* _gda_reserved2 () {};
-               public virtual void* _gda_reserved3 () {};
-               public virtual void* _gda_reserved4 () {};
+               public abstract void* _gda_reserved1 ();
+               public abstract void* _gda_reserved2 ();
+               public abstract void* _gda_reserved3 ();
+               public abstract void* _gda_reserved4 ();
        }
-       
+       [CCode (cheader_filename = "libgda.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "gda_sql_statement_get_type ()")]
+       [Compact]
+       public class SqlStatement {
+               public static Gda.SqlStatementContentsInfo get_contents_infos (Gda.SqlStatementType type);
+       }
+
 }
diff --git a/libgda/Gda-6.0.metadata b/libgda/Gda-6.0.metadata
index e4cc8c025..2a29b2219 100644
--- a/libgda/Gda-6.0.metadata
+++ b/libgda/Gda-6.0.metadata
@@ -44,4 +44,6 @@ Connection
 // skipping
 BlobOpFunctions skip=true
 ServerProviderBase skip=true
+sql_statement_get_contents_infos skip=true
 SqlStatementContentsInfo skip=true
+
diff --git a/libgda/meson.build b/libgda/meson.build
index 89f2cab12..92a893bba 100644
--- a/libgda/meson.build
+++ b/libgda/meson.build
@@ -258,7 +258,7 @@ gi_sources += threadwrapper_gi_sources
 gi_sources += sql_parser_gi_sources
 gi_sources += libgda_handlers_sources
 
-gnome_module.generate_gir(libgda,
+libgda_gir = gnome_module.generate_gir(libgda,
        sources: gi_sources,
        namespace: 'Gda',
        identifier_prefix: 'Gda',
@@ -276,6 +276,31 @@ gnome_module.generate_gir(libgda,
        install_dir_typelib: join_paths(get_option('libdir'), 'girepository-1.0')
        )
 
+vapigen = find_program('vapigen')
+libgda_vapi = custom_target(project_package,
+       command: [vapigen,
+               '--girdir='+meson.current_source_dir(),
+               '--metadatadir='+meson.current_source_dir(),
+               '--library='+project_package,
+               '--directory='+meson.current_build_dir(),
+               '--pkg=libxml-2.0',
+               '--pkg=gio-2.0',
+               '@INPUT0@', '@INPUT1@'
+               ],
+       input: [libgda_gir[0],'Gda-'+project_api_version+'-custom.vala'],
+       output: project_package+'.vapi',
+       install: true,
+       install_dir: join_paths(get_option('datadir'),'vala','vapi')
+       )
+
+# gnome_module.generate_vapi(project_package,
+#      gir_dirs: meson.current_build_dir(),
+#      install: true,
+#      metadata_dirs: join_paths(meson.source_root(),'libgda'),
+#      packages: ['gio-2.0', 'libxml-2.0'],
+#      sources: libgda_gir[0]
+#      )
+
 # Tests
 tco = executable('test_cnc_open', 'test-cnc-open.c',
        dependencies: [
diff --git a/libgda/sql-parser/gda-statement-struct-decl.h b/libgda/sql-parser/gda-statement-struct-decl.h
index 00fd69c12..44afdbc58 100644
--- a/libgda/sql-parser/gda-statement-struct-decl.h
+++ b/libgda/sql-parser/gda-statement-struct-decl.h
@@ -267,8 +267,8 @@ typedef struct {
        gpointer         _gda_reserved3;
        gpointer         _gda_reserved4;
 } GdaSqlStatementContentsInfo;
-#define GDA_TYPE_SQL_STATEMENT_CONTENTS_INFO gda_sql_statement_get_contents_info_get_type()
-GType gda_sql_statement_get_contents_info_get_type (void) G_GNUC_CONST;
+#define GDA_TYPE_SQL_STATEMENT_CONTENTS_INFO gda_sql_statement_contents_info_get_type()
+GType gda_sql_statement_contents_info_get_type (void) G_GNUC_CONST;
 
 /**
  * GdaSqlStatementCheckValidityData:
diff --git a/libgda/sql-parser/gda-statement-struct.c b/libgda/sql-parser/gda-statement-struct.c
index ca2765a90..0dc9cbf27 100644
--- a/libgda/sql-parser/gda-statement-struct.c
+++ b/libgda/sql-parser/gda-statement-struct.c
@@ -50,7 +50,7 @@ gda_sql_error_quark (void)
 }
 
 GdaSqlStatementContentsInfo *
-gda_sql_statement_get_contents_info_copy (GdaSqlStatementContentsInfo *src) {
+gda_sql_statement_contents_info_copy (GdaSqlStatementContentsInfo *src) {
        GdaSqlStatementContentsInfo *cp = g_new0(GdaSqlStatementContentsInfo, 1);
        cp->name = src->name;
        cp->construct = src->construct;
@@ -64,11 +64,11 @@ gda_sql_statement_get_contents_info_copy (GdaSqlStatementContentsInfo *src) {
        return cp;
 }
 void
-gda_sql_statement_get_contents_info_free (GdaSqlStatementContentsInfo *cinfo) {
+gda_sql_statement_contents_info_free (GdaSqlStatementContentsInfo *cinfo) {
        g_free (cinfo);
 }
 
-G_DEFINE_BOXED_TYPE(GdaSqlStatementContentsInfo, gda_sql_statement_get_contents_info, 
gda_sql_statement_get_contents_info_copy, gda_sql_statement_get_contents_info_free)
+G_DEFINE_BOXED_TYPE(GdaSqlStatementContentsInfo, gda_sql_statement_contents_info, 
gda_sql_statement_contents_info_copy, gda_sql_statement_contents_info_free)
 /*
  * statement's infos retrieval
  */


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