void Init_oci8_handle(void) { VALUE obj; /* * OCIHandle is the abstract base class of OCI handles and * OCI descriptors; opaque data types of Oracle Call Interface. * Don't use constants and methods defined in the class. * * @since 2.0.0 */ oci8_cOCIHandle = rb_define_class("OCIHandle", rb_cObject); rb_define_alloc_func(oci8_cOCIHandle, oci8_s_allocate); rb_define_method_nodoc(oci8_cOCIHandle, "initialize", oci8_handle_initialize, 0); #ifndef MRUBY_H rb_define_private_method(oci8_cOCIHandle, "free", oci8_handle_free, 0); #endif #ifdef MRUBY_H obj = mrb_obj_value(mrb_data_object_alloc(mrb, mrb->object_class, &oci8_base_vtable, &mrb_data_type_static)); #else obj = Data_Wrap_Struct(rb_cObject, 0, 0, &oci8_base_vtable); #endif rb_ivar_set(oci8_cOCIHandle, oci8_id_oci8_vtable, obj); /* methods to get attributes */ rb_define_private_method(oci8_cOCIHandle, "attr_get_ub1", attr_get_ub1, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub2", attr_get_ub2, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub4", attr_get_ub4, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub8", attr_get_ub8, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb1", attr_get_sb1, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb2", attr_get_sb2, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb4", attr_get_sb4, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb8", attr_get_sb8, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_boolean", attr_get_boolean, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_string", attr_get_string, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_binary", attr_get_binary, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_integer", attr_get_integer, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_oradate", attr_get_oradate, 1); /* methods to set attributes */ rb_define_private_method(oci8_cOCIHandle, "attr_set_ub1", attr_set_ub1, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub2", attr_set_ub2, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub4", attr_set_ub4, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub8", attr_set_ub8, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb1", attr_set_sb1, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb2", attr_set_sb2, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb4", attr_set_sb4, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb8", attr_set_sb8, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_boolean", attr_set_boolean, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_string", attr_set_string, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_binary", attr_set_binary, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_integer", attr_set_integer, 2); }
void Init_oci8_handle(void) { VALUE obj; /* * <b>(new in 2.0.0)</b> * * OCIHandle is the abstract base class of OCI handles and * OCI descriptors; opaque data types of Oracle Call Interface. * Don't use constants and methods defined in the class. */ oci8_cOCIHandle = rb_define_class("OCIHandle", rb_cObject); rb_define_alloc_func(oci8_cOCIHandle, oci8_s_allocate); rb_define_method_nodoc(oci8_cOCIHandle, "initialize", oci8_handle_initialize, 0); rb_define_private_method(oci8_cOCIHandle, "free", oci8_handle_free, 0); obj = Data_Wrap_Struct(rb_cObject, 0, 0, &oci8_base_class); rb_ivar_set(oci8_cOCIHandle, oci8_id_oci8_class, obj); /* methods to get attributes */ rb_define_private_method(oci8_cOCIHandle, "attr_get_ub1", attr_get_ub1, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub2", attr_get_ub2, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub4", attr_get_ub4, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_ub8", attr_get_ub8, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb1", attr_get_sb1, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb2", attr_get_sb2, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb4", attr_get_sb4, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_sb8", attr_get_sb8, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_boolean", attr_get_boolean, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_string", attr_get_string, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_binary", attr_get_binary, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_integer", attr_get_integer, 1); rb_define_private_method(oci8_cOCIHandle, "attr_get_oradate", attr_get_oradate, 1); /* methods to set attributes */ rb_define_private_method(oci8_cOCIHandle, "attr_set_ub1", attr_set_ub1, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub2", attr_set_ub2, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub4", attr_set_ub4, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_ub8", attr_set_ub8, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb1", attr_set_sb1, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb2", attr_set_sb2, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb4", attr_set_sb4, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_sb8", attr_set_sb8, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_boolean", attr_set_boolean, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_string", attr_set_string, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_binary", attr_set_binary, 2); rb_define_private_method(oci8_cOCIHandle, "attr_set_integer", attr_set_integer, 2); }
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); }