class Num
Public Class Methods
new(val=nil)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 305 def initialize(val=nil) if val != nil @internal = BigDecimal val end @fields = { "__as_str" => (NativeFnInternal.new (Proc.new do as_string end)), "__as_code_str" => (NativeFnInternal.new (Proc.new do as_string end)), "__as_bool" => (NativeFnInternal.new (Proc.new do as_bool end)), "__add" => (NativeFnInternal.new (Proc.new do |other| add other[0] end)), "__sub" => (NativeFnInternal.new (Proc.new do |other| sub other[0] end)), "__mul" => (NativeFnInternal.new (Proc.new do |other| mul other[0] end)), "__div" => (NativeFnInternal.new (Proc.new do |other| div other[0] end)), "__mod" => (NativeFnInternal.new (Proc.new do |other| mod other[0] end)), "__pow" => (NativeFnInternal.new (Proc.new do |other| pow other[0] end)), "__lt" => (NativeFnInternal.new (Proc.new do |other| lt other[0] end)), "__gt" => (NativeFnInternal.new (Proc.new do |other| gt other[0] end)), "__le" => (NativeFnInternal.new (Proc.new do |other| le other[0] end)), "__ge" => (NativeFnInternal.new (Proc.new do |other| ge other[0] end)), "__eq" => (NativeFnInternal.new (lambda do |other| Bool.new @internal == other[0].internal end)), "__neq" => (NativeFnInternal.new (lambda do |other| Bool.new @internal != other[0].internal end)) } end
Public Instance Methods
add(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 366 def add(other) case other when Num when Int else error "Cannot use Num + on #{other.class}" return nil end Num.new @internal + other.internal end
as_bool()
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 362 def as_bool Bool.new true end
as_string()
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 358 def as_string Str.new (@internal.to_s "F") end
div(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 399 def div(other) case other when Num when Int else error "Cannot use Num / on #{other.class}" return nil end Num.new @internal / other.internal end
ge(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 465 def ge(other) case other when Num when Int else error "Cannot use Num >= on #{other.class}" return nil end Bool.new @internal >= other.internal end
gt(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 443 def gt(other) case other when Num when Int else error "Cannot use Num > on #{other.class}" return nil end Bool.new @internal > other.internal end
le(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 454 def le(other) case other when Num when Int else error "Cannot use Num <= on #{other.class}" return nil end Bool.new @internal <= other.internal end
lt(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 432 def lt(other) case other when Num when Int else error "Cannot use Num < on #{other.class}" return nil end Bool.new @internal < other.internal end
mod(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 410 def mod(other) case other when Num when Int else error "Cannot use Num % on #{other.class}" return nil end Num.new @internal % other.internal end
mul(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 388 def mul(other) case other when Num when Int else error "Cannot use Num * on #{other.class}" return nil end Num.new @internal * other.internal end
pow(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 421 def pow(other) case other when Num when Int else error "Cannot use Num ^ on #{other.class}" return nil end Num.new @internal ** other.internal end
sub(other)
click to toggle source
# File lib/sdx/vm/datatypes.rb, line 377 def sub(other) case other when Num when Int else error "Cannot use Num - on #{other.class}" return nil end Num.new @internal - other.internal end