[vala] sqlite3: add wrapper methods for sqlite3_exec and sqlite3_get_table
- From: Evan Nemerson <evann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] sqlite3: add wrapper methods for sqlite3_exec and sqlite3_get_table
- Date: Sat, 10 Apr 2010 18:45:06 +0000 (UTC)
commit 2bc4b792bc22fe387d00637ecdd1c78a8950d692
Author: Evan Nemerson <evan coeus-group com>
Date: Sat Apr 10 11:41:08 2010 -0700
sqlite3: add wrapper methods for sqlite3_exec and sqlite3_get_table
Fixes bug 579364.
vapi/sqlite3.vapi | 51 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 45 insertions(+), 6 deletions(-)
---
diff --git a/vapi/sqlite3.vapi b/vapi/sqlite3.vapi
index 1e725e0..43d71e0 100644
--- a/vapi/sqlite3.vapi
+++ b/vapi/sqlite3.vapi
@@ -28,22 +28,52 @@ namespace Sqlite {
public class Database {
public int busy_timeout (int ms);
public int changes ();
- public int exec (string sql, Callback? sqlite3_callback = null, out string errmsg = null);
+ [CCode (cname = "sqlite3_exec")]
+ private int _exec (string sql, Callback? sqlite3_callback = null, out unowned string errmsg = null);
+ [CCode (cname = "_vala_sqlite3_exec")]
+ public int exec (string sql, Callback? sqlite3_callback = null, out string errmsg = null) {
+ unowned string sqlite_errmsg;
+ var ec = this._exec (sql, sqlite3_callback, out sqlite_errmsg);
+ if (sqlite_errmsg != null) {
+ errmsg = sqlite_errmsg;
+ Sqlite.Memory.free ((void*) sqlite_errmsg);
+ }
+ return ec;
+ }
public int extended_result_codes (int onoff);
public int get_autocommit ();
public void interrupt ();
public int64 last_insert_rowid ();
public int total_changes ();
-
public int complete (string sql);
- public int get_table (string sql, [CCode (array_length = false)] out unowned string[] resultp, out int nrow, out int ncolumn, out string errmsg);
- public static void free_table ([CCode (array_length = false)] string[] result);
+ [CCode (cname = "sqlite3_get_table")]
+ private int _get_table (string sql, [CCode (array_length = false)] out unowned string[] resultp, out int nrow, out int ncolumn, out unowned string? errmsg = null);
+ private static void free_table ([CCode (array_length = false)] string[] result);
+ [CCode (cname = "_vala_sqlite3_get_table")]
+ public int get_table (string sql, out string[] resultp, out int nrow, out int ncolumn, out string? errmsg = null) {
+ unowned string sqlite_errmsg;
+ unowned string[] sqlite_resultp;
+
+ var ec = this._get_table (sql, out sqlite_resultp, out nrow, out ncolumn, out sqlite_errmsg);
+
+ resultp = new string[(nrow + 1) * ncolumn];
+ for (var entry = 0 ; entry < resultp.length ; entry++ ) {
+ resultp[entry] = sqlite_resultp[entry];
+ }
+ Sqlite.Database.free_table (sqlite_resultp);
+
+ if (sqlite_errmsg != null) {
+ errmsg = sqlite_errmsg;
+ Sqlite.Memory.free ((void*) sqlite_errmsg);
+ }
+ return ec;
+ }
public static int open (string filename, out Database db);
public static int open_v2 (string filename, out Database db, int flags = OPEN_READWRITE | OPEN_CREATE, string? zVfs = null);
public int errcode ();
public unowned string errmsg ();
- public int prepare (string sql, int n_bytes, out Statement stmt, out string tail = null);
- public int prepare_v2 (string sql, int n_bytes, out Statement stmt, out string tail = null);
+ public int prepare (string sql, int n_bytes, out Statement stmt, out unowned string tail = null);
+ public int prepare_v2 (string sql, int n_bytes, out Statement stmt, out unowned string tail = null);
public void trace (TraceCallback? xtrace);
public void profile (ProfileCallback? xprofile);
public void progress_handler (int n_opcodes, Sqlite.ProgressCallback? progress_handler);
@@ -234,6 +264,15 @@ namespace Sqlite {
public unowned string sql ();
}
+ namespace Memory {
+ [CCode (cname = "sqlite3_malloc")]
+ public static void* malloc (int n_bytes);
+ [CCode (cname = "sqlite3_realloc")]
+ public static void* realloc (void* mem, int n_bytes);
+ [CCode (cname = "sqlite3_free")]
+ public static void free (void* mem);
+ }
+
[Compact]
[CCode (cname = "sqlite3_mutex")]
public class Mutex {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]