Function.java 1.0 KB

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