intersys 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/Makefile +9 -9
- data/lib/callable.rb +86 -0
- data/lib/database.c +21 -1
- data/lib/extconf.rb +33 -9
- data/lib/global.c +66 -0
- data/lib/intersys.c +24 -3
- data/lib/intersys.h +29 -2
- data/lib/intersys.rb +59 -350
- data/lib/intersys_adapter.rb +132 -0
- data/lib/object.rb +163 -0
- data/lib/query.c +143 -3
- data/lib/reflection.rb +113 -0
- data/lib/sql_include/iodbcunix.h +149 -0
- data/lib/sql_include/sql.h +1189 -0
- data/lib/sql_include/sqlext.h +2566 -0
- data/lib/sql_include/sqltypes.h +421 -0
- data/lib/sql_include/sqlucode.h +812 -0
- data/test/adapter.rb +19 -0
- data/test/global.rb +12 -0
- data/test/query.rb +5 -0
- data/test/reflection.rb +7 -6
- data/test/strings.rb +2 -1
- metadata +15 -3
- data/lib/test.rb +0 -30
data/lib/Makefile
CHANGED
@@ -4,11 +4,11 @@ SHELL = /bin/sh
|
|
4
4
|
#### Start of system configuration section. ####
|
5
5
|
|
6
6
|
srcdir = .
|
7
|
-
topdir = /opt/local/lib/ruby/1.8/
|
7
|
+
topdir = /opt/local/lib/ruby/1.8/i686-darwin8.7.1
|
8
8
|
hdrdir = $(topdir)
|
9
9
|
VPATH = $(srcdir):$(topdir):$(hdrdir)
|
10
10
|
prefix = $(DESTDIR)/opt/local
|
11
|
-
exec_prefix = $(
|
11
|
+
exec_prefix = $(prefix)
|
12
12
|
sitedir = $(prefix)/lib/ruby/site_ruby
|
13
13
|
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
14
14
|
archdir = $(rubylibdir)/$(arch)
|
@@ -19,7 +19,7 @@ includedir = $(prefix)/include
|
|
19
19
|
infodir = $(prefix)/info
|
20
20
|
sysconfdir = $(prefix)/etc
|
21
21
|
mandir = $(DESTDIR)/opt/local/share/man
|
22
|
-
libdir = $(
|
22
|
+
libdir = $(exec_prefix)/lib
|
23
23
|
sharedstatedir = $(prefix)/com
|
24
24
|
oldincludedir = $(DESTDIR)/usr/include
|
25
25
|
sitearchdir = $(sitelibdir)/$(sitearch)
|
@@ -36,19 +36,19 @@ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
|
36
36
|
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
37
37
|
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
38
38
|
|
39
|
-
CFLAGS = -fno-common -O -pipe -I/opt/local/include -fno-common -pipe -fno-common -I/Applications/Cache/dev/cpp/include -I/cygdrive/c/Progra~1/Cache/dev/cpp/include -I/cygdrive/c/Cachesys/dev/cpp/include -Wall
|
40
|
-
CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir)
|
39
|
+
CFLAGS = -fno-common -O -pipe -I/opt/local/include -fno-common -pipe -fno-common -I/home/max/cache/dev/cpp/include -I/Applications/Cache/dev/cpp/include -I/cygdrive/c/Progra~1/Cache/dev/cpp/include -I/cygdrive/c/Cachesys/dev/cpp/include -IC:/Cachesys/dev/cpp/include -I./sql_include -Wall
|
40
|
+
CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_C_API_H -DHAVE_SQL_H -DHAVE_SQLEXT_H -O -pipe -I/opt/local/include
|
41
41
|
CXXFLAGS = $(CFLAGS)
|
42
|
-
DLDFLAGS = -L/opt/local/lib
|
42
|
+
DLDFLAGS = -L/opt/local/lib -L/home/max/cache/dev/cpp/lib -L/Applications/Cache/dev/cpp/lib -L/cygdrive/c/Progra~1/Cache/dev/cpp/lib -L/cygdrive/c/Cachesys/dev/cpp/lib -LC:/Cachesys/dev/cpp/lib -Wall
|
43
43
|
LDSHARED = cc -dynamic -bundle -undefined suppress -flat_namespace
|
44
44
|
AR = ar
|
45
45
|
EXEEXT =
|
46
46
|
|
47
47
|
RUBY_INSTALL_NAME = ruby
|
48
48
|
RUBY_SO_NAME = ruby
|
49
|
-
arch =
|
50
|
-
sitearch =
|
51
|
-
vendorarch =
|
49
|
+
arch = i686-darwin8.7.1
|
50
|
+
sitearch = i686-darwin8.7.1
|
51
|
+
vendorarch = i686-darwin8.7.1
|
52
52
|
ruby_version = 1.8
|
53
53
|
ruby = /opt/local/bin/ruby
|
54
54
|
RUBY = $(ruby)
|
data/lib/callable.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
module Intersys
|
2
|
+
|
3
|
+
module Callable
|
4
|
+
# Returns ClassDefinition object for current class
|
5
|
+
def intersys_reflector
|
6
|
+
@reflector ||= Intersys::Reflection::ClassDefinition.open(class_name)
|
7
|
+
end
|
8
|
+
|
9
|
+
# returns list of methods for this class
|
10
|
+
def intersys_methods
|
11
|
+
@methods ||= intersys_reflector._methods
|
12
|
+
end
|
13
|
+
|
14
|
+
# returns list of properties for current class
|
15
|
+
def intersys_properties
|
16
|
+
@properties ||= intersys_reflector.properties
|
17
|
+
end
|
18
|
+
|
19
|
+
#protected
|
20
|
+
# Loads property definition with required name for required object
|
21
|
+
# for internal use only
|
22
|
+
def intersys_property(name)
|
23
|
+
Property.new(database, class_name, name.to_s, self)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Loads method definition with required name for required object
|
27
|
+
# for internal use only
|
28
|
+
def intersys_method(name)
|
29
|
+
Method.new(database, class_name, name.to_s, self)
|
30
|
+
end
|
31
|
+
|
32
|
+
public
|
33
|
+
# call class method
|
34
|
+
def intersys_call(method_name, *args)
|
35
|
+
intersys_method(method_name).call!(args)
|
36
|
+
end
|
37
|
+
alias :call :intersys_call
|
38
|
+
|
39
|
+
def intersys_has_property?(property)
|
40
|
+
self.intersys_reflector.properties.to_a.include?(property)
|
41
|
+
end
|
42
|
+
|
43
|
+
def intersys_has_method?(method)
|
44
|
+
self.intersys_reflector._methods.to_a.include?(method)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get the specified property
|
48
|
+
def intersys_get(property)
|
49
|
+
intersys_property(property).get
|
50
|
+
end
|
51
|
+
|
52
|
+
# Set the specified property
|
53
|
+
def intersys_set(property, value)
|
54
|
+
intersys_property(property).set(value)
|
55
|
+
end
|
56
|
+
|
57
|
+
def method_missing(method, *args)
|
58
|
+
method_name = method.to_s.camelize
|
59
|
+
if match_data = method_name.match(/intersys_(.*)/)
|
60
|
+
# Protection from errors in this method
|
61
|
+
return super(method, *args)
|
62
|
+
end
|
63
|
+
if match_data = method_name.match(/(\w+)=/)
|
64
|
+
return intersys_set(match_data.captures.first, args.first)
|
65
|
+
end
|
66
|
+
return intersys_get(method_name) if intersys_has_property?(method_name) && args.empty?
|
67
|
+
begin
|
68
|
+
return intersys_call(method_name, *args)
|
69
|
+
rescue NoMethodError => e
|
70
|
+
end
|
71
|
+
begin
|
72
|
+
return intersys_call("%"+method_name, *args)
|
73
|
+
rescue NoMethodError => e
|
74
|
+
end
|
75
|
+
super(method, *args)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
class Object
|
82
|
+
include Callable
|
83
|
+
end
|
84
|
+
Intersys::Object.extend(Callable)
|
85
|
+
|
86
|
+
end
|
data/lib/database.c
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
#include "intersys.h"
|
2
2
|
|
3
|
-
|
3
|
+
|
4
|
+
static void intersys_base_real_close(struct rbDatabase* base) {
|
5
|
+
if(base->closed) return;
|
6
|
+
base->closed = 1;
|
4
7
|
RUN(cbind_free_db(base->database));
|
5
8
|
RUN(cbind_free_conn(base->connection));
|
9
|
+
}
|
10
|
+
|
11
|
+
void intersys_base_free(struct rbDatabase* base) {
|
12
|
+
intersys_base_real_close(base);
|
6
13
|
free(base);
|
7
14
|
}
|
8
15
|
|
@@ -32,6 +39,7 @@ VALUE intersys_base_connect(VALUE self, VALUE options) {
|
|
32
39
|
char conn_str[256];
|
33
40
|
wchar_t w_conn_str[256];
|
34
41
|
int size;
|
42
|
+
bool_t is_uni;
|
35
43
|
|
36
44
|
VALUE host, port, user, password, namespace, timeout;
|
37
45
|
|
@@ -58,9 +66,21 @@ VALUE intersys_base_connect(VALUE self, VALUE options) {
|
|
58
66
|
RUN(cbind_alloc_conn(w_conn_str, WCHARSTR(user), WCHARSTR(password),
|
59
67
|
FIX2INT(timeout), &base->connection));
|
60
68
|
RUN(cbind_alloc_db(base->connection, &base->database));
|
69
|
+
RUN(cbind_is_uni_srv(base->database, &is_uni));
|
70
|
+
if(!is_uni) {
|
71
|
+
rb_warn("Warning! Cache database is not in Unicode mode. Perhaps, everything will fail working. In this case contact max@maxidoors.ru");
|
72
|
+
}
|
61
73
|
return self;
|
62
74
|
}
|
63
75
|
|
76
|
+
VALUE intersys_base_close(VALUE self) {
|
77
|
+
struct rbDatabase* base;
|
78
|
+
Data_Get_Struct(self, struct rbDatabase, base);
|
79
|
+
intersys_base_real_close(base);
|
80
|
+
return Qtrue;
|
81
|
+
}
|
82
|
+
|
83
|
+
|
64
84
|
VALUE intersys_base_start(VALUE self) {
|
65
85
|
struct rbDatabase* base;
|
66
86
|
Data_Get_Struct(self, struct rbDatabase, base);
|
data/lib/extconf.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "mkmf"
|
4
|
-
#CONFIG["CPP"] = "g++"
|
5
|
-
CONFIG["CC"] = "gcc -g"
|
6
4
|
|
5
|
+
CONFIG["CC"] = "gcc -g" unless RUBY_PLATFORM.match /mswin/
|
6
|
+
|
7
|
+
WIN32 = RUBY_PLATFORM.match(/mswin/)
|
8
|
+
MACOS = RUBY_PLATFORM.match(/darwin/)
|
7
9
|
|
8
10
|
#alias :old_cpp_include :cpp_include
|
9
11
|
#def cpp_include(header)
|
@@ -13,14 +15,14 @@ CONFIG["CC"] = "gcc -g"
|
|
13
15
|
#EOF
|
14
16
|
#end
|
15
17
|
|
16
|
-
@cache_placements = ["/Applications/Cache", "/cygdrive/c/Progra~1/Cache", "/cygdrive/c/Cachesys"]
|
18
|
+
@cache_placements = ["/home/max/cache", "/Applications/Cache", "/cygdrive/c/Progra~1/Cache", "/cygdrive/c/Cachesys", "C:/Cachesys"]
|
17
19
|
|
18
20
|
def locations(suffix)
|
19
|
-
@cache_placements.map {|place| place + suffix}
|
20
|
-
end
|
21
|
+
@cache_placements.map {|place| place + suffix}.map{|place| place.split("/").join(WIN32 ? "\\" : "/") }
|
22
|
+
end
|
21
23
|
|
22
24
|
def include_locations
|
23
|
-
locations("/dev/cpp/include")
|
25
|
+
locations("/dev/cpp/include") + ["./sql_include"]
|
24
26
|
end
|
25
27
|
|
26
28
|
def library_locations
|
@@ -31,9 +33,31 @@ end
|
|
31
33
|
def include_flags
|
32
34
|
" "+(include_locations.map { |place| "-I"+place} + ["-Wall"]).join(" ")
|
33
35
|
end
|
34
|
-
|
36
|
+
|
37
|
+
if WIN32
|
38
|
+
$CFLAGS << ' -I"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\PlatformSDK\\Include" '
|
39
|
+
$CFLAGS << ' -I"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\include" '
|
40
|
+
$LDFLAGS << ' -libpath:"C:\\CacheSys\\dev\\cpp\\lib" '
|
41
|
+
$LDFLAGS << ' -libpath:"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\lib" '
|
42
|
+
$LDFLAGS << ' -libpath:"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\PlatformSDK\\Lib" '
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def link_flags
|
47
|
+
" "+(library_locations.map { |place| "-L"+place} + ["-Wall"]).join(" ")
|
48
|
+
end
|
49
|
+
|
35
50
|
$CFLAGS << include_flags
|
36
|
-
|
37
|
-
|
51
|
+
$LDFLAGS << link_flags
|
52
|
+
|
53
|
+
have_header "c_api.h"
|
54
|
+
have_header "sql.h"
|
55
|
+
have_header "sqlext.h"
|
56
|
+
|
57
|
+
unless MACOS
|
58
|
+
find_library "cbind", "cbind_alloc_db",*library_locations
|
59
|
+
end
|
60
|
+
|
61
|
+
|
38
62
|
create_makefile 'intersys_cache'
|
39
63
|
|
data/lib/global.c
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
#include "intersys.h"
|
2
|
+
|
3
|
+
|
4
|
+
static void intersys_global_mark(struct rbGlobal* global) {
|
5
|
+
rb_gc_mark(global->name);
|
6
|
+
}
|
7
|
+
|
8
|
+
VALUE intersys_global_s_allocate(VALUE klass) {
|
9
|
+
struct rbGlobal* global = ALLOC(struct rbGlobal);
|
10
|
+
global->name = Qnil;
|
11
|
+
return Data_Wrap_Struct(klass, intersys_global_mark, 0, global);
|
12
|
+
}
|
13
|
+
|
14
|
+
VALUE intersys_global_initialize(VALUE self, VALUE name) {
|
15
|
+
struct rbGlobal* global;
|
16
|
+
Data_Get_Struct(self, struct rbGlobal, global);
|
17
|
+
global->name = name;
|
18
|
+
return self;
|
19
|
+
}
|
20
|
+
|
21
|
+
VALUE intersys_global_set(int argc, VALUE *argv, VALUE self) {
|
22
|
+
struct rbGlobal* global;
|
23
|
+
int i;
|
24
|
+
VALUE value = argv[argc - 1];
|
25
|
+
argc--;
|
26
|
+
Data_Get_Struct(self, struct rbGlobal, global);
|
27
|
+
for(i = 0; i < argc; i++) {
|
28
|
+
// marshall dimension
|
29
|
+
}
|
30
|
+
// perform setting with value
|
31
|
+
return Qnil;
|
32
|
+
return value;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
VALUE intersys_global_get(int argc, VALUE *argv, VALUE self) {
|
37
|
+
struct rbGlobal* global;
|
38
|
+
int i;
|
39
|
+
VALUE value = Qnil;
|
40
|
+
Data_Get_Struct(self, struct rbGlobal, global);
|
41
|
+
for(i = 0; i < argc; i++) {
|
42
|
+
// marshall dimension
|
43
|
+
}
|
44
|
+
// perform getting with value
|
45
|
+
return value;
|
46
|
+
}
|
47
|
+
|
48
|
+
VALUE intersys_global_delete(int argc, VALUE *argv, VALUE self) {
|
49
|
+
struct rbGlobal* global;
|
50
|
+
int i;
|
51
|
+
Data_Get_Struct(self, struct rbGlobal, global);
|
52
|
+
for(i = 0; i < argc; i++) {
|
53
|
+
// marshall dimension
|
54
|
+
}
|
55
|
+
// perform getting with value
|
56
|
+
return Qnil;
|
57
|
+
}
|
58
|
+
|
59
|
+
|
60
|
+
VALUE intersys_global_name(VALUE self) {
|
61
|
+
struct rbGlobal* global;
|
62
|
+
Data_Get_Struct(self, struct rbGlobal, global);
|
63
|
+
return global->name;
|
64
|
+
}
|
65
|
+
|
66
|
+
|
data/lib/intersys.c
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
#include "intersys.h"
|
2
2
|
|
3
|
-
VALUE mIntersys, cDatabase,
|
3
|
+
VALUE mIntersys, cDatabase, cObject, cDefinition, cProperty, cMethod, cArgument, cGlobal;
|
4
4
|
VALUE cTime, cMarshallError, cUnMarshallError, cObjectNotFound, cIntersysException, cStatus;
|
5
5
|
|
6
|
+
#ifdef HAVE_SQL_H
|
7
|
+
VALUE cQuery;
|
8
|
+
#endif
|
9
|
+
|
6
10
|
void Init_intersys_cache() {
|
7
11
|
rb_define_method(rb_cString, "to_wchar", string_to_wchar, 0);
|
8
12
|
rb_define_method(rb_cString, "from_wchar", string_from_wchar, 0);
|
@@ -35,15 +39,24 @@ void Init_intersys_cache() {
|
|
35
39
|
rb_define_method(cDatabase, "rollback_db_transaction", intersys_base_rollback, 0);
|
36
40
|
rb_define_method(cDatabase, "rollback", intersys_base_rollback, 0);
|
37
41
|
rb_define_method(cDatabase, "level", intersys_base_level, 0);
|
42
|
+
rb_define_method(cDatabase, "close!", intersys_base_close, 0);
|
38
43
|
|
44
|
+
#ifdef HAVE_SQL_H
|
39
45
|
cQuery = rb_define_class_under(mIntersys, "Query", rb_cObject);
|
40
46
|
rb_define_alloc_func(cQuery, intersys_query_s_allocate);
|
41
|
-
rb_define_method(cQuery, "
|
47
|
+
rb_define_method(cQuery, "initialize", intersys_query_initialize, 2);
|
48
|
+
rb_define_method(cQuery, "bind_params", intersys_query_bind_params, 1);
|
42
49
|
rb_define_method(cQuery, "execute", intersys_query_execute, 0);
|
43
50
|
rb_define_method(cQuery, "fetch", intersys_query_fetch, 0);
|
51
|
+
rb_define_method(cQuery, "each", intersys_query_each, 0);
|
44
52
|
rb_define_method(cQuery, "column_name", intersys_query_column_name, 1);
|
45
53
|
rb_define_method(cQuery, "get_data", intersys_query_get_data, 1);
|
46
54
|
rb_define_method(cQuery, "close", intersys_query_close, 0);
|
55
|
+
rb_define_method(cQuery, "limit", intersys_query_get_limit, 0);
|
56
|
+
rb_define_method(cQuery, "limit=", intersys_query_set_limit, 1);
|
57
|
+
rb_define_method(cQuery, "offset", intersys_query_get_offset, 0);
|
58
|
+
rb_define_method(cQuery, "offset=", intersys_query_set_offset, 1);
|
59
|
+
#endif
|
47
60
|
|
48
61
|
cObject = rb_define_class_under(mIntersys, "Object", rb_cObject);
|
49
62
|
rb_define_alloc_func(cObject, intersys_object_s_allocate);
|
@@ -76,6 +89,7 @@ void Init_intersys_cache() {
|
|
76
89
|
cArgument = rb_define_class_under(mIntersys, "Argument", cDefinition);
|
77
90
|
rb_define_method(cArgument, "initialize", intersys_argument_initialize, 4);
|
78
91
|
rb_define_method(cArgument, "default", intersys_argument_default_value, 0);
|
92
|
+
rb_define_method(cArgument, "by_ref?", intersys_argument_is_by_ref, 0);
|
79
93
|
rb_define_method(cArgument, "marshall_dlist_element", intersys_argument_marshall_dlist_elem, 1);
|
80
94
|
rb_define_method(cArgument, "marshall_dlist", intersys_argument_marshall_dlist, 1);
|
81
95
|
/*
|
@@ -88,6 +102,13 @@ void Init_intersys_cache() {
|
|
88
102
|
"end\n" \
|
89
103
|
"end");
|
90
104
|
*/
|
91
|
-
|
105
|
+
|
106
|
+
cGlobal = rb_define_class_under(mIntersys, "Global", rb_cObject);
|
107
|
+
rb_define_alloc_func(cGlobal, intersys_global_s_allocate);
|
108
|
+
rb_define_method(cGlobal, "initialize", intersys_global_initialize, 1);
|
109
|
+
rb_define_method(cGlobal, "[]=", intersys_global_set, -1);
|
110
|
+
rb_define_method(cGlobal, "[]", intersys_global_get, -1);
|
111
|
+
rb_define_method(cGlobal, "delete", intersys_global_delete, -1);
|
112
|
+
rb_define_method(cGlobal, "name", intersys_global_name, 0);
|
92
113
|
}
|
93
114
|
|
data/lib/intersys.h
CHANGED
@@ -10,14 +10,20 @@
|
|
10
10
|
struct rbDatabase {
|
11
11
|
h_connection connection;
|
12
12
|
h_database database;
|
13
|
+
bool_t closed;
|
13
14
|
};
|
14
15
|
|
16
|
+
|
17
|
+
#ifdef HAVE_SQL_H
|
15
18
|
struct rbQuery {
|
16
19
|
h_query query;
|
17
20
|
bool_t empty;
|
18
21
|
bool_t closed;
|
19
22
|
bool_t executed;
|
23
|
+
int offset;
|
24
|
+
int limit;
|
20
25
|
};
|
26
|
+
#endif
|
21
27
|
|
22
28
|
struct rbObject {
|
23
29
|
h_database database;
|
@@ -62,6 +68,10 @@ struct rbStatus {
|
|
62
68
|
VALUE message;
|
63
69
|
};
|
64
70
|
|
71
|
+
struct rbGlobal {
|
72
|
+
VALUE name;
|
73
|
+
};
|
74
|
+
|
65
75
|
enum { D_PROPERTY, D_METHOD, D_ARGUMENT};
|
66
76
|
|
67
77
|
enum {
|
@@ -69,7 +79,8 @@ enum {
|
|
69
79
|
};
|
70
80
|
|
71
81
|
|
72
|
-
extern VALUE mIntersys, cDatabase, cQuery, cObject, cDefinition, cProperty,
|
82
|
+
extern VALUE mIntersys, cDatabase, cQuery, cObject, cDefinition, cProperty,
|
83
|
+
cMethod, cArgument, cObjectNotFound, cStatus, cGlobal;
|
73
84
|
extern VALUE cTime, cMarshallError, cUnMarshallError;
|
74
85
|
|
75
86
|
|
@@ -92,22 +103,30 @@ VALUE intersys_status_to_s(VALUE self);
|
|
92
103
|
VALUE intersys_base_s_allocate(VALUE klass);
|
93
104
|
VALUE intersys_base_initialize(VALUE self, VALUE options);
|
94
105
|
VALUE intersys_base_connect(VALUE self, VALUE options);
|
106
|
+
VALUE intersys_base_close(VALUE self);
|
95
107
|
VALUE intersys_base_start(VALUE self);
|
96
108
|
VALUE intersys_base_commit(VALUE self);
|
97
109
|
VALUE intersys_base_rollback(VALUE self);
|
98
110
|
VALUE intersys_base_level(VALUE self);
|
99
111
|
|
100
112
|
|
113
|
+
#ifdef HAVE_SQL_H
|
101
114
|
/******* Query functions *******/
|
102
115
|
|
103
116
|
VALUE intersys_query_s_allocate(VALUE klass);
|
104
117
|
VALUE intersys_query_initialize(VALUE self, VALUE database, VALUE sql_query);
|
118
|
+
VALUE intersys_query_bind_params(VALUE self, VALUE params);
|
105
119
|
VALUE intersys_query_execute(VALUE self);
|
106
120
|
VALUE intersys_query_column_name(VALUE self, VALUE index);
|
107
121
|
VALUE intersys_query_get_data(VALUE self, VALUE index);
|
108
122
|
VALUE intersys_query_fetch(VALUE self);
|
123
|
+
VALUE intersys_query_each(VALUE self);
|
109
124
|
VALUE intersys_query_close(VALUE self);
|
110
|
-
|
125
|
+
VALUE intersys_query_set_limit(VALUE self, VALUE limit);
|
126
|
+
VALUE intersys_query_get_limit(VALUE self);
|
127
|
+
VALUE intersys_query_set_offset(VALUE self, VALUE limit);
|
128
|
+
VALUE intersys_query_get_offset(VALUE self);
|
129
|
+
#endif
|
111
130
|
|
112
131
|
|
113
132
|
/******* Object functions *******/
|
@@ -147,7 +166,14 @@ VALUE intersys_argument_set(VALUE self, VALUE obj);
|
|
147
166
|
VALUE intersys_method_extract_retval(VALUE self);
|
148
167
|
|
149
168
|
|
169
|
+
/******* Globals *******/
|
150
170
|
|
171
|
+
VALUE intersys_global_s_allocate(VALUE klass);
|
172
|
+
VALUE intersys_global_initialize(VALUE self, VALUE name);
|
173
|
+
VALUE intersys_global_get(int argc, VALUE* argv, VALUE self);
|
174
|
+
VALUE intersys_global_set(int argc, VALUE* argv, VALUE self);
|
175
|
+
VALUE intersys_global_delete(int argc, VALUE* argv, VALUE self);
|
176
|
+
VALUE intersys_global_name(VALUE self);
|
151
177
|
|
152
178
|
|
153
179
|
|
@@ -155,6 +181,7 @@ VALUE intersys_method_extract_retval(VALUE self);
|
|
155
181
|
#define QUERY_RUN(x) {int sql_code = 0; (x); run(sql_code, __FILE__, __LINE__);}
|
156
182
|
#define STR(x) (RSTRING(x)->ptr)
|
157
183
|
#define LEN(x) (RSTRING(x)->len)
|
184
|
+
#define CAPA(x) (RSTRING(x)->aux.capa)
|
158
185
|
#define CALL(x, method) (rb_funcall((x), rb_intern(method), 0))
|
159
186
|
|
160
187
|
#define WCHARSTR(x) ((wchar_t *)STR(x))
|