static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t) { char name[64]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (str_tail_grep(name, "nmsimplex") == 0) return gsl_multimin_fminimizer_nmsimplex; if (str_tail_grep(name, "nmsimplex2rand") == 0) return gsl_multimin_fminimizer_nmsimplex2rand; else rb_raise(rb_eTypeError, "unknown type %s (nmsimplex and nmsimplex2rand supported)", name); break; case T_FIXNUM: switch (FIX2INT(t)) { case GSL_FMINIMIZER_NMSIMPLEX: return gsl_multimin_fminimizer_nmsimplex; break; case GSL_FMINIMIZER_NMSIMPLEX2RAND: return gsl_multimin_fminimizer_nmsimplex2rand; break; default: rb_raise(rb_eTypeError, "%d: unknown type (not supported)", FIX2INT(t)); break; } break; default: rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)", rb_class2name(CLASS_OF(t))); break; } }
static const gsl_multimin_fdfminimizer_type* get_fdfminimizer_type(VALUE t) { char name[64]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (str_tail_grep(name, "conjugate_fr") == 0) return gsl_multimin_fdfminimizer_conjugate_fr; else if (str_tail_grep(name, "conjugate_pr") == 0) return gsl_multimin_fdfminimizer_conjugate_pr; else if (str_tail_grep(name, "vector_bfgs") == 0) return gsl_multimin_fdfminimizer_vector_bfgs; else if (str_tail_grep(name, "steepest_descent") == 0) return gsl_multimin_fdfminimizer_steepest_descent; #ifdef GSL_1_9_LATER else if (str_tail_grep(name, "vector_bfgs2") == 0) return gsl_multimin_fdfminimizer_vector_bfgs2; #endif else rb_raise(rb_eTypeError, "%s: unknown minimizer type", name); break; case T_FIXNUM: switch (FIX2INT(t)) { case GSL_FDFMINIMIZER_CONJUGATE_FR: return gsl_multimin_fdfminimizer_conjugate_fr; break; case GSL_FDFMINIMIZER_CONJUGATE_PR: return gsl_multimin_fdfminimizer_conjugate_pr; break; case GSL_FDFMINIMIZER_VECTOR_BFGS: return gsl_multimin_fdfminimizer_vector_bfgs; break; case GSL_FDFMINIMIZER_STEEPEST_DESCENT: return gsl_multimin_fdfminimizer_steepest_descent; break; #ifdef GSL_1_9_LATER case GSL_FDFMINIMIZER_VECTOR_BFGS2: return gsl_multimin_fdfminimizer_vector_bfgs2; break; #endif default: rb_raise(rb_eTypeError, "%d: unknown type", FIX2INT(t)); break; } break; default: rb_raise(rb_eTypeError, "type is given by a String or a Fixnum"); break; } }
static VALUE rb_gsl_fsolver_new(VALUE klass, VALUE t) { gsl_root_fsolver *s = NULL; const gsl_root_fsolver_type *T; char name[32]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (!str_tail_grep(name, "bisection")) { T = gsl_root_fsolver_bisection; } else if (!str_tail_grep(name, "falsepos")) { T = gsl_root_fsolver_falsepos; } else if (!str_tail_grep(name, "brent")) { T = gsl_root_fsolver_brent; } else { rb_raise(rb_eTypeError, "type must be \"bisection\" or \"falsepos\", or \"brent\"."); } break; case T_FIXNUM: switch (FIX2INT(t)) { case GSL_ROOT_FSOLVER_BISECTION: T = gsl_root_fsolver_bisection; break; case GSL_ROOT_FSOLVER_FALSEPOS: T = gsl_root_fsolver_falsepos; break; case GSL_ROOT_FSOLVER_BRENT: T = gsl_root_fsolver_brent; break; default: rb_raise(rb_eTypeError, "type must be BISECTION or FALSEPOS, or BRENT."); break; } break; default: rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)", rb_class2name(CLASS_OF(t))); break; } s = gsl_root_fsolver_alloc(T); return Data_Wrap_Struct(klass, 0, gsl_root_fsolver_free, s); }
static const gsl_min_fminimizer_type* rb_gsl_min_fminimizer_type_get(VALUE t) { char name[32]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (str_tail_grep(name, "goldensection") == 0) return gsl_min_fminimizer_goldensection; else if (str_tail_grep(name, "brent") == 0) return gsl_min_fminimizer_brent; #ifdef GSL_1_13_LATER else if (str_tail_grep(name, "quad_golden") == 0) return gsl_min_fminimizer_quad_golden; #endif else rb_raise(rb_eTypeError, "unknown type %s (goldensection, brent or quad_golden expected)", name); break; case T_FIXNUM: switch (FIX2INT(t)) { case GSL_MIN_FMINIMIZER_GOLDENSECTION: return gsl_min_fminimizer_goldensection; break; case GSL_MIN_FMINIMIZER_BRENT: return gsl_min_fminimizer_brent; break; #ifdef GSL_1_13_LATER case GSL_MIN_FMINIMIZER_QUAD_GOLDEN: return gsl_min_fminimizer_quad_golden; break; #endif default: rb_raise(rb_eTypeError, "unknown type (GOLDENSECION or BRENT or QUAD_GOLDEN expected)"); break; } break; default: rb_raise(rb_eTypeError, "wrong argument type %s (String of Fixnum)", rb_class2name(CLASS_OF(t))); break; } }
static VALUE rb_gsl_fdfsolver_new(VALUE klass, VALUE t) { gsl_root_fdfsolver *s = NULL; const gsl_root_fdfsolver_type *T; char name[32]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (!str_tail_grep(name, "newton")) { T = gsl_root_fdfsolver_newton; } else if (!str_tail_grep(name, "secant")) { T = gsl_root_fdfsolver_secant; } else if (!str_tail_grep(name, "steffenson")) { T = gsl_root_fdfsolver_steffenson; } else { rb_raise(rb_eTypeError, "type must be NEWTON or SECANT, or STEFFENSON."); } break; case T_FIXNUM: switch (FIX2INT(t)) { case GSL_ROOT_FDFSOLVER_NEWTON: T = gsl_root_fdfsolver_newton; break; case GSL_ROOT_FDFSOLVER_SECANT: T = gsl_root_fdfsolver_secant; break; case GSL_ROOT_FDFSOLVER_STEFFENSON: T = gsl_root_fdfsolver_steffenson; break; default: rb_raise(rb_eTypeError, "type must be NEWTON or SECANT, or STEFFENSON."); break; } break; default: rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)", rb_class2name(CLASS_OF(t))); break; } s = gsl_root_fdfsolver_alloc(T); return Data_Wrap_Struct(klass, 0, gsl_root_fdfsolver_free, s); }
static const ool_conmin_minimizer_type* get_minimizer_type(VALUE t) { char name[64]; switch (TYPE(t)) { case T_STRING: strcpy(name, STR2CSTR(t)); if (str_tail_grep(name, "pgrad") == 0) { return ool_conmin_minimizer_pgrad; } else if (str_tail_grep(name, "spg") == 0) { return ool_conmin_minimizer_spg; } else if (str_tail_grep(name, "gencan") == 0) { return ool_conmin_minimizer_gencan; } else { rb_raise(rb_eTypeError, "%s: unknown minimizer type", name); } break; case T_FIXNUM: switch (FIX2INT(t)) { case OOL_CONMIN_PGRAD: return ool_conmin_minimizer_pgrad; break; case OOL_CONMIN_SPG: return ool_conmin_minimizer_spg; break; case OOL_CONMIN_GENCAN: return ool_conmin_minimizer_gencan; break; default: rb_raise(rb_eTypeError, "%d: unknown minimizer type", FIX2INT(t)); break; } break; default: if (t == cool_conmin_pgrad) return ool_conmin_minimizer_pgrad; else if (t == cool_conmin_spg) return ool_conmin_minimizer_spg; else if (t == cool_conmin_gencan) return ool_conmin_minimizer_gencan; else rb_raise(rb_eTypeError, "type is given by a String or a Fixnum"); break; } }
const gsl_interp_type* get_interp_type(VALUE t) { int type; char name[32]; switch (TYPE(t)) { case T_FIXNUM: type = FIX2INT(t); switch (type) { case GSL_INTERP_LINEAR: return gsl_interp_linear; break; #ifdef GSL_1_1_LATER case GSL_INTERP_POLYNOMIAL: return gsl_interp_polynomial; break; #endif case GSL_INTERP_CSPLINE: return gsl_interp_cspline; break; case GSL_INTERP_CSPLINE_PERIODIC: return gsl_interp_cspline_periodic; break; case GSL_INTERP_AKIMA: return gsl_interp_akima; break; case GSL_INTERP_AKIMA_PERIODIC: return gsl_interp_akima_periodic; break; default: rb_raise(rb_eTypeError, "unknown type %d\n", type); break; } break; case T_STRING: strcpy(name, STR2CSTR(t)); if (str_tail_grep(name, "linear") == 0) { return gsl_interp_linear; #ifdef GSL_1_1_LATER } else if (str_tail_grep(name, "polynomial") == 0) { return gsl_interp_polynomial; #endif } else if (str_tail_grep(name, "cspline") == 0) { return gsl_interp_cspline; } else if (str_tail_grep(name, "cspline_periodic") == 0) { return gsl_interp_cspline_periodic; } else if (str_tail_grep(name, "akima") == 0) { return gsl_interp_akima; } else if (str_tail_grep(name, "akima_periodic") == 0) { return gsl_interp_akima_periodic; } else { rb_raise(rb_eTypeError, "Unknown type"); } break; default: rb_raise(rb_eTypeError, "Unknown type"); break; } }
static const gsl_wavelet_type* rb_gsl_wavelet_get_type_str(char *name) { const gsl_wavelet_type *T; if (str_tail_grep(name, "daubechies") == 0) T = gsl_wavelet_daubechies; else if (str_tail_grep(name, "daubechies_centered") == 0) T = gsl_wavelet_daubechies_centered; else if (str_tail_grep(name, "haar") == 0) T = gsl_wavelet_haar; else if (str_tail_grep(name, "haar_centered") == 0) T = gsl_wavelet_haar_centered; else if (str_tail_grep(name, "bspline") == 0) T = gsl_wavelet_bspline; else if (str_tail_grep(name, "bspline_centered") == 0) T = gsl_wavelet_bspline_centered; else rb_raise(rb_eArgError, "unknown type %s", name); return T; }
static const gsl_rng_type* get_gsl_rng_type_name(char *name) { if (str_tail_grep(name, "default") == 0) return gsl_rng_default; else if (str_tail_grep(name, "mt19937") == 0) return gsl_rng_mt19937; #ifdef GSL_1_1_LATER else if (str_tail_grep(name, "borosh13") == 0) return gsl_rng_borosh13; else if (str_tail_grep(name, "coveyou") == 0) return gsl_rng_coveyou; else if (str_tail_grep(name, "fishman18") == 0) return gsl_rng_fishman18; else if (str_tail_grep(name, "fishman20") == 0) return gsl_rng_fishman20; else if (str_tail_grep(name, "fishman2x") == 0) return gsl_rng_fishman2x; else if (str_tail_grep(name, "lecuyer21") == 0) return gsl_rng_lecuyer21; else if (str_tail_grep(name, "waterman14") == 0) return gsl_rng_waterman14; else if (str_tail_grep(name, "knuthran") == 0) return gsl_rng_knuthran; else if (str_tail_grep(name, "knuthran2") == 0) return gsl_rng_knuthran2; #endif #ifdef GSL_1_2_LATER else if (str_tail_grep(name, "mt19937_1999") == 0) return gsl_rng_mt19937_1999; else if (str_tail_grep(name, "mt19937-1999") == 0) return gsl_rng_mt19937_1999; else if (str_tail_grep(name, "mt19937_1998") == 0) return gsl_rng_mt19937_1998; else if (str_tail_grep(name, "mt19937-1998") == 0) return gsl_rng_mt19937_1998; else if (str_tail_grep(name, "taus113") == 0) return gsl_rng_taus113; else if (str_tail_grep(name, "taus2") == 0) return gsl_rng_taus2; #endif else if (str_tail_grep(name, "mt19937") == 0) return gsl_rng_mt19937; else if (str_tail_grep(name, "ranlxs0") == 0) return gsl_rng_ranlxs0; else if (str_tail_grep(name, "ranlxs1") == 0) return gsl_rng_ranlxs1; else if (str_tail_grep(name, "ranlxs2") == 0) return gsl_rng_ranlxs2; else if (str_tail_grep(name, "ranlxd1") == 0) return gsl_rng_ranlxd1; else if (str_tail_grep(name, "ranlxd2") == 0) return gsl_rng_ranlxd2; else if (str_tail_grep(name, "ranlux") == 0) return gsl_rng_ranlux; else if (str_tail_grep(name, "ranlux389") == 0) return gsl_rng_ranlux389; else if (str_tail_grep(name, "cmrg") == 0) return gsl_rng_cmrg; else if (str_tail_grep(name, "mrg") == 0) return gsl_rng_mrg; else if (str_tail_grep(name, "taus") == 0) return gsl_rng_taus; else if (str_tail_grep(name, "gfsr4") == 0) return gsl_rng_gfsr4; else if (str_tail_grep(name, "rand") == 0) return gsl_rng_rand; else if (str_tail_grep(name, "random_libc5") == 0) return gsl_rng_random_libc5; else if (str_tail_grep(name, "random8_libc5") == 0) return gsl_rng_random8_libc5; else if (str_tail_grep(name, "random32_libc5") == 0) return gsl_rng_random32_libc5; else if (str_tail_grep(name, "random64_libc5") == 0) return gsl_rng_random64_libc5; else if (str_tail_grep(name, "random128_libc5") == 0) return gsl_rng_random128_libc5; else if (str_tail_grep(name, "random256_libc5") == 0) return gsl_rng_random256_libc5; else if (str_tail_grep(name, "random-libc5") == 0) return gsl_rng_random_libc5; else if (str_tail_grep(name, "random8-libc5") == 0) return gsl_rng_random8_libc5; else if (str_tail_grep(name, "random32-libc5") == 0) return gsl_rng_random32_libc5; else if (str_tail_grep(name, "random64-libc5") == 0) return gsl_rng_random64_libc5; else if (str_tail_grep(name, "random128-libc5") == 0) return gsl_rng_random128_libc5; else if (str_tail_grep(name, "random256-libc5") == 0) return gsl_rng_random256_libc5; else if (str_tail_grep(name, "random_glibc2") == 0) return gsl_rng_random_glibc2; else if (str_tail_grep(name, "random8_glibc2") == 0) return gsl_rng_random8_glibc2; else if (str_tail_grep(name, "random32_glibc2") == 0) return gsl_rng_random32_glibc2; else if (str_tail_grep(name, "random64_glibc2") == 0) return gsl_rng_random64_glibc2; else if (str_tail_grep(name, "random128_glibc2") == 0) return gsl_rng_random128_glibc2; else if (str_tail_grep(name, "random256_glibc2") == 0) return gsl_rng_random256_glibc2; else if (str_tail_grep(name, "random-glibc2") == 0) return gsl_rng_random_glibc2; else if (str_tail_grep(name, "random8-glibc2") == 0) return gsl_rng_random8_glibc2; else if (str_tail_grep(name, "random32-glibc2") == 0) return gsl_rng_random32_glibc2; else if (str_tail_grep(name, "random64-glibc2") == 0) return gsl_rng_random64_glibc2; else if (str_tail_grep(name, "random128-glibc2") == 0) return gsl_rng_random128_glibc2; else if (str_tail_grep(name, "random256-glibc2") == 0) return gsl_rng_random256_glibc2; else if (str_tail_grep(name, "random_bsd") == 0) return gsl_rng_random_bsd; else if (str_tail_grep(name, "random8_bsd") == 0) return gsl_rng_random8_bsd; else if (str_tail_grep(name, "random32_bsd") == 0) return gsl_rng_random32_bsd; else if (str_tail_grep(name, "random64_bsd") == 0) return gsl_rng_random64_bsd; else if (str_tail_grep(name, "random128_bsd") == 0) return gsl_rng_random128_bsd; else if (str_tail_grep(name, "random256_bsd") == 0) return gsl_rng_random256_bsd; else if (str_tail_grep(name, "random-bsd") == 0) return gsl_rng_random_bsd; else if (str_tail_grep(name, "random8-bsd") == 0) return gsl_rng_random8_bsd; else if (str_tail_grep(name, "random32-bsd") == 0) return gsl_rng_random32_bsd; else if (str_tail_grep(name, "random64-bsd") == 0) return gsl_rng_random64_bsd; else if (str_tail_grep(name, "random128-bsd") == 0) return gsl_rng_random128_bsd; else if (str_tail_grep(name, "random256-bsd") == 0) return gsl_rng_random256_bsd; else if (str_tail_grep(name, "rand48") == 0) return gsl_rng_rand48; else if (str_tail_grep(name, "ran0") == 0) return gsl_rng_ran0; else if (str_tail_grep(name, "ran1") == 0) return gsl_rng_ran1; else if (str_tail_grep(name, "ran2") == 0) return gsl_rng_ran2; else if (str_tail_grep(name, "ran3") == 0) return gsl_rng_ran3; else if (str_tail_grep(name, "ranf") == 0) return gsl_rng_ranf; else if (str_tail_grep(name, "ranmar") == 0) return gsl_rng_ranmar; else if (str_tail_grep(name, "r250") == 0) return gsl_rng_r250; else if (str_tail_grep(name, "tt800") == 0) return gsl_rng_tt800; else if (str_tail_grep(name, "vax") == 0) return gsl_rng_vax; else if (str_tail_grep(name, "transputer") == 0) return gsl_rng_transputer; else if (str_tail_grep(name, "randu") == 0) return gsl_rng_randu; else if (str_tail_grep(name, "minstd") == 0) return gsl_rng_minstd; else if (str_tail_grep(name, "uni") == 0) return gsl_rng_uni; else if (str_tail_grep(name, "uni32") == 0) return gsl_rng_uni32; else if (str_tail_grep(name, "slatec") == 0) return gsl_rng_slatec; else if (str_tail_grep(name, "zuf") == 0) return gsl_rng_zuf; #ifdef HAVE_RNGEXTRA_RNGEXTRA_H else if (str_tail_grep(name, "rngextra_rng1") == 0) return rngextra_rng1; else if (str_tail_grep(name, "rngextra_rng2") == 0) return rngextra_rng2; else if (str_tail_grep(name, "rngextra-rng1") == 0) return rngextra_rng1; else if (str_tail_grep(name, "rngextra-rng2") == 0) return rngextra_rng2; #else else if (str_tail_grep(name, "rngextra_rng1")*str_tail_grep(name, "rngextra_rng2") == 0) rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>."); else if (str_tail_grep(name, "rngextra_rng2")*str_tail_grep(name, "rngextra_rng2") == 0) rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>."); else if (str_tail_grep(name, "rngextra-rng1")*str_tail_grep(name, "rngextra_rng2") == 0) rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>."); else if (str_tail_grep(name, "rngextra-rng2")*str_tail_grep(name, "rngextra_rng2") == 0) rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>."); #endif #ifdef GSL_1_9_LATER else if (str_tail_grep(name, "knuthran2002") == 0) return gsl_rng_knuthran2002; #endif else rb_raise(rb_eArgError, "unknown generator type \"%s\"", name); }
static const gsl_odeiv_step_type* rb_gsl_odeiv_step_type_get(VALUE tt) { const gsl_odeiv_step_type *T; int type; char name[64]; switch (TYPE(tt)) { case T_FIXNUM: type = FIX2INT(tt); switch (type) { case GSL_ODEIV_STEP_RK2: T = gsl_odeiv_step_rk2; break; case GSL_ODEIV_STEP_RK4: T = gsl_odeiv_step_rk4; break; case GSL_ODEIV_STEP_RKF45: T = gsl_odeiv_step_rkf45; break; case GSL_ODEIV_STEP_RKCK: T = gsl_odeiv_step_rkck; break; case GSL_ODEIV_STEP_RK8PD: T = gsl_odeiv_step_rk8pd; break; case GSL_ODEIV_STEP_RK2IMP: T = gsl_odeiv_step_rk2imp; break; case GSL_ODEIV_STEP_RK4IMP: T = gsl_odeiv_step_rk4imp; break; case GSL_ODEIV_STEP_BSIMP: T = gsl_odeiv_step_bsimp; break; case GSL_ODEIV_STEP_GEAR1: T = gsl_odeiv_step_gear1; break; case GSL_ODEIV_STEP_GEAR2: T = gsl_odeiv_step_gear2; break; #ifdef GSL_1_6_LATER case GSL_ODEIV_STEP_RK2SIMP: T = gsl_odeiv_step_rk2simp; break; #endif default: rb_raise(rb_eArgError, "wrong argument type (Fixnum expected)"); break; } break; case T_STRING: strcpy(name, STR2CSTR(tt)); if (str_tail_grep(name, "rk2") == 0) T = gsl_odeiv_step_rk2; else if (str_tail_grep(name, "rk4") == 0) T = gsl_odeiv_step_rk4; else if (str_tail_grep(name, "rkf45") == 0) T = gsl_odeiv_step_rkf45; else if (str_tail_grep(name, "rkck") == 0) T = gsl_odeiv_step_rkck; else if (str_tail_grep(name, "rk8pd") == 0) T = gsl_odeiv_step_rk8pd; else if (str_tail_grep(name, "rk2imp") == 0) T = gsl_odeiv_step_rk2imp; else if (str_tail_grep(name, "rk4imp") == 0) T = gsl_odeiv_step_rk4imp; else if (str_tail_grep(name, "bsimp") == 0) T = gsl_odeiv_step_bsimp; else if (str_tail_grep(name, "gear1") == 0) T = gsl_odeiv_step_gear1; else if (str_tail_grep(name, "gear2") == 0) T = gsl_odeiv_step_gear2; #ifdef GSL_1_6_LATER else if (str_tail_grep(name, "rk2simp") == 0) T = gsl_odeiv_step_rk2simp; #endif else { rb_raise(rb_eArgError, "wrong argument type %s", name); } break; default: rb_raise(rb_eArgError, "wrong argument type %s (String or Fixnum expected)", rb_class2name(CLASS_OF(tt))); break; } return T; }
void make_graphcommand(char *command, VALUE hash) { VALUE val; if (TYPE(hash) == T_STRING) { sprintf(command, "graph -T X -g 3 %s", STR2CSTR(hash)); return; } strcpy(command, "graph"); if (TYPE(hash) != T_HASH) rb_raise(rb_eTypeError, "wrong argument type %s (Hash expected)", rb_class2name(CLASS_OF(hash))); if ((val = rb_hash_aref(hash, rb_str_new2("T"))) != Qnil) sprintf(command, "%s -T %s", command, STR2CSTR(val)); else sprintf(command, "%s -T X", command); val = rb_hash_aref(hash, rb_str_new2("C")); if (val == Qtrue) sprintf(command, "%s -C", command); if ((val = rb_hash_aref(hash, rb_str_new2("g"))) != Qnil) sprintf(command, "%s -g %d", command, (int) FIX2INT(val)); else sprintf(command, "%s -g 3", command); if ((val = rb_hash_aref(hash, rb_str_new2("B"))) == Qtrue) sprintf(command, "%s -B", command); if ((val = rb_hash_aref(hash, rb_str_new2("E"))) != Qnil) sprintf(command, "%s -E %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("f"))) != Qnil) sprintf(command, "%s -f %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("F"))) != Qnil) sprintf(command, "%s -F %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("h"))) != Qnil) sprintf(command, "%s -h %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("k"))) != Qnil) sprintf(command, "%s -k %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("K"))) != Qnil) sprintf(command, "%s -K %d", command, (int) FIX2INT(val)); if ((val = rb_hash_aref(hash, rb_str_new2("l"))) != Qnil) { if (str_tail_grep(STR2CSTR(val), "xy") || str_tail_grep(STR2CSTR(val), "x/y")) sprintf(command, "%s -l x -l y", command); else sprintf(command, "%s -l %s", command, STR2CSTR(val)); } if ((val = rb_hash_aref(hash, rb_str_new2("L"))) != Qnil) sprintf(command, "%s -L \"%s\"", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("N"))) != Qnil) sprintf(command, "%s -N %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("r"))) != Qnil) sprintf(command, "%s -r %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("R"))) != Qnil) sprintf(command, "%s -R %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("s"))) == Qtrue) sprintf(command, "%s -s", command); if ((val = rb_hash_aref(hash, rb_str_new2("t"))) == Qtrue) sprintf(command, "%s -t", command); if ((val = rb_hash_aref(hash, rb_str_new2("u"))) != Qnil) sprintf(command, "%s -u %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("w"))) != Qnil) sprintf(command, "%s -w %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("x"))) != Qnil) sprintf(command, "%s -x %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("X"))) != Qnil) sprintf(command, "%s -X \"%s\"", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("y"))) != Qnil) sprintf(command, "%s -y %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("Y"))) != Qnil) sprintf(command, "%s -Y \"%s\"", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("bg-color"))) != Qnil) sprintf(command, "%s --bg-color %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("bitmap-size"))) != Qnil) sprintf(command, "%s --bitmap-size %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("frame-color"))) != Qnil) sprintf(command, "%s --frame-color %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("frame-line-width"))) != Qnil) sprintf(command, "%s --frame-line-width %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("max-line-length"))) != Qnil) sprintf(command, "%s --max-line-length %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("page-size"))) != Qnil) sprintf(command, "%s --page-size %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("pen-colors"))) != Qnil) sprintf(command, "%s --pen-colors %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("rotation"))) != Qnil) sprintf(command, "%s --rotation %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("title-font-name"))) != Qnil) sprintf(command, "%s --title-font-name %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("title-font-size"))) != Qnil) sprintf(command, "%s --title-font-size %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("toggle-rotate-y-label"))) == Qtrue) sprintf(command, "%s --toggle-rotate-y-label", command); if ((val = rb_hash_aref(hash, rb_str_new2("m"))) != Qnil) sprintf(command, "%s -m %d", command, (int) FIX2INT(val)); if ((val = rb_hash_aref(hash, rb_str_new2("S"))) != Qnil) sprintf(command, "%s -S %d", command, (int) FIX2INT(val)); if ((val = rb_hash_aref(hash, rb_str_new2("W"))) != Qnil) sprintf(command, "%s -W %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("q"))) != Qnil) sprintf(command, "%s -q %f", command, NUM2DBL(val)); if ((val = rb_hash_aref(hash, rb_str_new2("symbol-font-name"))) != Qnil) sprintf(command, "%s --symbol-font-name %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("reposition"))) != Qnil) sprintf(command, "%s --reposition %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("blankout"))) != Qnil) sprintf(command, "%s --blankout %s", command, STR2CSTR(val)); if ((val = rb_hash_aref(hash, rb_str_new2("O"))) == Qtrue) sprintf(command, "%s -O", command); }