diff options
| author | Jamis Buck <jamis@37signals.com> | 2007-01-13 18:42:29 +0000 |
|---|---|---|
| committer | Jamis Buck <jamis@37signals.com> | 2007-01-13 18:42:29 +0000 |
| commit | 9f39984c8f2b5b4ff4d64824f92247c69d58f0a6 (patch) | |
| tree | ba3ff32feab5b04927d309e4678ff554b9f7ec71 /ext/sqlite3_api | |
| parent | c1fd5776d1e0cf4fc961a0b2001cc02f5ecb9ef4 (diff) | |
| download | third_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/Makefile | 143 | ||||
| -rw-r--r-- | ext/sqlite3_api/extconf.rb | 2 | ||||
| -rw-r--r-- | ext/sqlite3_api/sqlite3_api.i | 12 | ||||
| -rw-r--r-- | ext/sqlite3_api/sqlite3_api_wrap.c | 1182 |
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)); |
