[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