EOS 2  1.1.0
Einfache Objektbasierte Sprache
Function.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.vm.commands;
2 
3 import java.lang.reflect.Method;
4 
5 import de.lathanda.eos.vm.Command;
6 import de.lathanda.eos.vm.MType;
7 import de.lathanda.eos.vm.Machine;
8 
16 public class Function extends Command {
17  private final MType[] parameters;
18  private final Method method;
19 
20  public Function(MType[] parameters, Method method) {
21  this.parameters = parameters;
22  this.method = method;
23  }
24 
25  @Override
26  public boolean execute(Machine m) throws Exception {
27  Object[] args = new Object[parameters.length];
28  for (int i = 0; i < args.length; i++) {
29  args[i] = m.pop();
30  args[i] = parameters[i].checkAndCast(args[i]);
31  }
32  m.push(method.invoke(null, args));
33  return true;
34  }
35 
36  @Override
37  public String toString() {
38  return "Function{" + method.getName() + "(" + parameters.length + ") }";
39  }
40 
41 }
Function(MType[] parameters, Method method)
Definition: Function.java:20
Object checkAndCast(Object obj)
Impressum