[ruby-oci8-commit] [273] trunk/ruby-oci8: * Makefile: add a rdoc target to make rdoc document.

nobody at rubyforge.org nobody at rubyforge.org
Thu Jul 17 11:01:30 EDT 2008


Revision: 273
Author:   kubo
Date:     2008-07-17 11:01:30 -0400 (Thu, 17 Jul 2008)

Log Message:
-----------
* Makefile: add a rdoc target to make rdoc document.
* custom-rdoc.rb: add a file which customizes rdoc to handle 
    oci8_define_class_under() and oci8_define_bind_class().
* ext/oci8/.document: add a new file for rdoc.
* ext/oci8/bind.c, ext/oci8/oci8.h: rename cOCIBind to cOCI8BindTypeBase,
    which is same name used in custom-rdoc.rb.
* ext/oci8/oci8.c, ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c:
    delete code in comment for vanilla rdoc which doesn't know what
    oci8_define_class_under() and oci8_define_bind_class() do.
* ext/oci8/oradate.c: fix rdoc comments.

Modified Paths:
--------------
    trunk/ruby-oci8/ChangeLog
    trunk/ruby-oci8/Makefile
    trunk/ruby-oci8/ext/oci8/bind.c
    trunk/ruby-oci8/ext/oci8/oci8.c
    trunk/ruby-oci8/ext/oci8/oci8.h
    trunk/ruby-oci8/ext/oci8/ocidatetime.c
    trunk/ruby-oci8/ext/oci8/ocinumber.c
    trunk/ruby-oci8/ext/oci8/oradate.c

Added Paths:
-----------
    trunk/ruby-oci8/custom-rdoc.rb
    trunk/ruby-oci8/ext/oci8/.document

Modified: trunk/ruby-oci8/ChangeLog
===================================================================
--- trunk/ruby-oci8/ChangeLog	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ChangeLog	2008-07-17 15:01:30 UTC (rev 273)
@@ -1,3 +1,15 @@
+2008-07-17  KUBO Takehiro  <kubo at jiubao.org>
+	* Makefile: add a rdoc target to make rdoc document.
+	* custom-rdoc.rb: add a file which customizes rdoc to handle 
+	    oci8_define_class_under() and oci8_define_bind_class().
+	* ext/oci8/.document: add a new file for rdoc.
+	* ext/oci8/bind.c, ext/oci8/oci8.h: rename cOCIBind to cOCI8BindTypeBase,
+	    which is same name used in custom-rdoc.rb.
+	* ext/oci8/oci8.c, ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c:
+	    delete code in comment for vanilla rdoc which doesn't know what
+	    oci8_define_class_under() and oci8_define_bind_class() do.
+	* ext/oci8/oradate.c: fix rdoc comments.
+
 2008-07-13  KUBO Takehiro  <kubo at jiubao.org>
 	* ext/oci8/stmt.c: (1) add rdoc comments. (2) OCI8::Cursor#type
 	    returns a Fixnum when the type is not undocumented value instead

