intersys 0.2 → 0.2.1

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.
@@ -75,8 +75,8 @@ extout_prefix =
75
75
  target_prefix =
76
76
  LOCAL_LIBS =
77
77
  LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lobjc
78
- SRCS = common.c database.c definition.c intersys.c object.c query.c
79
- OBJS = common.o database.o definition.o intersys.o object.o query.o
78
+ SRCS = common.c database.c definition.c global.c intersys.c object.c query.c
79
+ OBJS = common.o database.o definition.o global.o intersys.o object.o query.o
80
80
  TARGET = intersys_cache
81
81
  DLLIB = $(TARGET).bundle
82
82
  STATIC_LIB =
@@ -1,22 +1,23 @@
1
1
  #include "intersys.h"
2
2
 
3
3
  VALUE string_to_wchar(VALUE self) {
4
- wchar_t w_chars[LEN(self) + 1];
4
+ VALUE result;
5
5
  int size;
6
- RUN(cbind_utf8_to_uni(STR(self), (byte_size_t)LEN(self), w_chars, (char_size_t)sizeof(w_chars), &size));
7
- w_chars[size] = 0;
8
- return rb_str_new((char *)w_chars, (size+1)*sizeof(wchar_t));
6
+ result = rb_str_buf_new((LEN(self)+1)*sizeof(wchar_t));
7
+ RUN(cbind_utf8_to_uni(STR(self), (byte_size_t)LEN(self), WCHARSTR(result), (char_size_t)sizeof(wchar_t)*LEN(self), &size));
8
+ WCHARSTR(result)[size] = 0;
9
+ return result;
9
10
  }
10
11
 
11
12
  VALUE string_from_wchar(VALUE self) {
12
- char chars[LEN(self) + 1];
13
- bzero(chars, sizeof(chars));
13
+ VALUE result;
14
14
  int size;
15
15
  if(LEN(self) == 0 || !STR(self)) {
16
16
  return rb_str_new2("");
17
17
  }
18
- RUN(cbind_uni_to_utf8(WCHARSTR(self), wcslen(WCHARSTR(self)), chars, sizeof(chars), &size));
19
- return rb_str_new(chars, size);
18
+ result = rb_str_buf_new(LEN(self));
19
+ RUN(cbind_uni_to_utf8(WCHARSTR(self), wcslen(WCHARSTR(self)), STR(result), LEN(result), &size));
20
+ return result;
20
21
  }
21
22
 
22
23
 
