Function.java 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. {
  8. private final NamedFunction function;
  9. private final int arguments;
  10. private final ReturnWrapper wrapper = new ReturnWrapper();
  11. public Function(int line, int arguments, NamedFunction function)
  12. {
  13. super(line);
  14. this.function = function;
  15. this.arguments = arguments;
  16. }
  17. @Override
  18. public InputProvider execute(Script sc, InputProvider[] in) throws Exception
  19. {
  20. Object o = function.execute(sc, in);
  21. if(o == Void.TYPE || shouldNotReturnValue())
  22. {
  23. return null;
  24. }
  25. wrapper.setValue(o);
  26. return wrapper;
  27. }
  28. @Override
  29. public int getArguments()
  30. {
  31. return arguments;
  32. }
  33. @Override
  34. public String toString()
  35. {
  36. return String.format("use %s(%d)", function.getName(), arguments);
  37. }
  38. }