Modified: trunk/ruby-oci8/Makefile
===================================================================
--- trunk/ruby-oci8/Makefile	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/Makefile	2008-07-17 15:01:30 UTC (rev 273)
@@ -30,6 +30,11 @@
 	astyle --options=none --style=linux --indent=spaces=4 --brackets=linux --suffix=none ext/oci8/*.[ch]
 
 # internal use only
+.PHONY: rdoc
+
+rdoc:
+	$(RUBY) custom-rdoc.rb -o rdoc -U README ext/oci8 lib
+
 dist:
 	-rm -rf ruby-oci8-$(VERSION)
 	mkdir ruby-oci8-$(VERSION)

Added: trunk/ruby-oci8/custom-rdoc.rb
===================================================================
--- trunk/ruby-oci8/custom-rdoc.rb	                        (rev 0)
+++ trunk/ruby-oci8/custom-rdoc.rb	2008-07-17 15:01:30 UTC (rev 273)
@@ -0,0 +1,40 @@
+require 'rdoc/rdoc'
+
+module RDoc
+  class C_Parser
+    alias :do_classes_orig :do_classes
+    def do_classes
+      # oci8_cOCIHandle = rb_define_class("OCIHandle", rb_cObject)
+      handle_class_module('oci8_cOCIHandle', 'class', 'OCIHandle', 'rb_cObject', nil)
+      # cOCI8 = rb_define_class("OCI8", oci8_cOCIHandle)
+      handle_class_module('cOCI8', 'class', 'OCI8', 'oci8_cOCIHandle', nil)
+      # mOCI8BindType = rb_define_module_under(cOCI8, "BindType");
+      handle_class_module('mOCI8BindType', 'module', 'BindType', nil, 'cOCI8')
+      # cOCI8BindTypeBase = rb_define_class_under(mOCI8BindType, "Base", oci8_cOCIHandle);
+      handle_class_module('cOCI8BindTypeBase', 'class', 'Base', nil, 'mOCI8BindType')
+
+      # var_name = oci8_define_class_under(in_module, "class_name", &xxxx);
+      @body.scan(/(\w+)\s*=\s*oci8_define_class_under\s*\(\s*(\w+)\s*,\s*"(\w+)",\s*&\w+?\s*\)/) do
+        |var_name, in_module, class_name|
+        handle_class_module(var_name, "class", class_name, 'oci8_cOCIHandle', in_module)
+      end
+
+      # var_name = oci8_define_bind_class("class_name", &xxxx);
+      @body.scan(/(?:(\w+)\s*=\s*)?oci8_define_bind_class\s*\(\s*"(\w+)",\s*&\w+?\s*\)/) do
+        |var_name, class_name|
+        var_name ||= 'dummy'
+        handle_class_module(var_name, "class", class_name, 'cOCI8BindTypeBase', 'mOCI8BindType')
+      end
+
+      do_classes_orig
+    end
+  end
+end
+
+begin
+  r = RDoc::RDoc.new
+  r.document(ARGV)
+rescue RDoc::RDocError => e
+  $stderr.puts e.message
+  exit(1)
+end

Added: trunk/ruby-oci8/ext/oci8/.document
===================================================================
--- trunk/ruby-oci8/ext/oci8/.document	                        (rev 0)
+++ trunk/ruby-oci8/ext/oci8/.document	2008-07-17 15:01:30 UTC (rev 273)
@@ -0,0 +1 @@
+*.c

Modified: trunk/ruby-oci8/ext/oci8/bind.c
===================================================================
--- trunk/ruby-oci8/ext/oci8/bind.c	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/bind.c	2008-07-17 15:01:30 UTC (rev 273)
@@ -5,14 +5,14 @@
  * $Author$
  * $Date$
  *
- * Copyright (C) 2002-2007 KUBO Takehiro <kubo at jiubao.org>
+ * Copyright (C) 2002-2008 KUBO Takehiro <kubo at jiubao.org>
  */
 #include "oci8.h"
 
 static ID id_bind_type;
 static ID id_set;
 
-static VALUE cOCIBind;
+static VALUE cOCI8BindTypeBase;
 
 /*
  * bind_string
@@ -456,13 +456,13 @@
 
 void Init_oci8_bind(VALUE klass)
 {
-    cOCIBind = klass;
+    cOCI8BindTypeBase = klass;
     id_bind_type = rb_intern("bind_type");
     id_set = rb_intern("set");
 
-    rb_define_method(cOCIBind, "initialize", oci8_bind_initialize, 4);
-    rb_define_method(cOCIBind, "get", oci8_get_data, 0);
-    rb_define_method(cOCIBind, "set", oci8_set_data, 1);
+    rb_define_method(cOCI8BindTypeBase, "initialize", oci8_bind_initialize, 4);
+    rb_define_method(cOCI8BindTypeBase, "get", oci8_get_data, 0);
+    rb_define_method(cOCI8BindTypeBase, "set", oci8_set_data, 1);
 
     /* register primitive data types. */
     oci8_define_bind_class("String", &bind_string_class);