@@ -37,7 +38,7 @@ VALUE wcstr_new(const wchar_t *w_str, const char_size_t len) {
37
38
  capa = (int)(len + 1)*sizeof(wchar_t);
38
39
 
39
40
  result = rb_str_buf_new(capa);
40
- bzero(STR(result) + size, capa-size);
41
+ memset(STR(result) + size, 0, capa-size);
41
42
  rb_str_buf_cat(result, (char *)w_str, size);
42
43
 
43
44
  rb_str_freeze(result);
@@ -58,7 +59,7 @@ static void intersys_status_mark(struct rbStatus* status) {
58
59
 
59
60
  VALUE intersys_status_s_allocate(VALUE klass) {
60
61
  struct rbStatus* status = ALLOC(struct rbStatus);
61
- bzero(status, sizeof(struct rbStatus));
62
+ memset(status, 0, sizeof(struct rbStatus));
62
63
  return Data_Wrap_Struct(klass, intersys_status_mark, 0, status);
63
64
  }
64
65
 
@@ -15,7 +15,7 @@ void intersys_base_free(struct rbDatabase* base) {
15
15
 
16
16
  VALUE intersys_base_s_allocate(VALUE klass) {
17
17
  struct rbDatabase* intersys_base = ALLOC(struct rbDatabase);
18
- bzero(intersys_base, sizeof(struct rbDatabase));
18
+ memset(intersys_base, 0, sizeof(struct rbDatabase));
19
19
  return Data_Wrap_Struct(klass, 0, intersys_base_free, intersys_base);
20
20
  }
21
21
 
@@ -28,7 +28,7 @@ static void intersys_definition_mark(struct rbDefinition* definition) {
28
28
 
29
29
  VALUE intersys_definition_s_allocate(VALUE klass) {
30
30
  struct rbDefinition* definition = ALLOC(struct rbDefinition);
31
- bzero(definition, sizeof(struct rbDefinition));
31
+ memset(definition, 0, sizeof(struct rbDefinition));
32
32
  definition->object = Qnil;
33
33
  return Data_Wrap_Struct(klass, intersys_definition_mark, intersys_definition_free, definition);
34
34
  }
@@ -243,14 +243,15 @@ static VALUE extract_next_dlist_elem(char *dlist, int* elem_size) {
243
243
  VALUE intersys_method_call(VALUE self, VALUE args) {
244
244
  struct rbDefinition* method;
245
245
  int i;
246
+ VALUE database = rb_iv_get(self, "@database");
247
+ VALUE class_name = rb_iv_get(self, "@class_name");
248
+ VALUE name = rb_iv_get(self, "@name");
249
+
246
250
  Check_Type(args, T_ARRAY);
247
251
  Data_Get_Struct(self, struct rbDefinition, method);
248
252
  if(RARRAY(args)->len > method->num_args) {
249
253
  rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", RARRAY(args)->len, method->num_args);
250
254
  }
251
- VALUE database = rb_iv_get(self, "@database");
252
- VALUE class_name = rb_iv_get(self, "@class_name");
253
- VALUE name = rb_iv_get(self, "@name");
254
255
 
255
256
  RUN(cbind_reset_args(method->database));
256
257
  RUN(cbind_mtd_rewind_args(method->def));
@@ -447,7 +448,7 @@ VALUE intersys_method_extract_retval(VALUE self) {
447
448
  //It is important to add wchar_t to end, because for wcslen we need more than 1 terminating zero.
448
449
  //I don't know exactly, how works wcslen, but I add 4 (sizeof wchar_t) terminating zeroes
449
450
  result = rb_str_buf_new(size + sizeof(wchar_t));
450
- bzero(STR(result) + size, sizeof(wchar_t));
451
+ memset(STR(result) + size, 0, sizeof(wchar_t));
451
452
  RUN(cbind_get_arg_as_str(method->database, method->passed_args, STR(result), size, CPP_UNICODE, &size, &is_null));
452
453
  LEN(result) = size;
453
454
  return FROMWCHAR(result);
@@ -495,8 +496,8 @@ VALUE intersys_method_extract_retval(VALUE self) {
495
496
 
496
497
  VALUE intersys_argument_marshall_dlist_elem(VALUE self, VALUE elem) {
497
498
  struct rbDefinition* argument;
498
- Data_Get_Struct(self, struct rbDefinition, argument);
499
499
  int elem_size;
500
+ Data_Get_Struct(self, struct rbDefinition, argument);
500
501
 
501
502
  switch(TYPE(elem)) {
502
503
  case T_NIL: {
@@ -18,7 +18,8 @@ MACOS = RUBY_PLATFORM.match(/darwin/)
18
18
  @cache_placements = ["/home/max/cache", "/Applications/Cache", "/cygdrive/c/Progra~1/Cache", "/cygdrive/c/Cachesys", "C:/Cachesys"]
19
19
 
20
20
  def locations(suffix)
21
- @cache_placements.map {|place| place + suffix}.map{|place| place.split("/").join(WIN32 ? "\\" : "/") }
21
+ # .map{|place| place.split("/").join(WIN32 ? "\\" : "/")}
22
+ @cache_placements.map {|place| place + suffix }
22
23
  end
23
24
 
24
25
  def include_locations
@@ -35,23 +36,27 @@ def include_flags
35
36
  end
36
37
 
37
38
  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" '
39
+ $CFLAGS << ' -I"C:\\Program Files\\Microsoft Platform SDK\\Include\\crt" '
40
+ $CFLAGS << ' -I"C:\\Program Files\\Microsoft Platform SDK\\Include" '
41
+ $CFLAGS << ' -I"C:\\Program Files\\Microsoft Visual Studio 8\\VC\\include" -D_WIN32 '
42
+ $LDFLAGS << ' /link -libpath:"C:/CacheSys/dev/cpp/lib" '
43
+ $LDFLAGS << ' -libpath:"C:/Program Files/Microsoft Visual Studio 8/VC/lib" '
44
+ $LDFLAGS << ' -libpath:"C:/Program Files/Microsoft Platform SDK/Lib" '
43
45
  end
44
46
 
45
47
 
46
48
  def link_flags
47
- " "+(library_locations.map { |place| "-L"+place} + ["-Wall"]).join(" ")
49
+ " "+(library_locations.map { |place| WIN32 ? "-libpath:\"#{place}\"" : ("-L"+place)} + ["-Wall"]).join(" ")
48
50
  end
49
51
 
50
52
  $CFLAGS << include_flags
51
53
  $LDFLAGS << link_flags
52
54
 
53
55
  have_header "c_api.h"
54
- have_header "sql.h"
56
+ unless have_header "sql.h"
57
+ $CFLAGS << ' -Isql_include '
58
+ have_header "sql.h"
59
+ end
55
60
  have_header "sqlext.h"
56
61
 
57
62
  unless MACOS
@@ -61,3 +66,4 @@ end
61
66
 
62
67
  create_makefile 'intersys_cache'
63
68
 
69
+
@@ -7,6 +7,13 @@
7
7
  #include <time.h>
8
8
  #include <c_api.h>
9
9
 
10
+ #ifdef _WIN32
11
+ #ifndef _WCHAR_T_DEFINED
12
+ typedef unsigned short wchar_t;
13
+ #define _WCHAR_T_DEFINED
14
+ #endif
15
+ #endif /* WIN32 */
16
+
10
17
  struct rbDatabase {
11
18
  h_connection connection;
12
19
  h_database database;
@@ -15,7 +15,7 @@ static void intersys_object_mark(struct rbObject* object) {
15
15
 
16
16
  VALUE intersys_object_s_allocate(VALUE klass) {
17
17
  struct rbObject* object = ALLOC(struct rbObject);
18
- bzero(object, sizeof(struct rbObject));
18
+ memset(object, 0, sizeof(struct rbObject));
19
19
  return Data_Wrap_Struct(klass, intersys_object_mark, intersys_object_free, object);
20
20
  }
21
21
 
File without changes
File without changes
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: intersys
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.2"
6
+ version: 0.2.1
7
7
  date: 2006-09-16 00:00:00 +04:00
8
8
  summary: Intersystems Cache ruby driver
9
9
  require_paths:
@@ -47,6 +47,8 @@ files:
47
47
  - lib/Makefile
48
48
  - lib/object.c
49
49
  - lib/object.rb
50
+ - lib/poppack.h
51
+ - lib/pshpack1.h
50
52
  - lib/query.c
51
53
  - lib/reflection.rb
52
54
  - lib/sql_include