Function.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package me.hammerle.snuviscript.instructions;
  2. import me.hammerle.snuviscript.inputprovider.ReturnWrapper;
  3. import me.hammerle.snuviscript.code.NamedFunction;
  4. import me.hammerle.snuviscript.inputprovider.InputProvider;
  5. import me.hammerle.snuviscript.code.Script;
  6. public class Function extends Instruction {
  7. private final NamedFunction function;
  8. private final int arguments;
  9. private final ReturnWrapper wrapper = new ReturnWrapper();
  10. public Function(int line, int arguments, NamedFunction function) {
  11. super(line);
  12. this.function = function;
  13. this.arguments = arguments;
  14. }
  15. @Override
  16. public InputProvider execute(Script sc, InputProvider[] in) throws Exception {
  17. Object o = function.execute(sc, in);
  18. if(o == Void.TYPE || shouldNotReturnValue()) {
  19. return null;
  20. }
  21. wrapper.setValue(o);
  22. return wrapper;
  23. }
  24. @Override
  25. public int getArguments() {
  26. return arguments;
  27. }
  28. @Override
  29. public String toString() {
  30. return String.format("use %s(%d)", function.getName(), arguments);
  31. }
  32. @Override
  33. public String getName() {
  34. return function.getName();
  35. }
  36. }