[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/libs/kross/ruby
From: Sebastian Sauer <mail () dipe ! org>
Date: 2007-02-19 21:00:27
Message-ID: 1171918827.310788.24683.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 635331 by sebsauer:
more flexible handling of numerics
M +22 -8 rubyvariant.h
--- trunk/koffice/libs/kross/ruby/rubyvariant.h #635330:635331
@@ -122,11 +122,18 @@
return INT2FIX(i);
}
inline static int toVariant(VALUE value) {
- if(TYPE(value) != T_FIXNUM) {
- rb_raise(rb_eTypeError, "Integer must be a fixed number");
- return 0;
+ switch( TYPE(value) ) {
+ case T_FIXNUM:
+ return FIX2INT(value);
+ case T_BIGNUM:
+ return rb_big2int(value);
+ case T_FLOAT:
+ return (int)(RFLOAT(value)->value);
+ default:
+ break;
}
- return FIX2INT(value);
+ rb_raise(rb_eTypeError, "Integer must be a fixed number");
+ return 0;
}
};
@@ -138,11 +145,18 @@
return UINT2NUM(i);
}
inline static uint toVariant(VALUE value) {
- if(TYPE(value) != T_FIXNUM) {
- rb_raise(rb_eTypeError, "Unsigned integer must be a fixed number");
- return 0;
+ switch( TYPE(value) ) {
+ case T_FIXNUM:
+ return FIX2UINT(value);
+ case T_BIGNUM:
+ return rb_big2uint(value);
+ case T_FLOAT:
+ return (uint)(RFLOAT(value)->value);
+ default:
+ break;
}
- return FIX2UINT(value);
+ rb_raise(rb_eTypeError, "Unsigned integer must be a fixed number");
+ return 0;
}
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic