summaryrefslogtreecommitdiffstats
path: root/ext/sqlite3_api
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2007-01-13 18:42:29 +0000
committerJamis Buck <jamis@37signals.com>2007-01-13 18:42:29 +0000
commit9f39984c8f2b5b4ff4d64824f92247c69d58f0a6 (patch)
treeba3ff32feab5b04927d309e4678ff554b9f7ec71 /ext/sqlite3_api
parentc1fd5776d1e0cf4fc961a0b2001cc02f5ecb9ef4 (diff)
downloadthird_party-sqlite3-ruby-9f39984c8f2b5b4ff4d64824f92247c69d58f0a6.tar.gz
third_party-sqlite3-ruby-9f39984c8f2b5b4ff4d64824f92247c69d58f0a6.tar.xz
third_party-sqlite3-ruby-9f39984c8f2b5b4ff4d64824f92247c69d58f0a6.zip
Fix for use of callbacks (busy_handler, set_authorize and trace) (thanks Sylvain Joyeux, closes #2955)
Diffstat (limited to 'ext/sqlite3_api')
-rw-r--r--ext/sqlite3_api/Makefile143
-rw-r--r--ext/sqlite3_api/extconf.rb2
-rw-r--r--ext/sqlite3_api/sqlite3_api.i12
-rw-r--r--ext/sqlite3_api/sqlite3_api_wrap.c1182
4 files changed, 939 insertions, 400 deletions
diff --git a/ext/sqlite3_api/Makefile b/ext/sqlite3_api/Makefile
new file mode 100644
index 0000000..75942cc
--- /dev/null
+++ b/ext/sqlite3_api/Makefile
@@ -0,0 +1,143 @@
+
+SHELL = /bin/sh
+
+#### Start of system configuration section. ####
+
+srcdir = .
+topdir = /opt/local/lib/ruby/1.8/i686-darwin8.5.2
+hdrdir = $(topdir)
+VPATH = $(srcdir):$(topdir):$(hdrdir)
+prefix = $(DESTDIR)/opt/local
+exec_prefix = $(DESTDIR)/opt/local
+sitedir = $(prefix)/lib/ruby/site_ruby
+rubylibdir = $(libdir)/ruby/$(ruby_version)
+archdir = $(rubylibdir)/$(arch)
+sbindir = $(exec_prefix)/sbin
+vendordir = $(prefix)/lib/ruby/vendor_ruby
+datadir = $(prefix)/share
+includedir = $(prefix)/include
+infodir = $(prefix)/info
+sysconfdir = $(prefix)/etc
+mandir = $(DESTDIR)/opt/local/share/man
+libdir = $(DESTDIR)/opt/local/lib
+sharedstatedir = $(prefix)/com
+oldincludedir = $(DESTDIR)/usr/include
+sitearchdir = $(sitelibdir)/$(sitearch)
+vendorarchdir = $(vendorlibdir)/$(vendorarch)
+bindir = $(exec_prefix)/bin
+localstatedir = $(prefix)/var
+vendorlibdir = $(vendordir)/$(ruby_version)
+sitelibdir = $(sitedir)/$(ruby_version)
+libexecdir = $(exec_prefix)/libexec
+
+CC = gcc
+LIBRUBY = $(LIBRUBY_SO)
+LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
+LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
+LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
+
+CFLAGS = -fno-common -O -pipe -I/opt/local/include -fno-common -pipe -fno-common
+CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_SQLITE3_H -I/usr/local/include -O -pipe -I/opt/local/include
+CXXFLAGS = $(CFLAGS)
+DLDFLAGS = -L/opt/local/lib
+LDSHARED = cc -dynamic -bundle -undefined suppress -flat_namespace
+AR = ar
+EXEEXT =
+
+RUBY_INSTALL_NAME = ruby
+RUBY_SO_NAME = ruby
+arch = i686-darwin8.5.2
+sitearch = i686-darwin8.5.2
+vendorarch = i686-darwin8.5.2
+ruby_version = 1.8
+ruby = /opt/local/bin/ruby
+RUBY = $(ruby)
+RM = rm -f
+MAKEDIRS = mkdir -p
+INSTALL = /usr/bin/install -c
+INSTALL_PROG = $(INSTALL) -m 0755
+INSTALL_DATA = $(INSTALL) -m 644
+COPY = cp
+
+#### End of system configuration section. ####
+
+preload =
+
+libpath = /usr/local/lib $(libdir)
+LIBPATH = -L"/usr/local/lib" -L"$(libdir)"
+DEFFILE =
+
+CLEANFILES =
+DISTCLEANFILES =
+
+extout =
+extout_prefix =
+target_prefix =
+LOCAL_LIBS =
+LIBS = $(LIBRUBYARG_SHARED) -lsqlite3 -lpthread -ldl -lobjc
+SRCS = sqlite3_api_wrap.c
+OBJS = sqlite3_api_wrap.o
+TARGET = sqlite3_api
+DLLIB = $(TARGET).bundle
+STATIC_LIB =
+
+RUBYCOMMONDIR = $(sitedir)$(target_prefix)
+RUBYLIBDIR = $(sitelibdir)$(target_prefix)
+RUBYARCHDIR = $(sitearchdir)$(target_prefix)
+
+TARGET_SO = $(DLLIB)
+CLEANLIBS = $(TARGET).bundle $(TARGET).il? $(TARGET).tds $(TARGET).map
+CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
+
+all: $(DLLIB)
+static: $(STATIC_LIB)
+
+clean:
+ @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
+
+distclean: clean
+ @-$(RM) Makefile extconf.h conftest.* mkmf.log
+ @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
+
+realclean: distclean
+install: install-so install-rb
+
+install-so: $(RUBYARCHDIR)
+install-so: $(RUBYARCHDIR)/$(DLLIB)
+$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
+ $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
+install-rb: pre-install-rb install-rb-default
+install-rb-default: pre-install-rb-default
+pre-install-rb: Makefile
+pre-install-rb-default: Makefile
+$(RUBYARCHDIR):
+ $(MAKEDIRS) $@
+
+site-install: site-install-so site-install-rb
+site-install-so: install-so
+site-install-rb: install-rb
+
+.SUFFIXES: .c .m .cc .cxx .cpp .C .o
+
+.cc.o:
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.cxx.o:
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.cpp.o:
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.C.o:
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
+
+.c.o:
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
+
+$(DLLIB): $(OBJS)
+ @-$(RM) $@
+ $(LDSHARED) $(DLDFLAGS) $(LIBPATH) -o $@ $(OBJS) $(LOCAL_LIBS) $(LIBS)
+
+
+
+$(OBJS): ruby.h defines.h
diff --git a/ext/sqlite3_api/extconf.rb b/ext/sqlite3_api/extconf.rb
index 3cf033c..67006f6 100644
--- a/ext/sqlite3_api/extconf.rb
+++ b/ext/sqlite3_api/extconf.rb
@@ -4,7 +4,7 @@ SWIG_WRAP = "sqlite3_api_wrap.c"
dir_config( "sqlite3", "/usr/local" )
-if have_header( "sqlite3.h" ) and have_library( "sqlite3", "sqlite3_open" )
+if have_header( "sqlite3.h" ) && have_library( "sqlite3", "sqlite3_open" )
if !File.exists?( SWIG_WRAP ) || with_config( "swig", false )
puts "creating #{SWIG_WRAP}"
system "swig -ruby sqlite3_api.i" or raise "could not build wrapper via swig (perhaps swig is not installed?)"
diff --git a/ext/sqlite3_api/sqlite3_api.i b/ext/sqlite3_api/sqlite3_api.i
index a3e5e5b..8254570 100644
--- a/ext/sqlite3_api/sqlite3_api.i
+++ b/ext/sqlite3_api/sqlite3_api.i
@@ -25,6 +25,16 @@ int Sqlite3_ruby_busy_handler(void* data,int value) {
return FIX2INT(result);
}
+static void mark_CallbackData(void* ptr) {
+ CallbackData* cb = (CallbackData*)ptr;
+ if (cb->proc != Qnil)
+ rb_gc_mark(cb->proc);
+ if (cb->proc2 != Qnil)
+ rb_gc_mark(cb->proc2);
+ if (cb->data != Qnil)
+ rb_gc_mark(cb->data);
+}
+
int Sqlite3_ruby_authorizer(void* data,int type,
const char* a,const char* b,const char* c,const char* d)
{
@@ -90,6 +100,8 @@ void Sqlite3_ruby_function_final(sqlite3_context *ctx) {
}
%}
+%markfunc CallbackData "mark_CallbackData";
+
struct CallbackData {
VALUE proc;
VALUE proc2;
diff --git a/ext/sqlite3_api/sqlite3_api_wrap.c b/ext/sqlite3_api/sqlite3_api_wrap.c
index 9d8d2dd..e0167d1 100644
--- a/ext/sqlite3_api/sqlite3_api_wrap.c
+++ b/ext/sqlite3_api/sqlite3_api_wrap.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.24
+ * Version 1.3.27
*
* This file is not intended to be easily readable and contains a number of
* coding conventions designed to improve portability and efficiency. Do not make
@@ -8,15 +8,73 @@
* interface file instead.
* ----------------------------------------------------------------------------- */
+/***********************************************************************
+ *
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ *
+ ************************************************************************/
-#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
-# if defined(__SUNPRO_CC)
-# define SWIG_TEMPLATE_DISAMBIGUATOR template
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
# else
-# define SWIG_TEMPLATE_DISAMBIGUATOR
+# define SWIGTEMPLATEDISAMBIGUATOR
# endif
#endif
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__) || defined(__ICC)
+# define SWIGUNUSED __attribute__ ((unused))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods for Windows DLLs */
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# define SWIGEXPORT
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+
/* ruby.swg */
/* Implementation : RUBY */
#define SWIGRUBY 1
@@ -25,7 +83,9 @@
/* Flags for pointer conversion */
#define SWIG_POINTER_EXCEPTION 0x1
+#define SWIG_POINTER_OWN 0x1
#define SWIG_POINTER_DISOWN 0x2
+#define SWIG_TRACK_OBJECTS 0x4
#define NUM2USHRT(n) (\
(0 <= NUM2UINT(n) && NUM2UINT(n) <= USHRT_MAX)\
@@ -143,25 +203,15 @@ typedef struct {
/* This should only be incremented when either the layout of swig_type_info changes,
or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION "1"
+#define SWIG_RUNTIME_VERSION "2"
/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
#ifdef SWIG_TYPE_TABLE
-#define SWIG_QUOTE_STRING(x) #x
-#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+# define SWIG_QUOTE_STRING(x) #x
+# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
#else
-#define SWIG_TYPE_TABLE_NAME
-#endif
-
-#include <string.h>
-
-#ifndef SWIGINLINE
-#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
-# define SWIGINLINE inline
-#else
-# define SWIGINLINE
-#endif
+# define SWIG_TYPE_TABLE_NAME
#endif
/*
@@ -172,13 +222,17 @@ typedef struct {
But only do this if is strictly necessary, ie, if you have problems
with your compiler or so.
*/
+
#ifndef SWIGRUNTIME
-#define SWIGRUNTIME static
+# define SWIGRUNTIME SWIGINTERN
#endif
+
#ifndef SWIGRUNTIMEINLINE
-#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
#endif
+#include <string.h>
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -186,16 +240,36 @@ extern "C" {
typedef void *(*swig_converter_func)(void *);
typedef struct swig_type_info *(*swig_dycast_func)(void **);
+/* Structure to store inforomation on one type */
typedef struct swig_type_info {
- const char *name;
- swig_converter_func converter;
- const char *str;
- void *clientdata;
- swig_dycast_func dcast;
- struct swig_type_info *next;
- struct swig_type_info *prev;
+ const char *name; /* mangled name of this type */
+ const char *str; /* human readable name of this type */
+ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
+ struct swig_cast_info *cast; /* linked list of types that can cast into this type */
+ void *clientdata; /* language specific type data */
} swig_type_info;
+/* Structure to store a type and conversion function used for casting */
+typedef struct swig_cast_info {
+ swig_type_info *type; /* pointer to type that is equivalent to this type */
+ swig_converter_func converter; /* function to cast the void pointers */
+ struct swig_cast_info *next; /* pointer to next cast in linked list */
+ struct swig_cast_info *prev; /* pointer to the previous cast */
+} swig_cast_info;
+
+/* Structure used to store module information
+ * Each module generates one structure like this, and the runtime collects
+ * all of these structures and stores them in a circularly linked list.*/
+typedef struct swig_module_info {
+ swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
+ size_t size; /* Number of types in this module */
+ struct swig_module_info *next; /* Pointer to next element in circularly linked list */
+ swig_type_info **type_initial; /* Array of initially generated type structures */
+ swig_cast_info **cast_initial; /* Array of initially generated casting structures */
+ void *clientdata; /* Language specific module data */
+} swig_module_info;
+
+
/*
Compare two type names skipping the space characters, therefore
"char*" == "char *" and "Class<int>" == "Class<int >", etc.
@@ -209,13 +283,14 @@ SWIG_TypeNameComp(const char *f1, const char *l1,
for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
while ((*f1 == ' ') && (f1 != l1)) ++f1;
while ((*f2 == ' ') && (f2 != l2)) ++f2;
- if (*f1 != *f2) return *f1 - *f2;
+ if (*f1 != *f2) return (int)(*f1 - *f2);
}
return (l1 - f1) - (l2 - f2);
}
/*
Check type equivalence in a name list like <name1>|<name2>|...
+ Return 0 if not equal, 1 if equal
*/
SWIGRUNTIME int
SWIG_TypeEquiv(const char *nb, const char *tb) {
@@ -226,96 +301,73 @@ SWIG_TypeEquiv(const char *nb, const char *tb) {
for (nb = ne; *ne; ++ne) {
if (*ne == '|') break;
}
- equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+ equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
if (*ne) ++ne;
}
return equiv;
}
/*
- Register a type mapping with the type-checking
+ Check type equivalence in a name list like <name1>|<name2>|...
+ Return 0 if equal, -1 if nb < tb, 1 if nb > tb
*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
- swig_type_info *tc, *head, *ret, *next;
- /* Check to see if this type has already been registered */
- tc = *tl;
- while (tc) {
- /* check simple type equivalence */
- int typeequiv = (strcmp(tc->name, ti->name) == 0);
- /* check full type equivalence, resolving typedefs */
- if (!typeequiv) {
- /* only if tc is not a typedef (no '|' on it) */
- if (tc->str && ti->str && !strstr(tc->str,"|")) {
- typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
- }
- }
- if (typeequiv) {
- /* Already exists in the table. Just add additional types to the list */
- if (ti->clientdata) tc->clientdata = ti->clientdata;
- head = tc;
- next = tc->next;
- goto l1;
+SWIGRUNTIME int
+SWIG_TypeCompare(const char *nb, const char *tb) {
+ int equiv = 0;
+ const char* te = tb + strlen(tb);
+ const char* ne = nb;
+ while (!equiv && *ne) {
+ for (nb = ne; *ne; ++ne) {
+ if (*ne == '|') break;
}
- tc = tc->prev;
- }
- head = ti;
- next = 0;
-
- /* Place in list */
- ti->prev = *tl;
- *tl = ti;
-
- /* Build linked lists */
- l1:
- ret = head;
- tc = ti + 1;
- /* Patch up the rest of the links */
- while (tc->name) {
- head->next = tc;
- tc->prev = head;
- head = tc;
- tc++;
+ equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
+ if (*ne) ++ne;
}
- if (next) next->prev = head;
- head->next = next;
-
- return ret;
+ return equiv;
}
+
+/* think of this as a c++ template<> or a scheme macro */
+#define SWIG_TypeCheck_Template(comparison, ty) \
+ if (ty) { \
+ swig_cast_info *iter = ty->cast; \
+ while (iter) { \
+ if (comparison) { \
+ if (iter == ty->cast) return iter; \
+ /* Move iter to the top of the linked list */ \
+ iter->prev->next = iter->next; \
+ if (iter->next) \
+ iter->next->prev = iter->prev; \
+ iter->next = ty->cast; \
+ iter->prev = 0; \
+ if (ty->cast) ty->cast->prev = iter; \
+ ty->cast = iter; \
+ return iter; \
+ } \
+ iter = iter->next; \
+ } \
+ } \
+ return 0
+
/*
Check the typename
*/
-SWIGRUNTIME swig_type_info *
+SWIGRUNTIME swig_cast_info *
SWIG_TypeCheck(const char *c, swig_type_info *ty) {
- swig_type_info *s;
- if (!ty) return 0; /* Void pointer */
- s = ty->next; /* First element always just a name */
- do {
- if (strcmp(s->name,c) == 0) {
- if (s == ty->next) return s;
- /* Move s to the top of the linked list */
- s->prev->next = s->next;
- if (s->next) {
- s->next->prev = s->prev;
- }
- /* Insert s as second element in the list */
- s->next = ty->next;
- if (ty->next) ty->next->prev = s;
- ty->next = s;
- s->prev = ty;
- return s;
- }
- s = s->next;
- } while (s && (s != ty->next));
- return 0;
+ SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
+}
+
+/* Same as previous function, except strcmp is replaced with a pointer comparison */
+SWIGRUNTIME swig_cast_info *
+SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
+ SWIG_TypeCheck_Template(iter->type == from, into);
}
/*
Cast a pointer up an inheritance hierarchy
*/
SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+SWIG_TypeCast(swig_cast_info *ty, void *ptr) {
return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
}
@@ -362,54 +414,116 @@ SWIG_TypePrettyName(const swig_type_info *type) {
return type->name;
}
-/*
- Search for a swig_type_info structure
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
- swig_type_info *ty = tl;
- while (ty) {
- if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
- if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
- ty = ty->prev;
- }
- return 0;
-}
-
/*
Set the clientdata field for a type
*/
SWIGRUNTIME void
-SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
- swig_type_info *tc, *equiv;
- if (ti->clientdata) return;
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+ swig_cast_info *cast = ti->cast;
/* if (ti->clientdata == clientdata) return; */
ti->clientdata = clientdata;
- equiv = ti->next;
- while (equiv) {
- if (!equiv->converter) {
- tc = tl;
- while (tc) {
- if ((strcmp(tc->name, equiv->name) == 0))
- SWIG_TypeClientDataTL(tl,tc,clientdata);
- tc = tc->prev;
+
+ while (cast) {
+ if (!cast->converter) {
+ swig_type_info *tc = cast->type;
+ if (!tc->clientdata) {
+ SWIG_TypeClientData(tc, clientdata);
}
+ }
+ cast = cast->next;
+ }
+}
+
+/*
+ Search for a swig_type_info structure only by mangled name
+ Search is a O(log #types)
+
+ We start searching at module start, and finish searching when start == end.
+ Note: if start == end at the beginning of the function, we go all the way around
+ the circular list.
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_MangledTypeQueryModule(swig_module_info *start,
+ swig_module_info *end,
+ const char *name) {
+ swig_module_info *iter = start;
+ do {
+ if (iter->size) {
+ register size_t l = 0;
+ register size_t r = iter->size - 1;
+ do {
+ /* since l+r >= 0, we can (>> 1) instead (/ 2) */
+ register size_t i = (l + r) >> 1;
+ const char *iname = iter->types[i]->name;
+ if (iname) {
+ register int compare = strcmp(name, iname);
+ if (compare == 0) {
+ return iter->types[i];
+ } else if (compare < 0) {
+ if (i) {
+ r = i - 1;
+ } else {
+ break;
+ }
+ } else if (compare > 0) {
+ l = i + 1;
+ }
+ } else {
+ break; /* should never happen */
+ }
+ } while (l <= r);
}
- equiv = equiv->next;
+ iter = iter->next;
+ } while (iter != end);
+ return 0;
+}
+
+/*
+ Search for a swig_type_info structure for either a mangled name or a human readable name.
+ It first searches the mangled names of the types, which is a O(log #types)
+ If a type is not found it then searches the human readable names, which is O(#types).
+
+ We start searching at module start, and finish searching when start == end.
+ Note: if start == end at the beginning of the function, we go all the way around
+ the circular list.
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryModule(swig_module_info *start,
+ swig_module_info *end,
+ const char *name) {
+ /* STEP 1: Search the name field using binary search */
+ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
+ if (ret) {
+ return ret;
+ } else {
+ /* STEP 2: If the type hasn't been found, do a complete search
+ of the str field (the human readable name) */
+ swig_module_info *iter = start;
+ do {
+ register size_t i = 0;
+ for (; i < iter->size; ++i) {
+ if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
+ return iter->types[i];
+ }
+ iter = iter->next;
+ } while (iter != end);
}
+
+ /* neither found a match */
+ return 0;
}
+
/*
Pack binary data into a string
*/
SWIGRUNTIME char *
SWIG_PackData(char *c, void *ptr, size_t sz) {
- static char hex[17] = "0123456789abcdef";
- unsigned char *u = (unsigned char *) ptr;
- const unsigned char *eu = u + sz;
- register unsigned char uu;
+ static const char hex[17] = "0123456789abcdef";
+ register const unsigned char *u = (unsigned char *) ptr;
+ register const unsigned char *eu = u + sz;
for (; u != eu; ++u) {
- uu = *u;
+ register unsigned char uu = *u;
*(c++) = hex[(uu & 0xf0) >> 4];
*(c++) = hex[uu & 0xf];
}
@@ -422,9 +536,9 @@ SWIG_PackData(char *c, void *ptr, size_t sz) {
SWIGRUNTIME const char *
SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
register unsigned char *u = (unsigned char *) ptr;
- register const unsigned char *eu = u + sz;
+ register const unsigned char *eu = u + sz;
for (; u != eu; ++u) {
- register int d = *(c++);
+ register char d = *(c++);
register unsigned char uu = 0;
if ((d >= '0') && (d <= '9'))
uu = ((d - '0') << 4);
@@ -444,30 +558,6 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
return c;
}
-/*
- This function will propagate the clientdata field of type to any new
- swig_type_info structures that have been added into the list of
- equivalent types. It is like calling SWIG_TypeClientData(type,
- clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
- swig_type_info *equiv = type->next;
- swig_type_info *tc;
- if (!type->clientdata) return;
- while (equiv) {
- if (!equiv->converter) {
- tc = tl;
- while (tc) {
- if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
- SWIG_TypeClientDataTL(tl,tc, type->clientdata);
- tc = tc->prev;
- }
- }
- equiv = equiv->next;
- }
-}
-
/*
Pack 'void *' into a string buffer.
*/
@@ -527,77 +617,121 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
}
#endif
-/***********************************************************************
- * common.swg
- *
- * This file contains generic SWIG runtime support for pointer
- * type checking as well as a few commonly used macros to control
- * external linkage.
- *
- * Author : David Beazley (beazley@cs.uchicago.edu)
- *
- * Copyright (c) 1999-2000, The University of Chicago
- *
- * This file may be freely redistributed without license or fee provided
- * this copyright message remains intact.
- ************************************************************************/
-
-
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# if !defined(STATIC_LINKED)
-# define SWIGEXPORT(a) __declspec(dllexport) a
-# else
-# define SWIGEXPORT(a) a
-# endif
-#else
-# define SWIGEXPORT(a) a
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*************************************************************************/
-
-
-/* The static type info list */
-
-static swig_type_info *swig_type_list = 0;
-static swig_type_info **swig_type_list_handle = &swig_type_list;
-
-
-/* Register a type mapping with the type-checking */
-static swig_type_info *
-SWIG_TypeRegister(swig_type_info *ti) {
- return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
-}
-
-/* Search for a swig_type_info structure */
-static swig_type_info *
-SWIG_TypeQuery(const char *name) {
- return SWIG_TypeQueryTL(*swig_type_list_handle, name);
-}
-
-/* Set the clientdata field for a type */
-static void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
- SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types. It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-static void
-SWIG_PropagateClientData(swig_type_info *type) {
- SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
-}
-
-#ifdef __cplusplus
-}
-#endif
+/***********************************************************************
+ * rubytracking.swg
+ *
+ * This file contains support for tracking mappings from
+ * Ruby objects to C++ objects. This functionality is needed
+ * to implement mark functions for Ruby's mark and sweep
+ * garbage collector.
+ ************************************************************************/
+
+/* Global Ruby hash table to store Trackings from C/C++
+ structs to Ruby Objects. */
+static VALUE swig_ruby_trackings;
+
+/* Setup a Ruby hash table to store Trackings */
+static void SWIG_RubyInitializeTrackings() {
+ /* Create a ruby hash table to store Trackings from C++
+ objects to Ruby objects. Also make sure to tell
+ the garabage collector about the hash table. */
+ swig_ruby_trackings = rb_hash_new();
+ rb_gc_register_address(&swig_ruby_trackings);
+}
+
+/* Get a Ruby number to reference a pointer */
+static VALUE SWIG_RubyPtrToReference(void* ptr) {
+ /* We cast the pointer to an unsigned long
+ and then store a reference to it using
+ a Ruby number object. */
+
+ /* Convert the pointer to a Ruby number */
+ unsigned long value = (unsigned long) ptr;
+ return LONG2NUM(value);
+}
+
+/* Get a Ruby number to reference an object */
+static VALUE SWIG_RubyObjectToReference(VALUE object) {
+ /* We cast the object to an unsigned long
+ and then store a reference to it using
+ a Ruby number object. */
+
+ /* Convert the Object to a Ruby number */
+ unsigned long value = (unsigned long) object;
+ return LONG2NUM(value);
+}
+
+/* Get a Ruby object from a previously stored reference */
+static VALUE SWIG_RubyReferenceToObject(VALUE reference) {
+ /* The provided Ruby number object is a reference
+ to the Ruby object we want.*/
+
+ /* First convert the Ruby number to a C number */
+ unsigned long value = NUM2LONG(reference);
+ return (VALUE) value;
+}
+
+/* Add a Tracking from a C/C++ struct to a Ruby object */
+static void SWIG_RubyAddTracking(void* ptr, VALUE object) {
+ /* In a Ruby hash table we store the pointer and
+ the associated Ruby object. The trick here is
+ that we cannot store the Ruby object directly - if
+ we do then it cannot be garbage collected. So
+ instead we typecast it as a unsigned long and
+ convert it to a Ruby number object.*/
+
+ /* Get a reference to the pointer as a Ruby number */
+ VALUE key = SWIG_RubyPtrToReference(ptr);
+
+ /* Get a reference to the Ruby object as a Ruby number */
+ VALUE value = SWIG_RubyObjectToReference(object);
+
+ /* Store the mapping to the global hash table. */
+ rb_hash_aset(swig_ruby_trackings, key, value);
+}
+
+/* Get the Ruby object that owns the specified C/C++ struct */
+static VALUE SWIG_RubyInstanceFor(void* ptr) {
+ /* Get a reference to the pointer as a Ruby number */
+ VALUE key = SWIG_RubyPtrToReference(ptr);
+
+ /* Now lookup the value stored in the global hash table */
+ VALUE value = rb_hash_aref(swig_ruby_trackings, key);
+
+ if (value == Qnil) {
+ /* No object exists - return nil. */
+ return Qnil;
+ }
+ else {
+ /* Convert this value to Ruby object */
+ return SWIG_RubyReferenceToObject(value);
+ }
+}
+
+/* Remove a Tracking from a C/C++ struct to a Ruby object */
+static void SWIG_RubyRemoveTracking(void* ptr) {
+ /* Get a reference to the pointer as a Ruby number */
+ VALUE key = SWIG_RubyPtrToReference(ptr);
+
+ /* Define delete method - in C++ this could be marked as
+ static but unfortunately not in C. */
+ VALUE delete_function = rb_intern("delete");
+
+ /* Delete the object from the hash table by calling Ruby's
+ do this we need to call the Hash.delete method.*/
+ rb_funcall(swig_ruby_trackings, delete_function, 1, key);
+}
+
+/* This is a helper method that unlinks a Ruby object from its
+ underlying C++ object. This is needed if the lifetime of the
+ Ruby object is longer than the C++ object */
+static void SWIG_RubyUnlinkObjects(void* ptr) {
+ VALUE object = SWIG_RubyInstanceFor(ptr);
+
+ if (object != Qnil) {
+ DATA_PTR(object) = 0;
+ }
+}
/* Common SWIG API */
#define SWIG_ConvertPtr(obj, pp, type, flags) \
@@ -606,6 +740,10 @@ SWIG_PropagateClientData(swig_type_info *type) {
SWIG_Ruby_NewPointerObj(p, type, flags)
#define SWIG_MustGetPtr(p, type, argnum, flags) \
SWIG_Ruby_MustGetPtr(p, type, argnum, flags)
+#define SWIG_GetModule(clientdata) \
+ SWIG_Ruby_GetModule()
+#define SWIG_SetModule(clientdata, pointer) \
+ SWIG_Ruby_SetModule(pointer)
/* Ruby-specific SWIG API */
@@ -637,23 +775,9 @@ static VALUE swig_runtime_data_type_pointer = Qnil;
static void
SWIG_Ruby_InitRuntime(void)
{
- VALUE pointer;
-
if (_mSWIG == Qnil) {
_mSWIG = rb_define_module("SWIG");
}
-
- /* first check if pointer already created */
- pointer = rb_gv_get("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
- if (pointer != Qnil) {
- Data_Get_Struct(pointer, swig_type_info *, swig_type_list_handle);
- } else {
- /* register a new class */
- VALUE cl = rb_define_class("swig_runtime_data", rb_cObject);
- /* create and store the structure pointer to a global variable */
- swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, swig_type_list_handle);
- rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer);
- }
}
/* Define Ruby class for C type */
@@ -673,16 +797,27 @@ SWIG_Ruby_define_class(swig_type_info *type)
/* Create a new pointer object */
static VALUE
-SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int own)
+SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
{
+ int own = flags & SWIG_POINTER_OWN;
+ int track = flags & SWIG_TRACK_OBJECTS;
+
char *klass_name;
swig_class *sklass;
VALUE klass;
VALUE obj;
if (!ptr)
- return Qnil;
-
+ return Qnil;
+
+ /* Have we already wrapped this pointer? */
+ if (track) {
+ obj = SWIG_RubyInstanceFor(ptr);
+ if (obj != Qnil) {
+ return obj;
+ }
+ }
+
if (type->clientdata) {
sklass = (swig_class *) type->clientdata;
obj = Data_Wrap_Struct(sklass->klass, VOIDFUNC(sklass->mark), (own ? VOIDFUNC(sklass->destroy) : 0), ptr);
@@ -694,6 +829,12 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int own)
obj = Data_Wrap_Struct(klass, 0, 0, ptr);
}
rb_iv_set(obj, "__swigtype__", rb_str_new2(type->name));
+
+ /* Keep track of this object if necessary */
+ if (track) {
+ SWIG_RubyAddTracking(ptr, obj);
+ }
+
return obj;
}
@@ -721,7 +862,7 @@ static int
SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
{
char *c;
- swig_type_info *tc;
+ swig_cast_info *tc;
/* Grab the pointer */
if (NIL_P(obj)) {
@@ -731,6 +872,24 @@ SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
Data_Get_Struct(obj, void, *ptr);
}
+ /* Check to see if the input object is giving up ownership
+ of the underlying C struct or C++ object. If so then we
+ need to reset the destructor since the Ruby object no
+ longer owns the underlying C++ object.*/
+ if (flags & SWIG_POINTER_DISOWN) {
+ if (flags & SWIG_TRACK_OBJECTS) {
+ /* We are tracking objects. Thus we change the destructor
+ * to SWIG_RubyRemoveTracking. This allows us to
+ * remove the mapping from the C++ to Ruby object
+ * when the Ruby object is garbage collected. If we don't
+ * do this, then it is possible we will return a reference
+ * to a Ruby object that no longer exists thereby crashing Ruby. */
+ RDATA(obj)->dfree = SWIG_RubyRemoveTracking;
+ } else {
+ RDATA(obj)->dfree = 0;
+ }
+ }
+
/* Do type-checking if type info was provided */
if (ty) {
if (ty->clientdata) {
@@ -791,7 +950,7 @@ SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
/* Convert a packed value value */
static void
SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty, int flags) {
- swig_type_info *tc;
+ swig_cast_info *tc;
const char *c;
if (TYPE(obj) != T_STRING) goto type_error;
@@ -817,6 +976,26 @@ type_error:
}
}
+static swig_module_info *SWIG_Ruby_GetModule() {
+ VALUE pointer;
+ swig_module_info *ret = 0;
+
+ /* first check if pointer already created */
+ pointer = rb_gv_get("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
+ if (pointer != Qnil) {
+ Data_Get_Struct(pointer, swig_module_info, ret);
+ }
+ return ret;
+}
+
+static void SWIG_Ruby_SetModule(swig_module_info *pointer) {
+ /* register a new class */
+ VALUE cl = rb_define_class("swig_runtime_data", rb_cObject);
+ /* create and store the structure pointer to a global variable */
+ swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, pointer);
+ rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer);
+}
+
#ifdef __cplusplus
}
#endif
@@ -825,25 +1004,28 @@ type_error:
/* -------- TYPES TABLE (BEGIN) -------- */
-#define SWIGTYPE_p_f_p_sqlite3_context__void swig_types[0]
-#define SWIGTYPE_p_f_p_void_p_q_const__char__void swig_types[1]
-#define SWIGTYPE_p_f_p_void__void swig_types[2]
-#define SWIGTYPE_p_sqlite3_context swig_types[3]
-#define SWIGTYPE_p_unsigned_long swig_types[4]
-#define SWIGTYPE_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int swig_types[5]
-#define SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void swig_types[6]
-#define SWIGTYPE_p_p_void swig_types[7]
-#define SWIGTYPE_p_void swig_types[8]
-#define SWIGTYPE_p_f_p_void_int__int swig_types[9]
-#define SWIGTYPE_p_p_char swig_types[10]
-#define SWIGTYPE_p_p_sqlite3 swig_types[11]
-#define SWIGTYPE_p_sqlite3 swig_types[12]
-#define SWIGTYPE_p_sqlite3_stmt swig_types[13]
-#define SWIGTYPE_p_p_sqlite3_stmt swig_types[14]
-#define SWIGTYPE_p_sqlite3_value swig_types[15]
-#define SWIGTYPE_p_CallbackData swig_types[16]
-#define SWIGTYPE_p_sqlite_int64 swig_types[17]
+#define SWIGTYPE_p_CallbackData swig_types[0]
+#define SWIGTYPE_p_f_p_sqlite3_context__void swig_types[1]
+#define SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void swig_types[2]
+#define SWIGTYPE_p_f_p_void__void swig_types[3]
+#define SWIGTYPE_p_f_p_void_int__int swig_types[4]
+#define SWIGTYPE_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int swig_types[5]
+#define SWIGTYPE_p_f_p_void_p_q_const__char__void swig_types[6]
+#define SWIGTYPE_p_p_char swig_types[7]
+#define SWIGTYPE_p_p_sqlite3 swig_types[8]
+#define SWIGTYPE_p_p_sqlite3_stmt swig_types[9]
+#define SWIGTYPE_p_p_void swig_types[10]
+#define SWIGTYPE_p_sqlite3 swig_types[11]
+#define SWIGTYPE_p_sqlite3_context swig_types[12]
+#define SWIGTYPE_p_sqlite3_stmt swig_types[13]
+#define SWIGTYPE_p_sqlite3_value swig_types[14]
+#define SWIGTYPE_p_sqlite_int64 swig_types[15]
+#define SWIGTYPE_p_unsigned_long swig_types[16]
+#define SWIGTYPE_p_void swig_types[17]
static swig_type_info *swig_types[19];
+static swig_module_info swig_module = {swig_types, 18, 0, 0, 0, 0};
+#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
+#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
/* -------- TYPES TABLE (END) -------- */
@@ -903,6 +1085,16 @@ int Sqlite3_ruby_busy_handler(void* data,int value) {
return FIX2INT(result);
}
+static void mark_CallbackData(void* ptr) {
+ CallbackData* cb = (CallbackData*)ptr;
+ if (cb->proc != Qnil)
+ rb_gc_mark(cb->proc);
+ if (cb->proc2 != Qnil)
+ rb_gc_mark(cb->proc2);
+ if (cb->data != Qnil)
+ rb_gc_mark(cb->data);
+}
+
int Sqlite3_ruby_authorizer(void* data,int type,
const char* a,const char* b,const char* c,const char* d)
{
@@ -967,9 +1159,8 @@ void Sqlite3_ruby_function_final(sqlite3_context *ctx) {
rb_gc_unregister_address( rb_context );
}
-
swig_class cCallbackData;
-static void free_CallbackData(struct CallbackData *);
+
static VALUE
_wrap_CallbackData_proc_set(int argc, VALUE *argv, VALUE self) {
struct CallbackData *arg1 = (struct CallbackData *) 0 ;
@@ -977,7 +1168,7 @@ _wrap_CallbackData_proc_set(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
arg2 = argv[0];
if (arg1) (arg1)->proc = arg2;
@@ -993,7 +1184,7 @@ _wrap_CallbackData_proc_get(int argc, VALUE *argv, VALUE self) {
if ((argc < 0) || (argc > 0))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
result = (VALUE) ((arg1)->proc);
vresult = result;
@@ -1008,7 +1199,7 @@ _wrap_CallbackData_proc2_set(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
arg2 = argv[0];
if (arg1) (arg1)->proc2 = arg2;
@@ -1024,7 +1215,7 @@ _wrap_CallbackData_proc2_get(int argc, VALUE *argv, VALUE self) {
if ((argc < 0) || (argc > 0))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
result = (VALUE) ((arg1)->proc2);
vresult = result;
@@ -1039,7 +1230,7 @@ _wrap_CallbackData_data_set(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
arg2 = argv[0];
if (arg1) (arg1)->data = arg2;
@@ -1055,7 +1246,7 @@ _wrap_CallbackData_data_get(int argc, VALUE *argv, VALUE self) {
if ((argc < 0) || (argc > 0))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc);
- SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 1);
+ SWIG_ConvertPtr(self, (void **) &arg1, SWIGTYPE_p_CallbackData, 0);
result = (VALUE) ((arg1)->data);
vresult = result;
@@ -1088,6 +1279,7 @@ _wrap_new_CallbackData(int argc, VALUE *argv, VALUE self) {
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc);
result = (struct CallbackData *)(struct CallbackData *) calloc(1, sizeof(struct CallbackData));
DATA_PTR(self) = result;
+
return self;
}
@@ -1096,6 +1288,7 @@ static void
free_CallbackData(struct CallbackData *arg1) {
free((char *) arg1);
}
+
static VALUE
_wrap_sqlite3_libversion(int argc, VALUE *argv, VALUE self) {
char *result;
@@ -1120,7 +1313,7 @@ _wrap_sqlite3_close(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (int)sqlite3_close(arg1);
vresult = INT2NUM(result);
@@ -1136,7 +1329,7 @@ _wrap_sqlite3_last_insert_rowid(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = sqlite3_last_insert_rowid(arg1);
{
@@ -1154,7 +1347,7 @@ _wrap_sqlite3_changes(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (int)sqlite3_changes(arg1);
vresult = INT2NUM(result);
@@ -1170,7 +1363,7 @@ _wrap_sqlite3_total_changes(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (int)sqlite3_total_changes(arg1);
vresult = INT2NUM(result);
@@ -1184,7 +1377,7 @@ _wrap_sqlite3_interrupt(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
sqlite3_interrupt(arg1);
return Qnil;
@@ -1235,9 +1428,9 @@ _wrap_sqlite3_busy_handler(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
- SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_int__int, 1);
- SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
+ SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_int__int, 0);
+ SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, SWIG_POINTER_EXCEPTION|0);
result = (int)sqlite3_busy_handler(arg1,arg2,arg3);
vresult = INT2NUM(result);
@@ -1254,7 +1447,7 @@ _wrap_sqlite3_busy_timeout(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
arg2 = NUM2INT(argv[1]);
result = (int)sqlite3_busy_timeout(arg1,arg2);
@@ -1273,9 +1466,9 @@ _wrap_sqlite3_set_authorizer(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
- SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int, 1);
- SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
+ SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int, 0);
+ SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, SWIG_POINTER_EXCEPTION|0);
result = (int)sqlite3_set_authorizer(arg1,arg2,arg3);
vresult = INT2NUM(result);
@@ -1293,9 +1486,9 @@ _wrap_sqlite3_trace(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
- SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_p_q_const__char__void, 1);
- SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
+ SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_f_p_void_p_q_const__char__void, 0);
+ SWIG_ConvertPtr(argv[2], (void **) &arg3, 0, SWIG_POINTER_EXCEPTION|0);
result = (int)sqlite3_trace(arg1,arg2,arg3);
vresult = INT2NUM(result);
@@ -1367,7 +1560,7 @@ _wrap_sqlite3_errcode(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (int)sqlite3_errcode(arg1);
vresult = INT2NUM(result);
@@ -1383,7 +1576,7 @@ _wrap_sqlite3_errmsg(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (char *)sqlite3_errmsg(arg1);
{
@@ -1401,7 +1594,7 @@ _wrap_sqlite3_errmsg16(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
result = (void *)sqlite3_errmsg16(arg1);
{
@@ -1429,7 +1622,7 @@ _wrap_sqlite3_prepare(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
{
arg2 = RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -1465,7 +1658,7 @@ _wrap_sqlite3_prepare16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
{
arg2 = RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -1503,7 +1696,7 @@ _wrap_sqlite3_bind_blob(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
{
arg3 = (void*)RSTRING(argv[2])->ptr;
@@ -1527,7 +1720,7 @@ _wrap_sqlite3_bind_double(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
arg3 = (double) NUM2DBL(argv[2]);
result = (int)sqlite3_bind_double(arg1,arg2,arg3);
@@ -1547,7 +1740,7 @@ _wrap_sqlite3_bind_int(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
arg3 = NUM2INT(argv[2]);
result = (int)sqlite3_bind_int(arg1,arg2,arg3);
@@ -1567,7 +1760,7 @@ _wrap_sqlite3_bind_int64(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
{
arg3 = rb_big2ll( argv[2] );
@@ -1588,7 +1781,7 @@ _wrap_sqlite3_bind_null(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (int)sqlite3_bind_null(arg1,arg2);
@@ -1609,7 +1802,7 @@ _wrap_sqlite3_bind_text(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
{
arg3 = RSTRING(argv[2])->ptr;
@@ -1635,7 +1828,7 @@ _wrap_sqlite3_bind_text16(int argc, VALUE *argv, VALUE self) {
if ((argc < 3) || (argc > 3))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 3)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
{
arg3 = (void*)RSTRING(argv[2])->ptr;
@@ -1657,7 +1850,7 @@ _wrap_sqlite3_bind_parameter_count(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_bind_parameter_count(arg1);
vresult = INT2NUM(result);
@@ -1674,7 +1867,7 @@ _wrap_sqlite3_bind_parameter_name(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (char *)sqlite3_bind_parameter_name(arg1,arg2);
@@ -1694,7 +1887,7 @@ _wrap_sqlite3_bind_parameter_index(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = StringValuePtr(argv[1]);
result = (int)sqlite3_bind_parameter_index(arg1,(char const *)arg2);
@@ -1711,7 +1904,7 @@ _wrap_sqlite3_column_count(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_column_count(arg1);
vresult = INT2NUM(result);
@@ -1728,7 +1921,7 @@ _wrap_sqlite3_column_name(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (char *)sqlite3_column_name(arg1,arg2);
@@ -1748,7 +1941,7 @@ _wrap_sqlite3_column_name16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (void *)sqlite3_column_name16(arg1,arg2);
@@ -1772,7 +1965,7 @@ _wrap_sqlite3_column_decltype(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (char *)sqlite3_column_decltype(arg1,arg2);
@@ -1792,7 +1985,7 @@ _wrap_sqlite3_column_decltype16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (void *)sqlite3_column_decltype16(arg1,arg2);
@@ -1815,7 +2008,7 @@ _wrap_sqlite3_step(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_step(arg1);
vresult = INT2NUM(result);
@@ -1831,7 +2024,7 @@ _wrap_sqlite3_data_count(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_data_count(arg1);
vresult = INT2NUM(result);
@@ -1848,7 +2041,7 @@ _wrap_sqlite3_column_blob(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (BLOB *)sqlite3_column_blob(arg1,arg2);
@@ -1869,7 +2062,7 @@ _wrap_sqlite3_column_bytes(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (int)sqlite3_column_bytes(arg1,arg2);
@@ -1887,7 +2080,7 @@ _wrap_sqlite3_column_bytes16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (int)sqlite3_column_bytes16(arg1,arg2);
@@ -1905,7 +2098,7 @@ _wrap_sqlite3_column_double(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (double)sqlite3_column_double(arg1,arg2);
@@ -1923,7 +2116,7 @@ _wrap_sqlite3_column_int(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (double)sqlite3_column_int(arg1,arg2);
@@ -1941,7 +2134,7 @@ _wrap_sqlite3_column_int64(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = sqlite3_column_int64(arg1,arg2);
@@ -1961,7 +2154,7 @@ _wrap_sqlite3_column_text(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (char *)sqlite3_column_text(arg1,arg2);
@@ -1981,7 +2174,7 @@ _wrap_sqlite3_column_text16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (void *)sqlite3_column_text16(arg1,arg2);
@@ -2005,7 +2198,7 @@ _wrap_sqlite3_column_type(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
arg2 = NUM2INT(argv[1]);
result = (int)sqlite3_column_type(arg1,arg2);
@@ -2022,7 +2215,7 @@ _wrap_sqlite3_finalize(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_finalize(arg1);
vresult = INT2NUM(result);
@@ -2038,7 +2231,7 @@ _wrap_sqlite3_reset(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_stmt, 0);
result = (int)sqlite3_reset(arg1);
vresult = INT2NUM(result);
@@ -2061,14 +2254,14 @@ _wrap_sqlite3_create_function(int argc, VALUE *argv, VALUE self) {
if ((argc < 8) || (argc > 8))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 8)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
arg2 = StringValuePtr(argv[1]);
arg3 = NUM2INT(argv[2]);
arg4 = NUM2INT(argv[3]);
- SWIG_ConvertPtr(argv[4], (void **) &arg5, 0, 1);
- SWIG_ConvertPtr(argv[5], (void **) &arg6, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 1);
- SWIG_ConvertPtr(argv[6], (void **) &arg7, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 1);
- SWIG_ConvertPtr(argv[7], (void **) &arg8, SWIGTYPE_p_f_p_sqlite3_context__void, 1);
+ SWIG_ConvertPtr(argv[4], (void **) &arg5, 0, SWIG_POINTER_EXCEPTION|0);
+ SWIG_ConvertPtr(argv[5], (void **) &arg6, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 0);
+ SWIG_ConvertPtr(argv[6], (void **) &arg7, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 0);
+ SWIG_ConvertPtr(argv[7], (void **) &arg8, SWIGTYPE_p_f_p_sqlite3_context__void, 0);
result = (int)sqlite3_create_function(arg1,(char const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8);
vresult = INT2NUM(result);
@@ -2091,16 +2284,16 @@ _wrap_sqlite3_create_function16(int argc, VALUE *argv, VALUE self) {
if ((argc < 8) || (argc > 8))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 8)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
}
arg3 = NUM2INT(argv[2]);
arg4 = NUM2INT(argv[3]);
- SWIG_ConvertPtr(argv[4], (void **) &arg5, 0, 1);
- SWIG_ConvertPtr(argv[5], (void **) &arg6, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 1);
- SWIG_ConvertPtr(argv[6], (void **) &arg7, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 1);
- SWIG_ConvertPtr(argv[7], (void **) &arg8, SWIGTYPE_p_f_p_sqlite3_context__void, 1);
+ SWIG_ConvertPtr(argv[4], (void **) &arg5, 0, SWIG_POINTER_EXCEPTION|0);
+ SWIG_ConvertPtr(argv[5], (void **) &arg6, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 0);
+ SWIG_ConvertPtr(argv[6], (void **) &arg7, SWIGTYPE_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 0);
+ SWIG_ConvertPtr(argv[7], (void **) &arg8, SWIGTYPE_p_f_p_sqlite3_context__void, 0);
result = (int)sqlite3_create_function16(arg1,(void const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8);
vresult = INT2NUM(result);
@@ -2116,7 +2309,7 @@ _wrap_sqlite3_aggregate_count(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
result = (int)sqlite3_aggregate_count(arg1);
vresult = INT2NUM(result);
@@ -2132,7 +2325,7 @@ _wrap_sqlite3_value_blob(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (VALBLOB *)sqlite3_value_blob(arg1);
{
@@ -2150,7 +2343,7 @@ _wrap_sqlite3_value_bytes(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (int)sqlite3_value_bytes(arg1);
vresult = INT2NUM(result);
@@ -2166,7 +2359,7 @@ _wrap_sqlite3_value_bytes16(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (int)sqlite3_value_bytes16(arg1);
vresult = INT2NUM(result);
@@ -2182,7 +2375,7 @@ _wrap_sqlite3_value_double(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (double)sqlite3_value_double(arg1);
vresult = rb_float_new(result);
@@ -2198,7 +2391,7 @@ _wrap_sqlite3_value_int(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (int)sqlite3_value_int(arg1);
vresult = INT2NUM(result);
@@ -2214,7 +2407,7 @@ _wrap_sqlite3_value_int64(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = sqlite3_value_int64(arg1);
{
@@ -2232,7 +2425,7 @@ _wrap_sqlite3_value_text(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (char *)sqlite3_value_text(arg1);
{
@@ -2250,7 +2443,7 @@ _wrap_sqlite3_value_text16(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (void *)sqlite3_value_text16(arg1);
{
@@ -2272,7 +2465,7 @@ _wrap_sqlite3_value_text16le(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (void *)sqlite3_value_text16le(arg1);
{
@@ -2294,7 +2487,7 @@ _wrap_sqlite3_value_text16be(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (void *)sqlite3_value_text16be(arg1);
{
@@ -2316,7 +2509,7 @@ _wrap_sqlite3_value_type(int argc, VALUE *argv, VALUE self) {
if ((argc < 1) || (argc > 1))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_value, 0);
result = (int)sqlite3_value_type(arg1);
vresult = INT2NUM(result);
@@ -2333,7 +2526,7 @@ _wrap_sqlite3_result_blob(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2352,7 +2545,7 @@ _wrap_sqlite3_result_double(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
arg2 = (double) NUM2DBL(argv[1]);
sqlite3_result_double(arg1,arg2);
@@ -2368,7 +2561,7 @@ _wrap_sqlite3_result_error(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2387,7 +2580,7 @@ _wrap_sqlite3_result_error16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2405,7 +2598,7 @@ _wrap_sqlite3_result_int(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
arg2 = NUM2INT(argv[1]);
sqlite3_result_int(arg1,arg2);
@@ -2420,7 +2613,7 @@ _wrap_sqlite3_result_int64(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = rb_big2ll( argv[1] );
}
@@ -2439,7 +2632,7 @@ _wrap_sqlite3_result_text(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2460,7 +2653,7 @@ _wrap_sqlite3_result_text16(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2481,7 +2674,7 @@ _wrap_sqlite3_result_text16le(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2502,7 +2695,7 @@ _wrap_sqlite3_result_text16be(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
{
arg2 = (void*)RSTRING(argv[1])->ptr;
arg3 = RSTRING(argv[1])->len;
@@ -2521,8 +2714,8 @@ _wrap_sqlite3_result_value(int argc, VALUE *argv, VALUE self) {
if ((argc < 2) || (argc > 2))
rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)",argc);
- SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 1);
- SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_sqlite3_value, 1);
+ SWIG_ConvertPtr(argv[0], (void **) &arg1, SWIGTYPE_p_sqlite3_context, 0);
+ SWIG_ConvertPtr(argv[1], (void **) &arg2, SWIGTYPE_p_sqlite3_value, 0);
sqlite3_result_value(arg1,arg2);
return Qnil;
@@ -2554,56 +2747,246 @@ _wrap_sqlite3_aggregate_context(int argc, VALUE *argv, VALUE self) {
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-static swig_type_info _swigt__p_f_p_sqlite3_context__void[] = {{"_p_f_p_sqlite3_context__void", 0, "void (*)(sqlite3_context *)", 0, 0, 0, 0},{"_p_f_p_sqlite3_context__void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_f_p_void_p_q_const__char__void[] = {{"_p_f_p_void_p_q_const__char__void", 0, "void (*)(void *,char const *)", 0, 0, 0, 0},{"_p_f_p_void_p_q_const__char__void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_f_p_void__void[] = {{"_p_f_p_void__void", 0, "void (*)(void *)", 0, 0, 0, 0},{"_p_f_p_void__void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_sqlite3_context[] = {{"_p_sqlite3_context", 0, "sqlite3_context *", 0, 0, 0, 0},{"_p_sqlite3_context", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_unsigned_long[] = {{"_p_unsigned_long", 0, "unsigned long *|VALUE *", 0, 0, 0, 0},{"_p_unsigned_long", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int[] = {{"_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int", 0, "int (*)(void *,int,char const *,char const *,char const *,char const *)", 0, 0, 0, 0},{"_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void[] = {{"_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void", 0, "void (*)(sqlite3_context *,int,sqlite3_value **)", 0, 0, 0, 0},{"_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_p_void[] = {{"_p_p_void", 0, "void **", 0, 0, 0, 0},{"_p_p_void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_void[] = {{"_p_void", 0, "void *|VALBLOB *", 0, 0, 0, 0},{"_p_void", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_f_p_void_int__int[] = {{"_p_f_p_void_int__int", 0, "int (*)(void *,int)", 0, 0, 0, 0},{"_p_f_p_void_int__int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_p_char[] = {{"_p_p_char", 0, "char **", 0, 0, 0, 0},{"_p_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_p_sqlite3[] = {{"_p_p_sqlite3", 0, "sqlite3 **", 0, 0, 0, 0},{"_p_p_sqlite3", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_sqlite3[] = {{"_p_sqlite3", 0, "sqlite3 *", 0, 0, 0, 0},{"_p_sqlite3", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_sqlite3_stmt[] = {{"_p_sqlite3_stmt", 0, "sqlite3_stmt *", 0, 0, 0, 0},{"_p_sqlite3_stmt", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_p_sqlite3_stmt[] = {{"_p_p_sqlite3_stmt", 0, "sqlite3_stmt **", 0, 0, 0, 0},{"_p_p_sqlite3_stmt", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_sqlite3_value[] = {{"_p_sqlite3_value", 0, "sqlite3_value *", 0, 0, 0, 0},{"_p_sqlite3_value", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_CallbackData[] = {{"_p_CallbackData", 0, "struct CallbackData *", 0, 0, 0, 0},{"_p_CallbackData", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-static swig_type_info _swigt__p_sqlite_int64[] = {{"_p_sqlite_int64", 0, "sqlite_int64 *", 0, 0, 0, 0},{"_p_sqlite_int64", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
-
-static swig_type_info *swig_types_initial[] = {
-_swigt__p_f_p_sqlite3_context__void,
-_swigt__p_f_p_void_p_q_const__char__void,
-_swigt__p_f_p_void__void,
-_swigt__p_sqlite3_context,
-_swigt__p_unsigned_long,
-_swigt__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int,
-_swigt__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void,
-_swigt__p_p_void,
-_swigt__p_void,
-_swigt__p_f_p_void_int__int,
-_swigt__p_p_char,
-_swigt__p_p_sqlite3,
-_swigt__p_sqlite3,
-_swigt__p_sqlite3_stmt,
-_swigt__p_p_sqlite3_stmt,
-_swigt__p_sqlite3_value,
-_swigt__p_CallbackData,
-_swigt__p_sqlite_int64,
-0
+static swig_type_info _swigt__p_CallbackData = {"_p_CallbackData", "struct CallbackData *", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_sqlite3_context__void = {"_p_f_p_sqlite3_context__void", "void (*)(sqlite3_context *)", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void = {"_p_f_p_sqlite3_context_int_p_p_sqlite3_value__void", "void (*)(sqlite3_context *,int,sqlite3_value **)", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_void__void = {"_p_f_p_void__void", "void (*)(void *)", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_void_int__int = {"_p_f_p_void_int__int", "int (*)(void *,int)", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int = {"_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int", "int (*)(void *,int,char const *,char const *,char const *,char const *)", 0, 0, 0};
+static swig_type_info _swigt__p_f_p_void_p_q_const__char__void = {"_p_f_p_void_p_q_const__char__void", "void (*)(void *,char const *)", 0, 0, 0};
+static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, 0};
+static swig_type_info _swigt__p_p_sqlite3 = {"_p_p_sqlite3", "sqlite3 **", 0, 0, 0};
+static swig_type_info _swigt__p_p_sqlite3_stmt = {"_p_p_sqlite3_stmt", "sqlite3_stmt **", 0, 0, 0};
+static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **", 0, 0, 0};
+static swig_type_info _swigt__p_sqlite3 = {"_p_sqlite3", "sqlite3 *", 0, 0, 0};
+static swig_type_info _swigt__p_sqlite3_context = {"_p_sqlite3_context", "sqlite3_context *", 0, 0, 0};
+static swig_type_info _swigt__p_sqlite3_stmt = {"_p_sqlite3_stmt", "sqlite3_stmt *", 0, 0, 0};
+static swig_type_info _swigt__p_sqlite3_value = {"_p_sqlite3_value", "sqlite3_value *", 0, 0, 0};
+static swig_type_info _swigt__p_sqlite_int64 = {"_p_sqlite_int64", "sqlite_int64 *", 0, 0, 0};
+static swig_type_info _swigt__p_unsigned_long = {"_p_unsigned_long", "unsigned long *|VALUE *", 0, 0, 0};
+static swig_type_info _swigt__p_void = {"_p_void", "void *|VALBLOB *", 0, 0, 0};
+
+static swig_type_info *swig_type_initial[] = {
+ &_swigt__p_CallbackData,
+ &_swigt__p_f_p_sqlite3_context__void,
+ &_swigt__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void,
+ &_swigt__p_f_p_void__void,
+ &_swigt__p_f_p_void_int__int,
+ &_swigt__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int,
+ &_swigt__p_f_p_void_p_q_const__char__void,
+ &_swigt__p_p_char,
+ &_swigt__p_p_sqlite3,
+ &_swigt__p_p_sqlite3_stmt,
+ &_swigt__p_p_void,
+ &_swigt__p_sqlite3,
+ &_swigt__p_sqlite3_context,
+ &_swigt__p_sqlite3_stmt,
+ &_swigt__p_sqlite3_value,
+ &_swigt__p_sqlite_int64,
+ &_swigt__p_unsigned_long,
+ &_swigt__p_void,
+};
+
+static swig_cast_info _swigc__p_CallbackData[] = { {&_swigt__p_CallbackData, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_sqlite3_context__void[] = { {&_swigt__p_f_p_sqlite3_context__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void[] = { {&_swigt__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_void__void[] = { {&_swigt__p_f_p_void__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_void_int__int[] = { {&_swigt__p_f_p_void_int__int, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int[] = { {&_swigt__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_f_p_void_p_q_const__char__void[] = { {&_swigt__p_f_p_void_p_q_const__char__void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_sqlite3[] = { {&_swigt__p_p_sqlite3, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_sqlite3_stmt[] = { {&_swigt__p_p_sqlite3_stmt, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_p_void[] = { {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sqlite3[] = { {&_swigt__p_sqlite3, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sqlite3_context[] = { {&_swigt__p_sqlite3_context, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sqlite3_stmt[] = { {&_swigt__p_sqlite3_stmt, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sqlite3_value[] = { {&_swigt__p_sqlite3_value, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_sqlite_int64[] = { {&_swigt__p_sqlite_int64, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_unsigned_long[] = { {&_swigt__p_unsigned_long, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
+
+static swig_cast_info *swig_cast_initial[] = {
+ _swigc__p_CallbackData,
+ _swigc__p_f_p_sqlite3_context__void,
+ _swigc__p_f_p_sqlite3_context_int_p_p_sqlite3_value__void,
+ _swigc__p_f_p_void__void,
+ _swigc__p_f_p_void_int__int,
+ _swigc__p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int,
+ _swigc__p_f_p_void_p_q_const__char__void,
+ _swigc__p_p_char,
+ _swigc__p_p_sqlite3,
+ _swigc__p_p_sqlite3_stmt,
+ _swigc__p_p_void,
+ _swigc__p_sqlite3,
+ _swigc__p_sqlite3_context,
+ _swigc__p_sqlite3_stmt,
+ _swigc__p_sqlite3_value,
+ _swigc__p_sqlite_int64,
+ _swigc__p_unsigned_long,
+ _swigc__p_void,
};
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+/*************************************************************************
+ * Type initialization:
+ * This problem is tough by the requirement that no dynamic
+ * memory is used. Also, since swig_type_info structures store pointers to
+ * swig_cast_info structures and swig_cast_info structures store pointers back
+ * to swig_type_info structures, we need some lookup code at initialization.
+ * The idea is that swig generates all the structures that are needed.
+ * The runtime then collects these partially filled structures.
+ * The SWIG_InitializeModule function takes these initial arrays out of
+ * swig_module, and does all the lookup, filling in the swig_module.types
+ * array with the correct data and linking the correct swig_cast_info
+ * structures together.
+
+ * The generated swig_type_info structures are assigned staticly to an initial
+ * array. We just loop though that array, and handle each type individually.
+ * First we lookup if this type has been already loaded, and if so, use the
+ * loaded structure instead of the generated one. Then we have to fill in the
+ * cast linked list. The cast data is initially stored in something like a
+ * two-dimensional array. Each row corresponds to a type (there are the same
+ * number of rows as there are in the swig_type_initial array). Each entry in
+ * a column is one of the swig_cast_info structures for that type.
+ * The cast_initial array is actually an array of arrays, because each row has
+ * a variable number of columns. So to actually build the cast linked list,
+ * we find the array of casts associated with the type, and loop through it
+ * adding the casts to the list. The one last trick we need to do is making
+ * sure the type pointer in the swig_cast_info struct is correct.
+
+ * First off, we lookup the cast->type name to see if it is already loaded.
+ * There are three cases to handle:
+ * 1) If the cast->type has already been loaded AND the type we are adding
+ * casting info to has not been loaded (it is in this module), THEN we
+ * replace the cast->type pointer with the type pointer that has already
+ * been loaded.
+ * 2) If BOTH types (the one we are adding casting info to, and the
+ * cast->type) are loaded, THEN the cast info has already been loaded by
+ * the previous module so we just ignore it.
+ * 3) Finally, if cast->type has not already been loaded, then we add that
+ * swig_cast_info to the linked list (because the cast->type) pointer will
+ * be correct.
+**/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGRUNTIME void
+SWIG_InitializeModule(void *clientdata) {
+ swig_type_info *type, *ret;
+ swig_cast_info *cast;
+ size_t i;
+ swig_module_info *module_head;
+ static int init_run = 0;
+
+ clientdata = clientdata;
+
+ if (init_run) return;
+ init_run = 1;
+
+ /* Initialize the swig_module */
+ swig_module.type_initial = swig_type_initial;
+ swig_module.cast_initial = swig_cast_initial;
+
+ /* Try and load any already created modules */
+ module_head = SWIG_GetModule(clientdata);
+ if (module_head) {
+ swig_module.next = module_head->next;
+ module_head->next = &swig_module;
+ } else {
+ /* This is the first module loaded */
+ swig_module.next = &swig_module;
+ SWIG_SetModule(clientdata, &swig_module);
+ }
+
+ /* Now work on filling in swig_module.types */
+ for (i = 0; i < swig_module.size; ++i) {
+ type = 0;
+
+ /* if there is another module already loaded */
+ if (swig_module.next != &swig_module) {
+ type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
+ }
+ if (type) {
+ /* Overwrite clientdata field */
+ if (swig_module.type_initial[i]->clientdata) type->clientdata = swig_module.type_initial[i]->clientdata;
+ } else {
+ type = swig_module.type_initial[i];
+ }
+
+ /* Insert casting types */
+ cast = swig_module.cast_initial[i];
+ while (cast->type) {
+
+ /* Don't need to add information already in the list */
+ ret = 0;
+ if (swig_module.next != &swig_module) {
+ ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
+ }
+ if (ret && type == swig_module.type_initial[i]) {
+ cast->type = ret;
+ ret = 0;
+ }
+
+ if (!ret) {
+ if (type->cast) {
+ type->cast->prev = cast;
+ cast->next = type->cast;
+ }
+ type->cast = cast;
+ }
+
+ cast++;
+ }
+
+ /* Set entry in modules->types array equal to the type */
+ swig_module.types[i] = type;
+ }
+ swig_module.types[i] = 0;
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types. It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientData(void) {
+ size_t i;
+ swig_cast_info *equiv;
+ static int init_run = 0;
+
+ if (init_run) return;
+ init_run = 1;
+
+ for (i = 0; i < swig_module.size; i++) {
+ if (swig_module.types[i]->clientdata) {
+ equiv = swig_module.types[i]->cast;
+ while (equiv) {
+ if (!equiv->converter) {
+ if (equiv->type && !equiv->type->clientdata)
+ SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
+ }
+ equiv = equiv->next;
+ }
+ }
+ }
+}
+
+#ifdef __cplusplus
+}
+#endif
+
#ifdef __cplusplus
extern "C"
#endif
-SWIGEXPORT(void) Init_API(void) {
- int i;
+SWIGEXPORT void Init_API(void) {
+ size_t i;
SWIG_InitRuntime();
mAPI = rb_define_module("SQLite3");
@@ -2611,11 +2994,12 @@ SWIGEXPORT(void) Init_API(void) {
mAPI = rb_define_module_under(mAPI, "Native");
mAPI = rb_define_module_under(mAPI, "API");
- for (i = 0; swig_types_initial[i]; i++) {
- swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
- SWIG_define_class(swig_types[i]);
+ SWIG_InitializeModule(0);
+ for (i = 0; i < swig_module.size; i++) {
+ SWIG_define_class(swig_module.types[i]);
}
+ SWIG_RubyInitializeTrackings();
cCallbackData.klass = rb_define_class_under(mAPI, "CallbackData", rb_cObject);
SWIG_TypeClientData(SWIGTYPE_p_CallbackData, (void *) &cCallbackData);
@@ -2627,7 +3011,7 @@ SWIGEXPORT(void) Init_API(void) {
rb_define_method(cCallbackData.klass, "proc2", _wrap_CallbackData_proc2_get, -1);
rb_define_method(cCallbackData.klass, "data=", _wrap_CallbackData_data_set, -1);
rb_define_method(cCallbackData.klass, "data", _wrap_CallbackData_data_get, -1);
- cCallbackData.mark = 0;
+ cCallbackData.mark = (void (*)(void *)) mark_CallbackData;
cCallbackData.destroy = (void (*)(void *)) free_CallbackData;
rb_define_const(mAPI,"Sqlite3_ruby_busy_handler", SWIG_NewPointerObj((void *) Sqlite3_ruby_busy_handler, SWIGTYPE_p_f_p_void_int__int,0));
rb_define_const(mAPI,"Sqlite3_ruby_authorizer", SWIG_NewPointerObj((void *) Sqlite3_ruby_authorizer, SWIGTYPE_p_f_p_void_int_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char__int,0));