[macruby-changes] [2836] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sat Oct 17 01:10:13 PDT 2009
Revision: 2836
http://trac.macosforge.org/projects/ruby/changeset/2836
Author: lsansonetti at apple.com
Date: 2009-10-17 01:10:09 -0700 (Sat, 17 Oct 2009)
Log Message:
-----------
added BigDecimal extension (still experimental, some specs are failing)
Modified Paths:
--------------
MacRuby/trunk/ext/bigdecimal/bigdecimal.c
MacRuby/trunk/ext/bigdecimal/bigdecimal.h
MacRuby/trunk/rakelib/builder.rake
Modified: MacRuby/trunk/ext/bigdecimal/bigdecimal.c
===================================================================
--- MacRuby/trunk/ext/bigdecimal/bigdecimal.c 2009-10-16 21:36:31 UTC (rev 2835)
+++ MacRuby/trunk/ext/bigdecimal/bigdecimal.c 2009-10-17 08:10:09 UTC (rev 2836)
@@ -159,7 +159,7 @@
* Ruby 1.8.1 thru 1.8.3 return 1.0.1.
*/
static VALUE
-BigDecimal_version(VALUE self)
+BigDecimal_version(VALUE self, SEL sel)
{
/*
* 1.0.0: Ruby 1.8.0
@@ -254,7 +254,7 @@
* in use.
*/
static VALUE
-BigDecimal_double_fig(VALUE self)
+BigDecimal_double_fig(VALUE self, SEL sel)
{
return INT2FIX(VpDblFig());
}
@@ -269,7 +269,7 @@
* for the BigDecimal.
*/
static VALUE
-BigDecimal_prec(VALUE self)
+BigDecimal_prec(VALUE self, SEL sel)
{
ENTER(1);
Real *p;
@@ -282,7 +282,7 @@
}
static VALUE
-BigDecimal_hash(VALUE self)
+BigDecimal_hash(VALUE self, SEL sel)
{
ENTER(1);
Real *p;
@@ -302,7 +302,7 @@
}
static VALUE
-BigDecimal_dump(int argc, VALUE *argv, VALUE self)
+BigDecimal_dump(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
char sz[50];
@@ -322,7 +322,7 @@
* Internal method used to provide marshalling support. See the Marshal module.
*/
static VALUE
-BigDecimal_load(VALUE self, VALUE str)
+BigDecimal_load(VALUE self, SEL sel, VALUE str)
{
ENTER(2);
Real *pv;
@@ -385,7 +385,7 @@
*
*/
static VALUE
-BigDecimal_mode(int argc, VALUE *argv, VALUE self)
+BigDecimal_mode(VALUE self, SEL sel, int argc, VALUE *argv)
{
VALUE which;
VALUE val;
@@ -465,7 +465,7 @@
}
VP_EXPORT Real *
-VpNewRbClass(U_LONG mx, char *str, VALUE klass)
+VpNewRbClass(U_LONG mx, const char *str, VALUE klass)
{
Real *pv = VpAlloc(mx,str);
pv->obj = (VALUE)Data_Wrap_Struct(klass, 0, BigDecimal_delete, pv);
@@ -482,7 +482,7 @@
/* Returns True if the value is Not a Number */
static VALUE
-BigDecimal_IsNaN(VALUE self)
+BigDecimal_IsNaN(VALUE self, SEL sel)
{
Real *p = GetVpValue(self,1);
if(VpIsNaN(p)) return Qtrue;
@@ -491,7 +491,7 @@
/* Returns True if the value is infinite */
static VALUE
-BigDecimal_IsInfinite(VALUE self)
+BigDecimal_IsInfinite(VALUE self, SEL sel)
{
Real *p = GetVpValue(self,1);
if(VpIsPosInf(p)) return INT2FIX(1);
@@ -501,7 +501,7 @@
/* Returns True if the value is finite (not NaN or infinite) */
static VALUE
-BigDecimal_IsFinite(VALUE self)
+BigDecimal_IsFinite(VALUE self, SEL sel)
{
Real *p = GetVpValue(self,1);
if(VpIsNaN(p)) return Qfalse;
@@ -514,7 +514,7 @@
* If the BigNumber is infinity or NaN, returns nil.
*/
static VALUE
-BigDecimal_to_i(VALUE self)
+BigDecimal_to_i(VALUE self, SEL sel)
{
ENTER(5);
int e,n,i,nf;
@@ -570,7 +570,7 @@
}
static VALUE
-BigDecimal_induced_from(VALUE self, VALUE x)
+BigDecimal_induced_from(VALUE self, SEL sel, VALUE x)
{
Real *p = GetVpValue(x,1);
return p->obj;
@@ -581,7 +581,7 @@
* Float arithmetic apply.
*/
static VALUE
-BigDecimal_to_f(VALUE self)
+BigDecimal_to_f(VALUE self, SEL sel)
{
ENTER(1);
Real *p;
@@ -618,13 +618,13 @@
* it requires a special compile-time option when building Ruby.
*/
static VALUE
-BigDecimal_coerce(VALUE self, VALUE other)
+BigDecimal_coerce(VALUE self, SEL sel, VALUE other)
{
ENTER(2);
VALUE obj;
Real *b;
if(TYPE(other) == T_FLOAT) {
- obj = rb_assoc_new(other, BigDecimal_to_f(self));
+ obj = rb_assoc_new(other, BigDecimal_to_f(self, 0));
} else {
GUARD_OBJ(b,GetVpValue(other,1));
obj = rb_assoc_new(b->obj, self);
@@ -633,7 +633,7 @@
}
static VALUE
-BigDecimal_uplus(VALUE self)
+BigDecimal_uplus(VALUE self, SEL sel)
{
return self;
}
@@ -650,7 +650,7 @@
* digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
-BigDecimal_add(VALUE self, VALUE r)
+BigDecimal_add(VALUE self, SEL sel, VALUE r)
{
ENTER(5);
Real *c, *a, *b;
@@ -688,7 +688,7 @@
* digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
-BigDecimal_sub(VALUE self, VALUE r)
+BigDecimal_sub(VALUE self, SEL sel, VALUE r)
{
ENTER(5);
Real *c, *a, *b;
@@ -721,12 +721,12 @@
BigDecimalCmp(VALUE self, VALUE r,char op)
{
ENTER(5);
- S_INT e;
+ S_INT e = 0;
Real *a, *b;
GUARD_OBJ(a,GetVpValue(self,1));
b = GetVpValue(r,0);
if(!b) {
- ID f;
+ ID f = 0;
switch(op)
{
@@ -757,7 +757,7 @@
/* Returns True if the value is zero. */
static VALUE
-BigDecimal_zero(VALUE self)
+BigDecimal_zero(VALUE self, SEL sel)
{
Real *a = GetVpValue(self,1);
return VpIsZero(a) ? Qtrue : Qfalse;
@@ -765,7 +765,7 @@
/* Returns True if the value is non-zero. */
static VALUE
-BigDecimal_nonzero(VALUE self)
+BigDecimal_nonzero(VALUE self, SEL sel)
{
Real *a = GetVpValue(self,1);
return VpIsZero(a) ? Qnil : self;
@@ -775,7 +775,7 @@
* a <=> b is 0 if a == b, 1 if a > b, -1 if a < b.
*/
static VALUE
-BigDecimal_comp(VALUE self, VALUE r)
+BigDecimal_comp(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, '*');
}
@@ -791,7 +791,7 @@
* BigDecimal.new('1.0') == 1.0 -> true
*/
static VALUE
-BigDecimal_eq(VALUE self, VALUE r)
+BigDecimal_eq(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, '=');
}
@@ -803,7 +803,7 @@
* comparison (see ==, coerce).
*/
static VALUE
-BigDecimal_lt(VALUE self, VALUE r)
+BigDecimal_lt(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, '<');
}
@@ -815,7 +815,7 @@
* perform the comparison (see ==, coerce).
*/
static VALUE
-BigDecimal_le(VALUE self, VALUE r)
+BigDecimal_le(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, 'L');
}
@@ -827,7 +827,7 @@
* perform the comparison (see ==, coerce).
*/
static VALUE
-BigDecimal_gt(VALUE self, VALUE r)
+BigDecimal_gt(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, '>');
}
@@ -839,13 +839,13 @@
* perform the comparison (see ==, coerce)
*/
static VALUE
-BigDecimal_ge(VALUE self, VALUE r)
+BigDecimal_ge(VALUE self, SEL sel, VALUE r)
{
return BigDecimalCmp(self, r, 'G');
}
static VALUE
-BigDecimal_neg(VALUE self)
+BigDecimal_neg(VALUE self, SEL sel)
{
ENTER(5);
Real *c, *a;
@@ -867,7 +867,7 @@
* digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
-BigDecimal_mult(VALUE self, VALUE r)
+BigDecimal_mult(VALUE self, SEL sel, VALUE r)
{
ENTER(5);
Real *c, *a, *b;
@@ -922,7 +922,7 @@
* the quotient; see divmod.
*/
static VALUE
-BigDecimal_div(VALUE self, VALUE r)
+BigDecimal_div(VALUE self, SEL sel, VALUE r)
/* For c = self/r: with round operation */
{
ENTER(5);
@@ -1006,7 +1006,7 @@
* Returns the modulus from dividing by b. See divmod.
*/
static VALUE
-BigDecimal_mod(VALUE self, VALUE r) /* %: a%b = a - (a.to_f/b).floor * b */
+BigDecimal_mod(VALUE self, SEL sel, VALUE r) /* %: a%b = a - (a.to_f/b).floor * b */
{
ENTER(3);
VALUE obj;
@@ -1063,7 +1063,7 @@
* Otherwise, the remainder is the modulus minus the value divided by.
*/
static VALUE
-BigDecimal_remainder(VALUE self, VALUE r) /* remainder */
+BigDecimal_remainder(VALUE self, SEL sel, VALUE r) /* remainder */
{
VALUE f;
Real *d,*rv=0;
@@ -1092,7 +1092,7 @@
* added to q * b to get a.
*/
static VALUE
-BigDecimal_divmod(VALUE self, VALUE r)
+BigDecimal_divmod(VALUE self, SEL sel, VALUE r)
{
ENTER(5);
VALUE obj;
@@ -1106,7 +1106,7 @@
}
static VALUE
-BigDecimal_div2(int argc, VALUE *argv, VALUE self)
+BigDecimal_div2(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
VALUE b,n;
@@ -1120,7 +1120,7 @@
return ToValue(div);
} else { /* div in BigDecimal sense */
U_LONG ix = (U_LONG)GetPositiveInt(n);
- if(ix==0) return BigDecimal_div(self,b);
+ if(ix==0) return BigDecimal_div(self, 0, b);
else {
Real *res=NULL;
Real *av=NULL, *bv=NULL, *cv=NULL;
@@ -1142,15 +1142,15 @@
}
static VALUE
-BigDecimal_add2(VALUE self, VALUE b, VALUE n)
+BigDecimal_add2(VALUE self, SEL sel, VALUE b, VALUE n)
{
ENTER(2);
Real *cv;
U_LONG mx = (U_LONG)GetPositiveInt(n);
- if(mx==0) return BigDecimal_add(self,b);
+ if(mx==0) return BigDecimal_add(self, 0, b);
else {
U_LONG pl = VpSetPrecLimit(0);
- VALUE c = BigDecimal_add(self,b);
+ VALUE c = BigDecimal_add(self, 0, b);
VpSetPrecLimit(pl);
GUARD_OBJ(cv,GetVpValue(c,1));
VpLeftRound(cv,VpGetRoundMode(),mx);
@@ -1159,15 +1159,15 @@
}
static VALUE
-BigDecimal_sub2(VALUE self, VALUE b, VALUE n)
+BigDecimal_sub2(VALUE self, SEL sel, VALUE b, VALUE n)
{
ENTER(2);
Real *cv;
U_LONG mx = (U_LONG)GetPositiveInt(n);
- if(mx==0) return BigDecimal_sub(self,b);
+ if(mx==0) return BigDecimal_sub(self, 0, b);
else {
U_LONG pl = VpSetPrecLimit(0);
- VALUE c = BigDecimal_sub(self,b);
+ VALUE c = BigDecimal_sub(self, 0, b);
VpSetPrecLimit(pl);
GUARD_OBJ(cv,GetVpValue(c,1));
VpLeftRound(cv,VpGetRoundMode(),mx);
@@ -1176,15 +1176,15 @@
}
static VALUE
-BigDecimal_mult2(VALUE self, VALUE b, VALUE n)
+BigDecimal_mult2(VALUE self, SEL sel, VALUE b, VALUE n)
{
ENTER(2);
Real *cv;
U_LONG mx = (U_LONG)GetPositiveInt(n);
- if(mx==0) return BigDecimal_mult(self,b);
+ if(mx==0) return BigDecimal_mult(self, 0, b);
else {
U_LONG pl = VpSetPrecLimit(0);
- VALUE c = BigDecimal_mult(self,b);
+ VALUE c = BigDecimal_mult(self, 0, b);
VpSetPrecLimit(pl);
GUARD_OBJ(cv,GetVpValue(c,1));
VpLeftRound(cv,VpGetRoundMode(),mx);
@@ -1199,7 +1199,7 @@
* BigDecimal('-3').abs -> 3
*/
static VALUE
-BigDecimal_abs(VALUE self)
+BigDecimal_abs(VALUE self, SEL sel)
{
ENTER(5);
Real *c, *a;
@@ -1221,7 +1221,7 @@
* If n is specified, returns at least that many significant digits.
*/
static VALUE
-BigDecimal_sqrt(VALUE self, VALUE nFig)
+BigDecimal_sqrt(VALUE self, SEL sel, VALUE nFig)
{
ENTER(5);
Real *c, *a;
@@ -1240,7 +1240,7 @@
/* Return the integer part of the number.
*/
static VALUE
-BigDecimal_fix(VALUE self)
+BigDecimal_fix(VALUE self, SEL sel)
{
ENTER(5);
Real *c, *a;
@@ -1276,7 +1276,7 @@
* rounding is performed; see BigDecimal.mode.
*/
static VALUE
-BigDecimal_round(int argc, VALUE *argv, VALUE self)
+BigDecimal_round(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *c, *a;
@@ -1338,7 +1338,7 @@
* BigDecimal('13345.234').truncate(-2) -> 13300.0
*/
static VALUE
-BigDecimal_truncate(int argc, VALUE *argv, VALUE self)
+BigDecimal_truncate(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *c, *a;
@@ -1365,7 +1365,7 @@
/* Return the fractional part of the number.
*/
static VALUE
-BigDecimal_frac(VALUE self)
+BigDecimal_frac(VALUE self, SEL sel)
{
ENTER(5);
Real *c, *a;
@@ -1398,7 +1398,7 @@
* BigDecimal('13345.234').floor(-2) -> 13300.0
*/
static VALUE
-BigDecimal_floor(int argc, VALUE *argv, VALUE self)
+BigDecimal_floor(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *c, *a;
@@ -1442,7 +1442,7 @@
* BigDecimal('13345.234').ceil(-2) -> 13400.0
*/
static VALUE
-BigDecimal_ceil(int argc, VALUE *argv, VALUE self)
+BigDecimal_ceil(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *c, *a;
@@ -1497,13 +1497,13 @@
* BigDecimal.new('123.45678901234567890').to_s(' F') -> ' 123.4567890123456789'
*/
static VALUE
-BigDecimal_to_s(int argc, VALUE *argv, VALUE self)
+BigDecimal_to_s(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
int fmt=0; /* 0:E format */
int fPlus=0; /* =0:default,=1: set ' ' before digits ,set '+' before digits. */
Real *vp;
- char *psz;
+ const char *psz;
char ch;
U_LONG nc;
S_INT mc = 0;
@@ -1539,14 +1539,14 @@
}
if(mc>0) nc += (nc + mc - 1) / mc + 1;
- psz = ALLOCA_N(char,(unsigned int)nc);
+ char *buf = ALLOCA_N(char,(unsigned int)nc);
if(fmt) {
- VpToFString(vp, psz, mc, fPlus);
+ VpToFString(vp, buf, mc, fPlus);
} else {
- VpToString (vp, psz, mc, fPlus);
+ VpToString (vp, buf, mc, fPlus);
}
- return rb_str_new2(psz);
+ return rb_str_new2(buf);
}
/* Splits a BigDecimal number into four parts, returned as an array of values.
@@ -1574,7 +1574,7 @@
* a BigDecimal to a Float.)
*/
static VALUE
-BigDecimal_split(VALUE self)
+BigDecimal_split(VALUE self, SEL sel)
{
ENTER(5);
Real *vp;
@@ -1607,7 +1607,7 @@
* of digits with no leading zeros, then n is the exponent.
*/
static VALUE
-BigDecimal_exponent(VALUE self)
+BigDecimal_exponent(VALUE self, SEL sel)
{
S_LONG e = VpExponent10(GetVpValue(self,1));
return INT2NUM(e);
@@ -1624,7 +1624,7 @@
* maximum number of significant digits, respectively.
*/
static VALUE
-BigDecimal_inspect(VALUE self)
+BigDecimal_inspect(VALUE self, SEL sel)
{
ENTER(5);
Real *vp;
@@ -1653,7 +1653,7 @@
* Also available as the operator **
*/
static VALUE
-BigDecimal_power(VALUE self, VALUE p)
+BigDecimal_power(VALUE self, SEL sel, VALUE p)
{
ENTER(5);
Real *x, *y;
@@ -1677,7 +1677,7 @@
}
static VALUE
-BigDecimal_global_new(int argc, VALUE *argv, VALUE self)
+BigDecimal_global_new(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *pv;
@@ -1708,7 +1708,7 @@
* larger than the specified number.
*/
static VALUE
-BigDecimal_new(int argc, VALUE *argv, VALUE self)
+BigDecimal_new(VALUE self, SEL sel, int argc, VALUE *argv)
{
ENTER(5);
Real *pv;
@@ -1739,7 +1739,7 @@
* specified to instance methods such as ceil, floor, truncate, or round.
*/
static VALUE
-BigDecimal_limit(int argc, VALUE *argv, VALUE self)
+BigDecimal_limit(VALUE self, SEL sel, int argc, VALUE *argv)
{
VALUE nFig;
VALUE nCur = INT2NUM(VpGetPrecLimit());
@@ -1774,7 +1774,7 @@
* BigDecimal::SIGN_NEGATIVE_FINITE:: value is negative
*/
static VALUE
-BigDecimal_sign(VALUE self)
+BigDecimal_sign(VALUE self, SEL sel)
{ /* sign */
int s = GetVpValue(self,1)->sign;
return INT2FIX(s);
@@ -1790,16 +1790,16 @@
rb_cBigDecimal = rb_define_class("BigDecimal",rb_cNumeric);
/* Global function */
- rb_define_global_function("BigDecimal", BigDecimal_global_new, -1);
+ rb_objc_define_module_function(rb_mKernel, "BigDecimal", BigDecimal_global_new, -1);
/* Class methods */
- rb_define_singleton_method(rb_cBigDecimal, "new", BigDecimal_new, -1);
- rb_define_singleton_method(rb_cBigDecimal, "mode", BigDecimal_mode, -1);
- rb_define_singleton_method(rb_cBigDecimal, "limit", BigDecimal_limit, -1);
- rb_define_singleton_method(rb_cBigDecimal, "double_fig", BigDecimal_double_fig, 0);
- rb_define_singleton_method(rb_cBigDecimal, "induced_from",BigDecimal_induced_from, 1);
- rb_define_singleton_method(rb_cBigDecimal, "_load", BigDecimal_load, 1);
- rb_define_singleton_method(rb_cBigDecimal, "ver", BigDecimal_version, 0);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "new", BigDecimal_new, -1);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "mode", BigDecimal_mode, -1);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "limit", BigDecimal_limit, -1);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "double_fig", BigDecimal_double_fig, 0);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "induced_from",BigDecimal_induced_from, 1);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "_load", BigDecimal_load, 1);
+ rb_objc_define_method(*(VALUE *)rb_cBigDecimal, "ver", BigDecimal_version, 0);
/* Constants definition */
@@ -1908,56 +1908,56 @@
/* instance methods */
rb_define_method(rb_cBigDecimal, "precs", BigDecimal_prec, 0);
- rb_define_method(rb_cBigDecimal, "add", BigDecimal_add2, 2);
- rb_define_method(rb_cBigDecimal, "sub", BigDecimal_sub2, 2);
- rb_define_method(rb_cBigDecimal, "mult", BigDecimal_mult2, 2);
- rb_define_method(rb_cBigDecimal, "div",BigDecimal_div2, -1);
- rb_define_method(rb_cBigDecimal, "hash", BigDecimal_hash, 0);
- rb_define_method(rb_cBigDecimal, "to_s", BigDecimal_to_s, -1);
- rb_define_method(rb_cBigDecimal, "to_i", BigDecimal_to_i, 0);
- rb_define_method(rb_cBigDecimal, "to_int", BigDecimal_to_i, 0);
- rb_define_method(rb_cBigDecimal, "split", BigDecimal_split, 0);
- rb_define_method(rb_cBigDecimal, "+", BigDecimal_add, 1);
- rb_define_method(rb_cBigDecimal, "-", BigDecimal_sub, 1);
- rb_define_method(rb_cBigDecimal, "+@", BigDecimal_uplus, 0);
- rb_define_method(rb_cBigDecimal, "-@", BigDecimal_neg, 0);
- rb_define_method(rb_cBigDecimal, "*", BigDecimal_mult, 1);
- rb_define_method(rb_cBigDecimal, "/", BigDecimal_div, 1);
- rb_define_method(rb_cBigDecimal, "quo", BigDecimal_div, 1);
- rb_define_method(rb_cBigDecimal, "%", BigDecimal_mod, 1);
- rb_define_method(rb_cBigDecimal, "modulo", BigDecimal_mod, 1);
- rb_define_method(rb_cBigDecimal, "remainder", BigDecimal_remainder, 1);
- rb_define_method(rb_cBigDecimal, "divmod", BigDecimal_divmod, 1);
+ rb_objc_define_method(rb_cBigDecimal, "add", BigDecimal_add2, 2);
+ rb_objc_define_method(rb_cBigDecimal, "sub", BigDecimal_sub2, 2);
+ rb_objc_define_method(rb_cBigDecimal, "mult", BigDecimal_mult2, 2);
+ rb_objc_define_method(rb_cBigDecimal, "div", BigDecimal_div2, -1);
+ rb_objc_define_method(rb_cBigDecimal, "hash", BigDecimal_hash, 0);
+ rb_objc_define_method(rb_cBigDecimal, "to_s", BigDecimal_to_s, -1);
+ rb_objc_define_method(rb_cBigDecimal, "to_i", BigDecimal_to_i, 0);
+ rb_objc_define_method(rb_cBigDecimal, "to_int", BigDecimal_to_i, 0);
+ rb_objc_define_method(rb_cBigDecimal, "split", BigDecimal_split, 0);
+ rb_objc_define_method(rb_cBigDecimal, "+", BigDecimal_add, 1);
+ rb_objc_define_method(rb_cBigDecimal, "-", BigDecimal_sub, 1);
+ rb_objc_define_method(rb_cBigDecimal, "+@", BigDecimal_uplus, 0);
+ rb_objc_define_method(rb_cBigDecimal, "-@", BigDecimal_neg, 0);
+ rb_objc_define_method(rb_cBigDecimal, "*", BigDecimal_mult, 1);
+ rb_objc_define_method(rb_cBigDecimal, "/", BigDecimal_div, 1);
+ rb_objc_define_method(rb_cBigDecimal, "quo", BigDecimal_div, 1);
+ rb_objc_define_method(rb_cBigDecimal, "%", BigDecimal_mod, 1);
+ rb_objc_define_method(rb_cBigDecimal, "modulo", BigDecimal_mod, 1);
+ rb_objc_define_method(rb_cBigDecimal, "remainder", BigDecimal_remainder, 1);
+ rb_objc_define_method(rb_cBigDecimal, "divmod", BigDecimal_divmod, 1);
/* rb_define_method(rb_cBigDecimal, "dup", BigDecimal_dup, 0); */
- rb_define_method(rb_cBigDecimal, "to_f", BigDecimal_to_f, 0);
- rb_define_method(rb_cBigDecimal, "abs", BigDecimal_abs, 0);
- rb_define_method(rb_cBigDecimal, "sqrt", BigDecimal_sqrt, 1);
- rb_define_method(rb_cBigDecimal, "fix", BigDecimal_fix, 0);
- rb_define_method(rb_cBigDecimal, "round", BigDecimal_round, -1);
- rb_define_method(rb_cBigDecimal, "frac", BigDecimal_frac, 0);
- rb_define_method(rb_cBigDecimal, "floor", BigDecimal_floor, -1);
- rb_define_method(rb_cBigDecimal, "ceil", BigDecimal_ceil, -1);
- rb_define_method(rb_cBigDecimal, "power", BigDecimal_power, 1);
- rb_define_method(rb_cBigDecimal, "**", BigDecimal_power, 1);
- rb_define_method(rb_cBigDecimal, "<=>", BigDecimal_comp, 1);
- rb_define_method(rb_cBigDecimal, "==", BigDecimal_eq, 1);
- rb_define_method(rb_cBigDecimal, "===", BigDecimal_eq, 1);
- rb_define_method(rb_cBigDecimal, "eql?", BigDecimal_eq, 1);
- rb_define_method(rb_cBigDecimal, "<", BigDecimal_lt, 1);
- rb_define_method(rb_cBigDecimal, "<=", BigDecimal_le, 1);
- rb_define_method(rb_cBigDecimal, ">", BigDecimal_gt, 1);
- rb_define_method(rb_cBigDecimal, ">=", BigDecimal_ge, 1);
- rb_define_method(rb_cBigDecimal, "zero?", BigDecimal_zero, 0);
- rb_define_method(rb_cBigDecimal, "nonzero?", BigDecimal_nonzero, 0);
- rb_define_method(rb_cBigDecimal, "coerce", BigDecimal_coerce, 1);
- rb_define_method(rb_cBigDecimal, "inspect", BigDecimal_inspect, 0);
- rb_define_method(rb_cBigDecimal, "exponent", BigDecimal_exponent, 0);
- rb_define_method(rb_cBigDecimal, "sign", BigDecimal_sign, 0);
- rb_define_method(rb_cBigDecimal, "nan?", BigDecimal_IsNaN, 0);
- rb_define_method(rb_cBigDecimal, "infinite?", BigDecimal_IsInfinite, 0);
- rb_define_method(rb_cBigDecimal, "finite?", BigDecimal_IsFinite, 0);
- rb_define_method(rb_cBigDecimal, "truncate", BigDecimal_truncate, -1);
- rb_define_method(rb_cBigDecimal, "_dump", BigDecimal_dump, -1);
+ rb_objc_define_method(rb_cBigDecimal, "to_f", BigDecimal_to_f, 0);
+ rb_objc_define_method(rb_cBigDecimal, "abs", BigDecimal_abs, 0);
+ rb_objc_define_method(rb_cBigDecimal, "sqrt", BigDecimal_sqrt, 1);
+ rb_objc_define_method(rb_cBigDecimal, "fix", BigDecimal_fix, 0);
+ rb_objc_define_method(rb_cBigDecimal, "round", BigDecimal_round, -1);
+ rb_objc_define_method(rb_cBigDecimal, "frac", BigDecimal_frac, 0);
+ rb_objc_define_method(rb_cBigDecimal, "floor", BigDecimal_floor, -1);
+ rb_objc_define_method(rb_cBigDecimal, "ceil", BigDecimal_ceil, -1);
+ rb_objc_define_method(rb_cBigDecimal, "power", BigDecimal_power, 1);
+ rb_objc_define_method(rb_cBigDecimal, "**", BigDecimal_power, 1);
+ rb_objc_define_method(rb_cBigDecimal, "<=>", BigDecimal_comp, 1);
+ rb_objc_define_method(rb_cBigDecimal, "==", BigDecimal_eq, 1);
+ rb_objc_define_method(rb_cBigDecimal, "===", BigDecimal_eq, 1);
+ rb_objc_define_method(rb_cBigDecimal, "eql?", BigDecimal_eq, 1);
+ rb_objc_define_method(rb_cBigDecimal, "<", BigDecimal_lt, 1);
+ rb_objc_define_method(rb_cBigDecimal, "<=", BigDecimal_le, 1);
+ rb_objc_define_method(rb_cBigDecimal, ">", BigDecimal_gt, 1);
+ rb_objc_define_method(rb_cBigDecimal, ">=", BigDecimal_ge, 1);
+ rb_objc_define_method(rb_cBigDecimal, "zero?", BigDecimal_zero, 0);
+ rb_objc_define_method(rb_cBigDecimal, "nonzero?", BigDecimal_nonzero, 0);
+ rb_objc_define_method(rb_cBigDecimal, "coerce", BigDecimal_coerce, 1);
+ rb_objc_define_method(rb_cBigDecimal, "inspect", BigDecimal_inspect, 0);
+ rb_objc_define_method(rb_cBigDecimal, "exponent", BigDecimal_exponent, 0);
+ rb_objc_define_method(rb_cBigDecimal, "sign", BigDecimal_sign, 0);
+ rb_objc_define_method(rb_cBigDecimal, "nan?", BigDecimal_IsNaN, 0);
+ rb_objc_define_method(rb_cBigDecimal, "infinite?", BigDecimal_IsInfinite, 0);
+ rb_objc_define_method(rb_cBigDecimal, "finite?", BigDecimal_IsFinite, 0);
+ rb_objc_define_method(rb_cBigDecimal, "truncate", BigDecimal_truncate, -1);
+ rb_objc_define_method(rb_cBigDecimal, "_dump", BigDecimal_dump, -1);
}
/*
@@ -2192,12 +2192,14 @@
return nzero;
}
+#if 0
VP_EXPORT int
VpIsNegDoubleZero(double v)
{
double z = VpGetDoubleNegZero();
return MemCmp(&v,&z,sizeof(v))==0;
}
+#endif
VP_EXPORT int
VpException(unsigned short f, const char *str,int always)
@@ -4169,6 +4171,7 @@
/*
* m <- ival
*/
+#if 0
VP_EXPORT void
VpItoV(Real *m, S_INT ival)
{
@@ -4226,6 +4229,7 @@
#endif /* _DEBUG */
return;
}
+#endif
/*
* y = SQRT(x), y*y - x =>0
Modified: MacRuby/trunk/ext/bigdecimal/bigdecimal.h
===================================================================
--- MacRuby/trunk/ext/bigdecimal/bigdecimal.h 2009-10-16 21:36:31 UTC (rev 2835)
+++ MacRuby/trunk/ext/bigdecimal/bigdecimal.h 2009-10-17 08:10:09 UTC (rev 2836)
@@ -103,7 +103,7 @@
*/
VP_EXPORT Real *
-VpNewRbClass(U_LONG mx,char *str,VALUE klass);
+VpNewRbClass(U_LONG mx,const char *str,VALUE klass);
VP_EXPORT Real *VpCreateRbObject(U_LONG mx,const char *str);
@@ -127,7 +127,7 @@
VP_EXPORT unsigned long VpSetRoundMode(unsigned long n);
VP_EXPORT int VpException(unsigned short f,const char *str,int always);
-VP_EXPORT int VpIsNegDoubleZero(double v);
+/*VP_EXPORT int VpIsNegDoubleZero(double v);*/
VP_EXPORT U_LONG VpNumOfChars(Real *vp,const char *pszFmt);
VP_EXPORT U_LONG VpInit(U_LONG BaseVal);
VP_EXPORT void *VpMemAlloc(U_LONG mb);
@@ -146,7 +146,7 @@
VP_EXPORT int VpCtoV(Real *a,const char *int_chr,U_LONG ni,const char *frac,U_LONG nf,const char *exp_chr,U_LONG ne);
VP_EXPORT int VpVtoD(double *d,S_LONG *e,Real *m);
VP_EXPORT void VpDtoV(Real *m,double d);
-VP_EXPORT void VpItoV(Real *m,S_INT ival);
+/*VP_EXPORT void VpItoV(Real *m,S_INT ival);*/
VP_EXPORT int VpSqrt(Real *y,Real *x);
VP_EXPORT int VpActiveRound(Real *y,Real *x,int f,int il);
VP_EXPORT int VpMidRound(Real *y, int f, int nf);
Modified: MacRuby/trunk/rakelib/builder.rake
===================================================================
--- MacRuby/trunk/rakelib/builder.rake 2009-10-16 21:36:31 UTC (rev 2835)
+++ MacRuby/trunk/rakelib/builder.rake 2009-10-17 08:10:09 UTC (rev 2836)
@@ -326,7 +326,7 @@
EXTMK_ARGS = "#{SCRIPT_ARGS} --extension --extstatic"
INSTRUBY_ARGS = "#{SCRIPT_ARGS} --data-mode=0644 --prog-mode=0755 --installed-list #{INSTALLED_LIST} --mantype=\"doc\" --sym-dest-dir=\"#{SYM_INSTDIR}\""
-EXTENSIONS = ['ripper', 'digest', 'etc', 'readline', 'libyaml', 'fcntl', 'socket', 'zlib']
+EXTENSIONS = ['ripper', 'digest', 'etc', 'readline', 'libyaml', 'fcntl', 'socket', 'zlib', 'bigdecimal'].sort
def perform_extensions_target(target)
EXTENSIONS.map { |x| File.join('ext', x) }.each do |ext_dir|
Dir.glob(File.join(ext_dir, '**/extconf.rb')) do |p|
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091017/4026a2ab/attachment-0001.html>
More information about the macruby-changes
mailing list