void Init_oci_datetime(void) { oci8_define_bind_class("OCITimestamp", &bind_ocitimestamp_vtable); oci8_define_bind_class("OCITimestampTZ", &bind_ocitimestamp_tz_vtable); oci8_define_bind_class("OCIIntervalYM", &bind_ociinterval_ym_vtable); oci8_define_bind_class("OCIIntervalDS", &bind_ociinterval_ds_vtable); }
void Init_oci_datetime(void) { oci8_define_bind_class("OCITimestamp", &bind_ocitimestamp_data_type, bind_ocitimestamp_alloc); oci8_define_bind_class("OCITimestampTZ", &bind_ocitimestamp_tz_data_type, bind_ocitimestamp_tz_alloc); oci8_define_bind_class("OCIIntervalYM", &bind_ociinterval_ym_data_type, bind_ociinterval_ym_alloc); oci8_define_bind_class("OCIIntervalDS", &bind_ociinterval_ds_data_type, bind_ociinterval_ds_alloc); }
void Init_oci8_lob(VALUE cOCI8) { id_plus = rb_intern("+"); id_dir_alias = rb_intern("@dir_alias"); id_filename = rb_intern("@filename"); seek_set = rb_eval_string("::IO::SEEK_SET"); seek_cur = rb_eval_string("::IO::SEEK_CUR"); seek_end = rb_eval_string("::IO::SEEK_END"); cOCI8LOB = oci8_define_class_under(cOCI8, "LOB", &oci8_lob_class); cOCI8CLOB = rb_define_class_under(cOCI8, "CLOB", cOCI8LOB); cOCI8NCLOB = rb_define_class_under(cOCI8, "NCLOB", cOCI8LOB); cOCI8BLOB = rb_define_class_under(cOCI8, "BLOB", cOCI8LOB); cOCI8BFILE = rb_define_class_under(cOCI8, "BFILE", cOCI8LOB); rb_define_method(cOCI8CLOB, "initialize", oci8_clob_initialize, -1); rb_define_method(cOCI8NCLOB, "initialize", oci8_nclob_initialize, -1); rb_define_method(cOCI8BLOB, "initialize", oci8_blob_initialize, -1); rb_define_private_method(cOCI8LOB, "__char_width=", oci8_lob_set_char_width, 1); rb_define_method(cOCI8LOB, "available?", oci8_lob_available_p, 0); rb_define_method(cOCI8LOB, "size", oci8_lob_get_size, 0); rb_define_method(cOCI8LOB, "pos", oci8_lob_get_pos, 0); rb_define_alias(cOCI8LOB, "tell", "pos"); rb_define_method(cOCI8LOB, "eof?", oci8_lob_eof_p, 0); rb_define_method(cOCI8LOB, "seek", oci8_lob_seek, -1); rb_define_method(cOCI8LOB, "rewind", oci8_lob_rewind, 0); rb_define_method(cOCI8LOB, "truncate", oci8_lob_truncate, 1); rb_define_method(cOCI8LOB, "size=", oci8_lob_set_size, 1); rb_define_method(cOCI8LOB, "read", oci8_lob_read, -1); rb_define_method(cOCI8LOB, "write", oci8_lob_write, 1); rb_define_method(cOCI8LOB, "close", oci8_lob_close, 0); rb_define_method(cOCI8LOB, "sync", oci8_lob_get_sync, 0); rb_define_method(cOCI8LOB, "sync=", oci8_lob_set_sync, 1); rb_define_method(cOCI8LOB, "flush", oci8_lob_flush, 0); rb_define_method(cOCI8LOB, "chunk_size", oci8_lob_get_chunk_size, 0); rb_define_method(cOCI8BFILE, "initialize", oci8_bfile_initialize, -1); rb_define_method(cOCI8BFILE, "dir_alias", oci8_bfile_get_dir_alias, 0); rb_define_method(cOCI8BFILE, "filename", oci8_bfile_get_filename, 0); rb_define_method(cOCI8BFILE, "dir_alias=", oci8_bfile_set_dir_alias, 1); rb_define_method(cOCI8BFILE, "filename=", oci8_bfile_set_filename, 1); rb_define_method(cOCI8BFILE, "exists?", oci8_bfile_exists_p, 0); rb_define_method(cOCI8BFILE, "truncate", oci8_bfile_error, 1); rb_define_method(cOCI8BFILE, "size=", oci8_bfile_error, 1); rb_define_method(cOCI8BFILE, "write", oci8_bfile_error, 1); oci8_define_bind_class("CLOB", &bind_clob_class.bind); oci8_define_bind_class("NCLOB", &bind_nclob_class.bind); oci8_define_bind_class("BLOB", &bind_blob_class.bind); oci8_define_bind_class("BFILE", &bind_bfile_class.bind); }
void Init_oci8_bind(VALUE klass) { cOCI8BindTypeBase = klass; id_bind_type = rb_intern("bind_type"); sym_length = ID2SYM(rb_intern("length")); sym_length_semantics = ID2SYM(rb_intern("length_semantics")); sym_char = ID2SYM(rb_intern("char")); sym_nchar = ID2SYM(rb_intern("nchar")); rb_define_method(cOCI8BindTypeBase, "initialize", oci8_bind_initialize, 4); rb_define_method(cOCI8BindTypeBase, "get", oci8_bind_get, 0); rb_define_method(cOCI8BindTypeBase, "set", oci8_bind_set, 1); /* register primitive data types. */ oci8_define_bind_class("String", &bind_string_vtable); oci8_define_bind_class("RAW", &bind_raw_vtable); if (oracle_client_version >= ORAVER_10_1) { oci8_define_bind_class("BinaryDouble", &bind_binary_double_vtable); } }
void Init_ora_date(void) { cOraDate = rb_define_class("OraDate", rb_cObject); rb_define_alloc_func(cOraDate, ora_date_s_allocate); rb_define_method(cOraDate, "initialize", ora_date_initialize, -1); rb_define_method(cOraDate, "initialize_copy", ora_date_initialize_copy, 1); rb_define_singleton_method(cOraDate, "now", ora_date_s_now, 0); rb_define_method(cOraDate, "to_s", ora_date_to_s, 0); rb_define_method(cOraDate, "to_a", ora_date_to_a, 0); rb_define_method(cOraDate, "year", ora_date_year, 0); rb_define_method(cOraDate, "year=", ora_date_set_year, 1); rb_define_method(cOraDate, "month", ora_date_month, 0); rb_define_method(cOraDate, "month=", ora_date_set_month, 1); rb_define_method(cOraDate, "day", ora_date_day, 0); rb_define_method(cOraDate, "day=", ora_date_set_day, 1); rb_define_method(cOraDate, "hour", ora_date_hour, 0); rb_define_method(cOraDate, "hour=", ora_date_set_hour, 1); rb_define_method(cOraDate, "minute", ora_date_minute, 0); rb_define_method(cOraDate, "minute=", ora_date_set_minute, 1); rb_define_method(cOraDate, "second", ora_date_second, 0); rb_define_method(cOraDate, "second=", ora_date_set_second, 1); rb_define_method(cOraDate, "trunc", ora_date_trunc, 0); rb_define_method(cOraDate, "<=>", ora_date_cmp, 1); rb_include_module(cOraDate, rb_mComparable); rb_define_method(cOraDate, "hash", ora_date_hash, 0); rb_define_method(cOraDate, "_dump", ora_date_dump, -1); rb_define_singleton_method(cOraDate, "_load", ora_date_s_load, 1); oci8_define_bind_class("OraDate", &bind_oradate_class); }
void Init_oci_number(VALUE cOCI8, OCIError *errhp) { VALUE mMath; OCINumber num1, num2; VALUE obj_PI; signed long sl; id_power = rb_intern("**"); id_cmp = rb_intern("<=>"); id_finite_p = rb_intern("finite?"); id_split = rb_intern("split"); id_numerator = rb_intern("numerator"); id_denominator = rb_intern("denominator"); id_Rational = rb_intern("Rational"); id_BigDecimal = rb_intern("BigDecimal"); cOCINumber = rb_define_class("OraNumber", rb_cNumeric); mMath = rb_define_module_under(cOCI8, "Math"); /* constants for internal use. */ /* set const_p1 */ sl = 1; OCINumberFromInt(errhp, &sl, sizeof(sl), OCI_NUMBER_SIGNED, &const_p1); /* set const_p10 */ sl = 10; OCINumberFromInt(errhp, &sl, sizeof(sl), OCI_NUMBER_SIGNED, &const_p10); /* set const_m1 */ sl = -1; OCINumberFromInt(errhp, &sl, sizeof(sl), OCI_NUMBER_SIGNED, &const_m1); /* set const_PI2 */ sl = 2; OCINumberSetPi(errhp, &num1); OCINumberFromInt(errhp, &sl, sizeof(sl), OCI_NUMBER_SIGNED, &num2); OCINumberDiv(errhp, &num1 /* PI */, &num2 /* 2 */, &const_PI2); /* set const_mPI2 */ OCINumberNeg(errhp, &const_PI2 /* PI/2 */, &const_mPI2); /* PI */ OCINumberSetPi(errhp, &num1); obj_PI = oci8_make_ocinumber(&num1, errhp); /* The ratio of the circumference of a circle to its diameter. */ rb_define_const(mMath, "PI", obj_PI); /* * module functions of OCI::Math. */ rb_define_module_function(mMath, "atan2", omath_atan2, 2); rb_define_module_function(mMath, "cos", omath_cos, 1); rb_define_module_function(mMath, "sin", omath_sin, 1); rb_define_module_function(mMath, "tan", omath_tan, 1); rb_define_module_function(mMath, "acos", omath_acos, 1); rb_define_module_function(mMath, "asin", omath_asin, 1); rb_define_module_function(mMath, "atan", omath_atan, 1); rb_define_module_function(mMath, "cosh", omath_cosh, 1); rb_define_module_function(mMath, "sinh", omath_sinh, 1); rb_define_module_function(mMath, "tanh", omath_tanh, 1); rb_define_module_function(mMath, "exp", omath_exp, 1); rb_define_module_function(mMath, "log", omath_log, -1); rb_define_module_function(mMath, "log10", omath_log10, 1); rb_define_module_function(mMath, "sqrt", omath_sqrt, 1); rb_define_alloc_func(cOCINumber, onum_s_alloc); /* methods of OCI::Number */ rb_define_method(rb_cObject, "OraNumber", onum_f_new, -1); rb_define_method_nodoc(cOCINumber, "initialize", onum_initialize, -1); rb_define_method_nodoc(cOCINumber, "initialize_copy", onum_initialize_copy, 1); rb_define_method_nodoc(cOCINumber, "coerce", onum_coerce, 1); rb_include_module(cOCINumber, rb_mComparable); rb_define_method(cOCINumber, "-@", onum_neg, 0); rb_define_method(cOCINumber, "+", onum_add, 1); rb_define_method(cOCINumber, "-", onum_sub, 1); rb_define_method(cOCINumber, "*", onum_mul, 1); rb_define_method(cOCINumber, "/", onum_div, 1); rb_define_method(cOCINumber, "%", onum_mod, 1); rb_define_method(cOCINumber, "**", onum_power, 1); rb_define_method(cOCINumber, "<=>", onum_cmp, 1); rb_define_method(cOCINumber, "floor", onum_floor, 0); rb_define_method(cOCINumber, "ceil", onum_ceil, 0); rb_define_method(cOCINumber, "round", onum_round, -1); rb_define_method(cOCINumber, "truncate", onum_trunc, -1); rb_define_method(cOCINumber, "round_prec", onum_round_prec, 1); rb_define_method(cOCINumber, "to_s", onum_to_s, 0); rb_define_method(cOCINumber, "to_char", onum_to_char, -1); rb_define_method(cOCINumber, "to_i", onum_to_i, 0); rb_define_method(cOCINumber, "to_f", onum_to_f, 0); rb_define_method(cOCINumber, "to_r", onum_to_r, 0); rb_define_method(cOCINumber, "to_d", onum_to_d, 0); rb_define_method(cOCINumber, "has_decimal_part?", onum_has_decimal_part_p, 0); rb_define_method_nodoc(cOCINumber, "to_onum", onum_to_onum, 0); rb_define_method(cOCINumber, "zero?", onum_zero_p, 0); rb_define_method(cOCINumber, "abs", onum_abs, 0); rb_define_method(cOCINumber, "shift", onum_shift, 1); rb_define_method(cOCINumber, "dump", onum_dump, 0); rb_define_method_nodoc(cOCINumber, "hash", onum_hash, 0); rb_define_method_nodoc(cOCINumber, "inspect", onum_inspect, 0); /* methods for marshaling */ rb_define_method(cOCINumber, "_dump", onum__dump, -1); rb_define_singleton_method(cOCINumber, "_load", onum_s_load, 1); oci8_define_bind_class("OraNumber", &bind_ocinumber_vtable); oci8_define_bind_class("Integer", &bind_integer_vtable); oci8_define_bind_class("Float", &bind_float_vtable); }