void Init_oci8lib() { VALUE cOCI8; OCIEnv *envhp; OCIError *errhp; sword rv; #ifdef RUNTIME_API_CHECK Init_oci8_apiwrap(); if (oracle_client_version < ORAVER_9_0) { rb_raise(rb_eLoadError, "Oracle 8 (8.0) and Oracle 8i (8.1) is not supported anymore!"); } if (have_OCIClientVersion) { sword major, minor, update, patch, port_update; OCIClientVersion(&major, &minor, &update, &patch, &port_update); oracle_client_version = ORAVERNUM(major, minor, update, patch, port_update); } #endif oci8_id_at_last_error = rb_intern("@last_error"); oci8_id_new = rb_intern("new"); oci8_id_get = rb_intern("get"); oci8_id_set = rb_intern("set"); oci8_id_oci8_vtable = rb_intern("__oci8_vtable__"); #ifdef CHAR_IS_NOT_A_SHORTCUT_TO_ID oci8_id_add_op = rb_intern("+"); oci8_id_sub_op = rb_intern("-"); oci8_id_mul_op = rb_intern("*"); oci8_id_div_op = rb_intern("/"); #endif #ifdef HAVE_RB_SET_END_PROC rb_set_end_proc(at_exit_func, Qnil); #endif Init_oci8_thread_util(); Init_oci8_error(); Init_oci8_env(); /* OCIHandle class */ Init_oci8_handle(); /* OCI8 class */ Init_oci8(&cOCI8); /* OCI8::ConnectionPool class */ Init_oci8_connection_pool(cOCI8); /* OCI8::BindType module */ mOCI8BindType = rb_define_module_under(cOCI8, "BindType"); /* OCI8::BindType::Base class */ cOCI8BindTypeBase = rb_define_class_under(mOCI8BindType, "Base", oci8_cOCIHandle); /* Handle */ Init_oci8_bind(cOCI8BindTypeBase); Init_oci8_stmt(cOCI8); /* Encoding */ Init_oci8_encoding(cOCI8); /* register allocators */ Init_oci8_metadata(cOCI8); Init_oci8_lob(cOCI8); /* allocate a temporary errhp to pass Init_oci_number() */ rv = OCIEnvCreate(&envhp, oci8_env_mode, NULL, NULL, NULL, NULL, 0, NULL); if (rv != OCI_SUCCESS) { oci8_raise_init_error(); } rv = OCIHandleAlloc(envhp, (dvoid *)&errhp, OCI_HTYPE_ERROR, 0, NULL); if (rv != OCI_SUCCESS) oci8_env_raise(envhp, rv); Init_oci_number(cOCI8, errhp); OCIHandleFree(errhp, OCI_HTYPE_ERROR); OCIHandleFree(envhp, OCI_HTYPE_ENV); Init_ora_date(); Init_oci_datetime(); Init_oci_object(cOCI8); #ifdef USE_WIN32_C Init_oci8_win32(cOCI8); #endif }
void Init_oci8lib() { VALUE cOCI8; OCIEnv *envhp; OCIError *errhp; sword rv; #ifdef RUNTIME_API_CHECK Init_oci8_apiwrap(); if (oracle_client_version < ORAVER_10_1) { const char *oraver; const char *ruby_oci8_ver; if (oracle_client_version >= ORAVER_9_2) { oraver = "9iR2"; ruby_oci8_ver = "2.1.x"; } else if (oracle_client_version >= ORAVER_9_0) { oraver = "9iR1"; ruby_oci8_ver = "2.1.x"; } else if (oracle_client_version >= ORAVER_8_2) { oraver = "8i"; ruby_oci8_ver = "2.0.x"; } else { oraver = "8"; ruby_oci8_ver = "2.0.x"; } rb_raise(rb_eLoadError, "Ruby-oci8 %s doesn't support Oracle %s. Use ruby-oci8 %s instead.", OCI8LIB_VERSION, oraver, ruby_oci8_ver); } if (have_OCIClientVersion) { sword major, minor, update, patch, port_update; OCIClientVersion(&major, &minor, &update, &patch, &port_update); oracle_client_version = ORAVERNUM(major, minor, update, patch, port_update); } #endif oci8_id_at_last_error = rb_intern("@last_error"); oci8_id_get = rb_intern("get"); oci8_id_set = rb_intern("set"); #ifdef CHAR_IS_NOT_A_SHORTCUT_TO_ID oci8_id_add_op = rb_intern("+"); oci8_id_sub_op = rb_intern("-"); oci8_id_mul_op = rb_intern("*"); oci8_id_div_op = rb_intern("/"); #endif #ifdef HAVE_RB_SET_END_PROC rb_set_end_proc(at_exit_func, Qnil); #endif Init_oci8_thread_util(); Init_oci8_error(); Init_oci8_env(); /* OCIHandle class */ Init_oci8_handle(); /* OCI8 class */ Init_oci8(&cOCI8); /* OCI8::ConnectionPool class */ Init_oci8_connection_pool(cOCI8); /* OCI8::BindType module */ mOCI8BindType = rb_define_module_under(cOCI8, "BindType"); /* OCI8::BindType::Base class */ cOCI8BindTypeBase = oci8_define_class_under(mOCI8BindType, "Base", &oci8_bind_data_type, bind_base_alloc); /* Handle */ Init_oci8_bind(cOCI8BindTypeBase); Init_oci8_stmt(cOCI8); /* Encoding */ Init_oci8_encoding(cOCI8); /* register allocators */ Init_oci8_metadata(cOCI8); Init_oci8_lob(cOCI8); /* allocate a temporary errhp to pass Init_oci_number() */ rv = OCIEnvCreate(&envhp, oci8_env_mode, NULL, NULL, NULL, NULL, 0, NULL); if (rv != OCI_SUCCESS) { oci8_raise_init_error(); } rv = OCIHandleAlloc(envhp, (dvoid *)&errhp, OCI_HTYPE_ERROR, 0, NULL); if (rv != OCI_SUCCESS) oci8_env_raise(envhp, rv); Init_oci_number(cOCI8, errhp); OCIHandleFree(errhp, OCI_HTYPE_ERROR); OCIHandleFree(envhp, OCI_HTYPE_ENV); Init_ora_date(); Init_oci_datetime(); Init_oci_object(cOCI8); #ifdef USE_WIN32_C Init_oci8_win32(cOCI8); #endif }