Class: Nydp::Builtin::Rand

Inherits:
Object show all
Includes:
Base, Singleton
Defined in:
lib/nydp/builtin/rand.rb

Instance Method Summary collapse

Methods included from Base

#builtin_invoke_4, #handle_error, #inspect, #invoke, #invoke_1, #invoke_2, #invoke_3, #invoke_4, #name, #nydp_type, #to_s

Methods included from Helper

#cons, #list, #literal?, #pair?, #sig, #sym, #sym?

Methods included from Converter

#n2r, #r2n

Instance Method Details

#builtin_invoke(vm, args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/nydp/builtin/rand.rb', line 7

def builtin_invoke   vm, args       ;
  if Nydp::NIL.is? args
    builtin_invoke_1 vm
  else
    case args.size
    when 1 ; builtin_invoke_2 vm, args.car
    when 2 ; builtin_invoke_3 vm, args.car, args.cadr
    else   ; raise "rand: 0, 1 or 2 args expected, got #{args.length}"
    end
  end
end

#builtin_invoke_1(vm) ⇒ Object



4
# File 'lib/nydp/builtin/rand.rb', line 4

def builtin_invoke_1 vm             ; vm.push_arg rand                ; end

#builtin_invoke_2(vm, a) ⇒ Object



5
# File 'lib/nydp/builtin/rand.rb', line 5

def builtin_invoke_2 vm, a          ; vm.push_arg rand(a)             ; end

#builtin_invoke_3(vm, a0, a1) ⇒ Object



6
# File 'lib/nydp/builtin/rand.rb', line 6

def builtin_invoke_3 vm, a0, a1     ; vm.push_arg(a0 + rand(a1 - a0)) ; end