@@ -479,6 +479,6 @@
 oci8_bind_t *oci8_get_bind(VALUE obj)
 {
     oci8_base_t *base;
-    Check_Handle(obj, cOCIBind, base);
+    Check_Handle(obj, cOCI8BindTypeBase, base);
     return (oci8_bind_t *)base;
 }

Modified: trunk/ruby-oci8/ext/oci8/oci8.c
===================================================================
--- trunk/ruby-oci8/ext/oci8/oci8.c	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/oci8.c	2008-07-17 15:01:30 UTC (rev 273)
@@ -2,7 +2,7 @@
 /*
  * oci8.c - part of ruby-oci8
  *
- * Copyright (C) 2002-2007 KUBO Takehiro <kubo at jiubao.org>
+ * Copyright (C) 2002-2008 KUBO Takehiro <kubo at jiubao.org>
  *
  */
 #include "oci8.h"
@@ -522,10 +522,6 @@
 
 VALUE Init_oci8(void)
 {
-#if 0 /* for rdoc */
-    cOCIHandle = rb_define_class("OCIHandle", rb_cObject);
-    cOCI8 = rb_define_class("OCI8", cOCIHandle);
-#endif
     cOCI8 = oci8_define_class("OCI8", &oci8_svcctx_class);
 
     sym_SYSDBA = ID2SYM(rb_intern("SYSDBA"));

Modified: trunk/ruby-oci8/ext/oci8/oci8.h
===================================================================
--- trunk/ruby-oci8/ext/oci8/oci8.h	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/oci8.h	2008-07-17 15:01:30 UTC (rev 273)
@@ -328,7 +328,7 @@
 } oci8_hp_obj_t;
 void oci8_bind_free(oci8_base_t *base);
 void oci8_bind_hp_obj_mark(oci8_base_t *base);
-void Init_oci8_bind(VALUE cOCIBind);
+void Init_oci8_bind(VALUE cOCI8BindTypeBase);
 oci8_bind_t *oci8_get_bind(VALUE obj);
 
 /* metadata.c */

Modified: trunk/ruby-oci8/ext/oci8/ocidatetime.c
===================================================================
--- trunk/ruby-oci8/ext/oci8/ocidatetime.c	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/ocidatetime.c	2008-07-17 15:01:30 UTC (rev 273)
@@ -5,7 +5,7 @@
  * $Author$
  * $Date$
  *
- * Copyright (C) 2005-2007 KUBO Takehiro <kubo at jiubao.org>
+ * Copyright (C) 2005-2008 KUBO Takehiro <kubo at jiubao.org>
  *
  */
 #include "oci8.h"
@@ -696,12 +696,6 @@
 
 void Init_oci_datetime(void)
 {
-#if 0 /* for rdoc */
-    cOCIHandle = rb_define_class("OCIHandle", rb_cObject);
-    cOCI8 = rb_define_class("OCI8", cOCIHandle);
-    mOCI8BindType = rb_define_module_under(cOCI8, "BindType");
-    cOCI8BindTypeBase = rb_define_class_under(mOCI8BindType, "Base", cOCIHandle);
-#endif
     rb_require("date");
 
     cDateTime = rb_eval_string("DateTime");
@@ -740,9 +734,4 @@
     oci8_define_bind_class("DateTime", &bind_datetime_class);
     oci8_define_bind_class("IntervalYM", &bind_interval_ym_class);
     oci8_define_bind_class("IntervalDS", &bind_interval_ds_class);
-#if 0 /* for rdoc */
-    cOCI8BindTypeDateTime = rb_define_class_under(mOCI8BindType, "DateTime", cOCI8BindTypeBase);
-    cOCI8BindTypeIntervalYS = rb_define_class_under(mOCI8BindType, "IntervalYM", cOCI8BindTypeBase);
-    cOCI8BindTypeIntervalDS = rb_define_class_under(mOCI8BindType, "IntervalDS", cOCI8BindTypeBase);
-#endif
 }

