/*
* $Id: p_header,v 1.4 2000/11/27 01:57:01 keiko Exp $
*/
#include <stdio.h>
#include "ruby.h"
#include "libtinyf2c.h"
#include "narray.h"
#define DFLT_SIZE 32
extern char *dcl_obj2ccharary(VALUE, int, int);
extern integer *dcl_obj2cintegerary(VALUE);
extern real *dcl_obj2crealary(VALUE);
extern complex *dcl_obj2ccomplexary(VALUE);
extern logical *dcl_obj2clogicalary(VALUE);
extern VALUE dcl_ccharary2obj(char *, int, int);
extern VALUE dcl_cintegerary2obj(integer *, int, int, int *);
extern VALUE dcl_crealary2obj(real *, int, int, int *);
extern VALUE dcl_ccomplexary2obj(complex *, int, char *);
extern VALUE dcl_clogicalary2obj(logical *, int, int, int *);
extern void dcl_freeccharary(char *);
extern void dcl_freecintegerary(integer *);
extern void dcl_freecrealary(real *);
extern void dcl_freeccomplexary(complex *);
extern void dcl_freeclogicalary(logical *);
/* for functions which return doublereal */
/* fnclib */
extern doublereal rd2r_(real *);
extern doublereal rr2d_(real *);
extern doublereal rexp_(real *, integer *, integer *);
extern doublereal rfpi_(void);
extern doublereal rmod_(real *, real *);
/* gnmlib */
extern doublereal rgnlt_(real *);
extern doublereal rgnle_(real *);
extern doublereal rgngt_(real *);
extern doublereal rgnge_(real *);
/* rfalib */
extern doublereal rmax_(real *, integer *, integer *);
extern doublereal rmin_(real *, integer *, integer *);
extern doublereal rsum_(real *, integer *, integer *);
extern doublereal rave_(real *, integer *, integer *);
extern doublereal rvar_(real *, integer *, integer *);
extern doublereal rstd_(real *, integer *, integer *);
extern doublereal rrms_(real *, integer *, integer *);
extern doublereal ramp_(real *, integer *, integer *);
/* rfblib */
extern doublereal rprd_(real *, real *, integer *, integer *, integer *);
extern doublereal rcov_(real *, real *, integer *, integer *, integer *);
extern doublereal rcor_(real *, real *, integer *, integer *, integer *);
extern VALUE mDCL;
static VALUE
dcl_uxsaxz(obj, cside, roffx)
VALUE obj, cside, roffx;
{
char *i_cside;
real i_roffx;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(roffx) != T_FLOAT) {
roffx = rb_funcall(roffx, rb_intern("to_f"), 0);
}
i_cside = STR2CSTR(cside);
i_roffx = (real)NUM2DBL(roffx);
uxsaxz_(i_cside, &i_roffx, (ftnlen)strlen(i_cside));
return Qnil;
}
static VALUE
dcl_uxsaxs(obj, cside)
VALUE obj, cside;
{
char *i_cside;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
i_cside = STR2CSTR(cside);
uxsaxs_(i_cside, (ftnlen)strlen(i_cside));
return Qnil;
}
static VALUE
dcl_uxpaxs(obj, cside, islct)
VALUE obj, cside, islct;
{
char *i_cside;
integer i_islct;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if ((TYPE(islct) != T_BIGNUM) || (TYPE(islct) != T_FIXNUM)) {
islct = rb_funcall(islct, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_islct = NUM2INT(islct);
uxpaxs_(i_cside, &i_islct, (ftnlen)strlen(i_cside));
return Qnil;
}
static VALUE
dcl_uxptmk(obj, cside, islct, ux, n)
VALUE obj, cside, islct, ux, n;
{
char *i_cside;
integer i_islct;
real *i_ux;
integer i_n;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if ((TYPE(islct) != T_BIGNUM) || (TYPE(islct) != T_FIXNUM)) {
islct = rb_funcall(islct, rb_intern("to_i"), 0);
}
if (TYPE(ux) == T_FLOAT) {
ux = rb_Array(ux);
}
/* if ((TYPE(ux) != T_ARRAY) &&
(rb_obj_is_kind_of(ux, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
n = rb_funcall(n, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_islct = NUM2INT(islct);
i_n = NUM2INT(n);
i_ux = dcl_obj2crealary(ux);
uxptmk_(i_cside, &i_islct, i_ux, &i_n, (ftnlen)strlen(i_cside));
dcl_freecrealary(i_ux);
return Qnil;
}
static VALUE
dcl_uxplbl(obj, cside, islct, ux, ch, nc, n)
VALUE obj, cside, islct, ux, ch, nc, n;
{
char *i_cside;
integer i_islct;
real *i_ux;
char *i_ch;
integer i_nc;
integer i_n;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if ((TYPE(islct) != T_BIGNUM) || (TYPE(islct) != T_FIXNUM)) {
islct = rb_funcall(islct, rb_intern("to_i"), 0);
}
if (TYPE(ux) == T_FLOAT) {
ux = rb_Array(ux);
}
/* if ((TYPE(ux) != T_ARRAY) &&
(rb_obj_is_kind_of(ux, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if (TYPE(ch) == T_STRING) {
ch = rb_Array(ch);
}
if (TYPE(ch) != T_ARRAY) {
rb_raise(rb_eTypeError, "invalid type");
}
if ((TYPE(nc) != T_BIGNUM) || (TYPE(nc) != T_FIXNUM)) {
nc = rb_funcall(nc, rb_intern("to_i"), 0);
}
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
n = rb_funcall(n, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_islct = NUM2INT(islct);
i_nc = NUM2INT(nc);
i_n = NUM2INT(n);
i_ux = dcl_obj2crealary(ux);
i_ch = dcl_obj2ccharary(ch, (i_n*DFLT_SIZE), DFLT_SIZE);
uxplbl_(i_cside, &i_islct, i_ux, i_ch, &i_nc, &i_n, (ftnlen)strlen(i_cside), (ftnlen)DFLT_SIZE);
dcl_freecrealary(i_ux);
dcl_freeccharary(i_ch);
return Qnil;
}
static VALUE
dcl_uxpnum(obj, cside, islct, ux, n)
VALUE obj, cside, islct, ux, n;
{
char *i_cside;
integer i_islct;
real *i_ux;
integer i_n;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if ((TYPE(islct) != T_BIGNUM) || (TYPE(islct) != T_FIXNUM)) {
islct = rb_funcall(islct, rb_intern("to_i"), 0);
}
if (TYPE(ux) == T_FLOAT) {
ux = rb_Array(ux);
}
/* if ((TYPE(ux) != T_ARRAY) &&
(rb_obj_is_kind_of(ux, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if ((TYPE(n) != T_BIGNUM) || (TYPE(n) != T_FIXNUM)) {
n = rb_funcall(n, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_islct = NUM2INT(islct);
i_n = NUM2INT(n);
i_ux = dcl_obj2crealary(ux);
uxpnum_(i_cside, &i_islct, i_ux, &i_n, (ftnlen)strlen(i_cside));
dcl_freecrealary(i_ux);
return Qnil;
}
static VALUE
dcl_uxpttl(obj, cside, islct, cttl, px)
VALUE obj, cside, islct, cttl, px;
{
char *i_cside;
integer i_islct;
char *i_cttl;
real i_px;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if ((TYPE(islct) != T_BIGNUM) || (TYPE(islct) != T_FIXNUM)) {
islct = rb_funcall(islct, rb_intern("to_i"), 0);
}
if (TYPE(cttl) != T_STRING) {
cttl = rb_funcall(cttl, rb_intern("to_str"), 0);
}
if (TYPE(px) != T_FLOAT) {
px = rb_funcall(px, rb_intern("to_f"), 0);
}
i_cside = STR2CSTR(cside);
i_islct = NUM2INT(islct);
i_cttl = STR2CSTR(cttl);
i_px = (real)NUM2DBL(px);
uxpttl_(i_cside, &i_islct, i_cttl, &i_px, (ftnlen)strlen(i_cside), (ftnlen)strlen(i_cttl));
return Qnil;
}
static VALUE
dcl_uxaxlb(obj, cside, ux1, n1, ux2, ch, nc, n2)
VALUE obj, cside, ux1, n1, ux2, ch, nc, n2;
{
char *i_cside;
real *i_ux1;
integer i_n1;
real *i_ux2;
char *i_ch;
integer i_nc;
integer i_n2;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(ux1) == T_FLOAT) {
ux1 = rb_Array(ux1);
}
/* if ((TYPE(ux1) != T_ARRAY) &&
(rb_obj_is_kind_of(ux1, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if ((TYPE(n1) != T_BIGNUM) || (TYPE(n1) != T_FIXNUM)) {
n1 = rb_funcall(n1, rb_intern("to_i"), 0);
}
if (TYPE(ux2) == T_FLOAT) {
ux2 = rb_Array(ux2);
}
/* if ((TYPE(ux2) != T_ARRAY) &&
(rb_obj_is_kind_of(ux2, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if (TYPE(ch) == T_STRING) {
ch = rb_Array(ch);
}
if (TYPE(ch) != T_ARRAY) {
rb_raise(rb_eTypeError, "invalid type");
}
if ((TYPE(nc) != T_BIGNUM) || (TYPE(nc) != T_FIXNUM)) {
nc = rb_funcall(nc, rb_intern("to_i"), 0);
}
if ((TYPE(n2) != T_BIGNUM) || (TYPE(n2) != T_FIXNUM)) {
n2 = rb_funcall(n2, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_n1 = NUM2INT(n1);
i_nc = NUM2INT(nc);
i_n2 = NUM2INT(n2);
i_ux1 = dcl_obj2crealary(ux1);
i_ux2 = dcl_obj2crealary(ux2);
i_ch = dcl_obj2ccharary(ch, (i_n2*DFLT_SIZE), DFLT_SIZE);
uxaxlb_(i_cside, i_ux1, &i_n1, i_ux2, i_ch, &i_nc, &i_n2, (ftnlen)strlen(i_cside), (ftnlen)DFLT_SIZE);
dcl_freecrealary(i_ux1);
dcl_freecrealary(i_ux2);
dcl_freeccharary(i_ch);
return Qnil;
}
static VALUE
dcl_uxaxnm(obj, cside, ux1, n1, ux2, n2)
VALUE obj, cside, ux1, n1, ux2, n2;
{
char *i_cside;
real *i_ux1;
integer i_n1;
real *i_ux2;
integer i_n2;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(ux1) == T_FLOAT) {
ux1 = rb_Array(ux1);
}
/* if ((TYPE(ux1) != T_ARRAY) &&
(rb_obj_is_kind_of(ux1, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if ((TYPE(n1) != T_BIGNUM) || (TYPE(n1) != T_FIXNUM)) {
n1 = rb_funcall(n1, rb_intern("to_i"), 0);
}
if (TYPE(ux2) == T_FLOAT) {
ux2 = rb_Array(ux2);
}
/* if ((TYPE(ux2) != T_ARRAY) &&
(rb_obj_is_kind_of(ux2, cNArray) != Qtrue)) {
rb_raise(rb_eTypeError, "invalid type");
} -- no check since obj2c*ary will do that */
if ((TYPE(n2) != T_BIGNUM) || (TYPE(n2) != T_FIXNUM)) {
n2 = rb_funcall(n2, rb_intern("to_i"), 0);
}
i_cside = STR2CSTR(cside);
i_n1 = NUM2INT(n1);
i_n2 = NUM2INT(n2);
i_ux1 = dcl_obj2crealary(ux1);
i_ux2 = dcl_obj2crealary(ux2);
uxaxnm_(i_cside, i_ux1, &i_n1, i_ux2, &i_n2, (ftnlen)strlen(i_cside));
dcl_freecrealary(i_ux1);
dcl_freecrealary(i_ux2);
return Qnil;
}
static VALUE
dcl_uxaxdv(obj, cside, dx1, dx2)
VALUE obj, cside, dx1, dx2;
{
char *i_cside;
real i_dx1;
real i_dx2;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(dx1) != T_FLOAT) {
dx1 = rb_funcall(dx1, rb_intern("to_f"), 0);
}
if (TYPE(dx2) != T_FLOAT) {
dx2 = rb_funcall(dx2, rb_intern("to_f"), 0);
}
i_cside = STR2CSTR(cside);
i_dx1 = (real)NUM2DBL(dx1);
i_dx2 = (real)NUM2DBL(dx2);
uxaxdv_(i_cside, &i_dx1, &i_dx2, (ftnlen)strlen(i_cside));
return Qnil;
}
static VALUE
dcl_uxmttl(obj, cside, cttl, px)
VALUE obj, cside, cttl, px;
{
char *i_cside;
char *i_cttl;
real i_px;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(cttl) != T_STRING) {
cttl = rb_funcall(cttl, rb_intern("to_str"), 0);
}
if (TYPE(px) != T_FLOAT) {
px = rb_funcall(px, rb_intern("to_f"), 0);
}
i_cside = STR2CSTR(cside);
i_cttl = STR2CSTR(cttl);
i_px = (real)NUM2DBL(px);
uxmttl_(i_cside, i_cttl, &i_px, (ftnlen)strlen(i_cside), (ftnlen)strlen(i_cttl));
return Qnil;
}
static VALUE
dcl_uxsttl(obj, cside, cttl, px)
VALUE obj, cside, cttl, px;
{
char *i_cside;
char *i_cttl;
real i_px;
if (TYPE(cside) != T_STRING) {
cside = rb_funcall(cside, rb_intern("to_str"), 0);
}
if (TYPE(cttl) != T_STRING) {
cttl = rb_funcall(cttl, rb_intern("to_str"), 0);
}
if (TYPE(px) != T_FLOAT) {
px = rb_funcall(px, rb_intern("to_f"), 0);
}
i_cside = STR2CSTR(cside);
i_cttl = STR2CSTR(cttl);
i_px = (real)NUM2DBL(px);
uxsttl_(i_cside, i_cttl, &i_px, (ftnlen)strlen(i_cside), (ftnlen)strlen(i_cttl));
return Qnil;
}
static VALUE
dcl_uxsfmt(obj, cfmt)
VALUE obj, cfmt;
{
char *i_cfmt;
if (TYPE(cfmt) != T_STRING) {
cfmt = rb_funcall(cfmt, rb_intern("to_str"), 0);
}
i_cfmt = STR2CSTR(cfmt);
uxsfmt_(i_cfmt, (ftnlen)strlen(i_cfmt));
return Qnil;
}
static VALUE
dcl_uxqfmt(obj)
VALUE obj;
{
char *o_cfmt;
VALUE cfmt;
o_cfmt= ALLOCA_N(char, (DFLT_SIZE+1));
memset(o_cfmt, '\0', DFLT_SIZE+1);
uxqfmt_(o_cfmt, (ftnlen)DFLT_SIZE);
cfmt = rb_str_new2(o_cfmt);
return cfmt;
}
void
init_grph2_uxpack(mDCL)
VALUE mDCL;
{
rb_define_module_function(mDCL, "uxsaxz", dcl_uxsaxz, 2);
rb_define_module_function(mDCL, "uxsaxs", dcl_uxsaxs, 1);
rb_define_module_function(mDCL, "uxpaxs", dcl_uxpaxs, 2);
rb_define_module_function(mDCL, "uxptmk", dcl_uxptmk, 4);
rb_define_module_function(mDCL, "uxplbl", dcl_uxplbl, 6);
rb_define_module_function(mDCL, "uxpnum", dcl_uxpnum, 4);
rb_define_module_function(mDCL, "uxpttl", dcl_uxpttl, 4);
rb_define_module_function(mDCL, "uxaxlb", dcl_uxaxlb, 7);
rb_define_module_function(mDCL, "uxaxnm", dcl_uxaxnm, 5);
rb_define_module_function(mDCL, "uxaxdv", dcl_uxaxdv, 3);
rb_define_module_function(mDCL, "uxmttl", dcl_uxmttl, 3);
rb_define_module_function(mDCL, "uxsttl", dcl_uxsttl, 3);
rb_define_module_function(mDCL, "uxsfmt", dcl_uxsfmt, 1);
rb_define_module_function(mDCL, "uxqfmt", dcl_uxqfmt, 0);
}
syntax highlighted by Code2HTML, v. 0.9.1