Modified: trunk/ruby-oci8/ext/oci8/ocinumber.c
===================================================================
--- trunk/ruby-oci8/ext/oci8/ocinumber.c	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/ocinumber.c	2008-07-17 15:01:30 UTC (rev 273)
@@ -1112,9 +1112,6 @@
     id_power = rb_intern("**");
     id_cmp = rb_intern("<=>");
 
-#if 0 /* for rdoc */
-    cOCI8 = rb_define_class("OCI8", rb_cObject);
-#endif
     cOCINumber = rb_define_class("OraNumber", rb_cNumeric);
     mMath = rb_define_module_under(cOCI8, "Math");
 

Modified: trunk/ruby-oci8/ext/oci8/oradate.c
===================================================================
--- trunk/ruby-oci8/ext/oci8/oradate.c	2008-07-13 10:07:10 UTC (rev 272)
+++ trunk/ruby-oci8/ext/oci8/oradate.c	2008-07-17 15:01:30 UTC (rev 273)
@@ -5,7 +5,7 @@
  * $Author$
  * $Date$
  *
- * Copyright (C) 2002-2005 KUBO Takehiro <kubo at jiubao.org>
+ * Copyright (C) 2002-2008 KUBO Takehiro <kubo at jiubao.org>
  *
  * date and time between 4712 B.C. and 9999 A.D.
  */
@@ -14,7 +14,13 @@
 
 static VALUE cOraDate;
 
-/* OraDate - Internal format of DATE */
+/*
+ * Document-class: OraDate
+ *
+ * ruby class compatible with Oracle <tt>DATE</tt> data type.
+ * Date and time between 4712 B.C. and 9999 A.D.
+ *
+ */
 struct ora_date {
     unsigned char century;
     unsigned char year;
@@ -76,10 +82,11 @@
 }
 
 /*
-=begin
---- OraDate.new([year [, month [, day [, hour [, min [,sec]]]]]])
-=end
-*/
+ * call-seq:
+ *   OraDate.new(year = 1, month = 1, day = 1, hour = 0, min = 0, sec = 0) -> oradate
+ *
+ * Returns an <code>OraDate</code> object initialized to the specified date and time.
+ */
 static VALUE ora_date_initialize(int argc, VALUE *argv, VALUE self)
 {
     VALUE vyear, vmonth, vday, vhour, vmin, vsec;
@@ -134,7 +141,7 @@
     return Qnil;
 }
 
-
+/* :nodoc: */
 static VALUE ora_date_initialize_copy(VALUE lhs, VALUE rhs)
 {
     ora_date_t *l, *r;
@@ -147,10 +154,12 @@
 }
 
 /*
-=begin
---- OraDate.now()
-=end
-*/
+ * call-seq:
+ *   OraDate.now() -> oradate
+ *
+ * Returns an <code>OraDate</code> object initialized to the
+ * current local time.
+ */
 static VALUE ora_date_s_now(int argc, VALUE *argv, VALUE klass)
 {
     VALUE obj = ora_date_s_allocate(klass);
@@ -177,10 +186,12 @@
 }
 
 /*
-=begin
---- OraDate#to_s()
-=end
-*/
+ * call-seq:
+ *   oradate.to_s -> string
+ *
+ * Returns a string representing <i>oradate</i>.
+ * The string format is 'yyyy/mm/dd hh:mi:ss'.
+ */
 static VALUE ora_date_to_s(VALUE self)
 {
     ora_date_t *od;
@@ -193,10 +204,12 @@
 }
 
 /*
-=begin
---- OraDate#to_a()
-=end
-*/
+ * call-seq:
+ *   oradate.to_a -> array
+ *
+ * Returns a 6-element <i>array</i> of values for <i>oradate</i>:
+ * {<code>[year, month, day, hour, minute, second]</code>}.
+ */
 static VALUE ora_date_to_a(VALUE self)
 {
     ora_date_t *od;
@@ -212,81 +225,207 @@
     return rb_ary_new4(6, ary);
 }
 
-#define DEFINE_GETTER_FUNC(where) \
-static VALUE ora_date_##where(VALUE self) \
-{ \
-    ora_date_t *od; \
- \
-    Data_Get_Struct(self, ora_date_t, od); \
-    return INT2FIX(Get_##where(od)); \
+/*
+ * call-seq:
+ *   oradate.year -> fixnum
+ *
+ * Returns the year (-4712..9999) for <i>oradate</i>.
+ */
+static VALUE ora_date_year(VALUE self)
+{
+    ora_date_t *od;
+
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_year(od));
 }
 
-#define DEFINE_SETTER_FUNC(where) \
-static VALUE ora_date_set_##where(VALUE self, VALUE val) \
-{ \
-    ora_date_t *od; \
-    int v; \
- \
-    v = NUM2INT(val); \
-    Check_##where(v); \
-    Data_Get_Struct(self, ora_date_t, od); \
-    Set_##where(od, v); \
-    return self; \
+/*
+ * call-seq:
+ *   oradate.year = fixnum
+ *
+ * Sets the year (-4712..9999) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_year(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
+
+    v = NUM2INT(val);
+    Check_year(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_year(od, v);
+    return self;
 }
 
 /*
-=begin
---- OraDate#year
-=end
-*/
-DEFINE_GETTER_FUNC(year)
-DEFINE_SETTER_FUNC(year)
+ * call-seq:
+ *   oradate.month -> fixnum
+ *
+ * Returns the month of the year (1..12) for <i>oradate</i>.
+ */
+static VALUE ora_date_month(VALUE self)
+{
+    ora_date_t *od;
 
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_month(od));
+}
+
 /*
-=begin
---- OraDate#month
-=end
-*/
-DEFINE_GETTER_FUNC(month)
-DEFINE_SETTER_FUNC(month)
+ * call-seq:
+ *   oradate.month = fixnum
+ *
+ * Sets the month of the year (1..12) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_month(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
 
+    v = NUM2INT(val);
+    Check_month(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_month(od, v);
+    return self;
+}
+
 /*
-=begin
---- OraDate#day
-=end
-*/
-DEFINE_GETTER_FUNC(day)
-DEFINE_SETTER_FUNC(day)
+ * call-seq:
+ *   oradate.day -> fixnum
+ *
+ * Returns the day of the month (1..31) for <i>oradate</i>.
+ */
+static VALUE ora_date_day(VALUE self)
+{
+    ora_date_t *od;
 
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_day(od));
+}
+
 /*
-=begin
---- OraDate#hour
-=end
-*/
-DEFINE_GETTER_FUNC(hour)
-DEFINE_SETTER_FUNC(hour)
+ * call-seq:
+ *   oradate.day = fixnum
+ *
+ * Sets the day of the month (1..31) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_day(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
 
+    v = NUM2INT(val);
+    Check_day(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_day(od, v);
+    return self;
+}
+
 /*
-=begin
---- OraDate#minute
-=end
-*/
-DEFINE_GETTER_FUNC(minute)
-DEFINE_SETTER_FUNC(minute)
+ * call-seq:
+ *   oradate.hour -> fixnum
+ *
+ * Returns the hour of the day (0..23) for <i>oradate</i>.
+ */
+static VALUE ora_date_hour(VALUE self)
+{
+    ora_date_t *od;
 
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_hour(od));
+}
+
 /*
-=begin
---- OraDate#second
-=end
-*/
-DEFINE_GETTER_FUNC(second)
-DEFINE_SETTER_FUNC(second)
+ * call-seq:
+ *   oradate.hour = fixnum
+ *
+ * Sets the hour of the day (0..23) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_hour(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
 
+    v = NUM2INT(val);
+    Check_hour(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_hour(od, v);
+    return self;
+}
+
 /*
-=begin
---- OraDate#trunc()
-=end
-*/
+ * call-seq:
+ *   oradate.minute -> fixnum
+ *
+ * Returns the minute of the hour (0..59) for <i>oradate</i>.
+ */
+static VALUE ora_date_minute(VALUE self)
+{
+    ora_date_t *od;
+
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_minute(od));
+}
+
+/*
+ * call-seq:
+ *   oradate.minute = fixnum
+ *
+ * Sets the minute of the hour (0..59) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_minute(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
+
+    v = NUM2INT(val);
+    Check_minute(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_minute(od, v);
+    return self;
+}
+
+/*
+ * call-seq:
+ *   oradate.second -> fixnum
+ *
+ * Returns the second of the minute (0..59) for <i>oradate</i>.
+ */
+static VALUE ora_date_second(VALUE self)
+{
+    ora_date_t *od;
+
+    Data_Get_Struct(self, ora_date_t, od);
+    return INT2FIX(Get_second(od));
+}
+
+/*
+ * call-seq:
+ *   oradate.second = fixnum
+ *
+ * Sets the second of the minute (0..59) for <i>oradate</i>.
+ */
+static VALUE ora_date_set_second(VALUE self, VALUE val)
+{
+    ora_date_t *od;
+    int v;
+
+    v = NUM2INT(val);
+    Check_second(v);
+    Data_Get_Struct(self, ora_date_t, od);
+    Set_second(od, v);
+    return self;
+}
+
+/*
+ * call-seq:
+ *   oradate.trunc
+ *
+ * Truncates hour, minute and second to zero for <i>oradate</i>.
+ *
+ *   oradate = OraDate.now   # 2008/07/17 11:07:30
+ *   oradate.trunc           # 2008/07/17 00:00:00
+ */
 static VALUE ora_date_trunc(VALUE self)
 {
     ora_date_t *od;
@@ -299,10 +438,13 @@
 }
 
 /*
-=begin
---- OraDate#<=>(other)
-=end
-*/
+ * call-seq:
+ *   oradate1 <=> oradate2 -> -1, 0, +1
+ *
+ * Comparison---Compares <i>oradate1</i> with <i>oradate2</i>.
+ * Other comparison operators are available because
+ * <code>Comparable</code> module is included.
+ */
 static VALUE ora_date_cmp(VALUE self, VALUE val)
 {
     ora_date_t *od1, *od2;
@@ -326,6 +468,7 @@
     return INT2FIX(0);
 }
 
+/* :nodoc: */
 static VALUE ora_date_hash(VALUE self)
 {
     ora_date_t *od;
@@ -342,6 +485,12 @@
     return INT2FIX(v);
 }
 
+/*
+ * call-seq:
+ *   oradate._dump -> string
+ *
+ * Dumps <i>oradate</i> for marshaling.
+ */
 static VALUE ora_date_dump(int argc, VALUE *argv, VALUE self)
 {
     ora_date_t *od;
@@ -349,6 +498,12 @@
     return rb_str_new((const char*)od, sizeof(ora_date_t));
 }
 
+/*
+ * call-seq:
+ *   OraDate._load(string) -> oradate
+ *
+ * Unmarshals a dumped <code>OraDate</code> object.
+ */
 static VALUE ora_date_s_load(VALUE klass, VALUE str)
 {
     ora_date_t *od;
@@ -364,7 +519,10 @@
 }
 
 /*
- * bind_oradate
+ * Document-class: OCI8::BindType::OraDate
+ *
+ * This is a helper class to bind OraDate as Oracle's <tt>DATE</tt> datatype.
+ *
  */
 static VALUE bind_oradate_get(oci8_bind_t *obind, void *data, void *null_struct)
 {




More information about the ruby-oci8-commit mailing list