Array.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package me.hammerle.snuviscript.instructions;
  2. import me.hammerle.snuviscript.inputprovider.ArrayReturnWrapper;
  3. import me.hammerle.snuviscript.inputprovider.InputProvider;
  4. import me.hammerle.snuviscript.code.Script;
  5. import me.hammerle.snuviscript.inputprovider.Variable;
  6. public class Array extends Instruction
  7. {
  8. private final int arguments;
  9. private final ArrayReturnWrapper wrapper = new ArrayReturnWrapper();
  10. private final Variable v;
  11. public Array(int line, int arguments, Variable v)
  12. {
  13. super(line);
  14. this.arguments = arguments;
  15. this.v = v;
  16. }
  17. @Override
  18. public InputProvider execute(Script sc, InputProvider[] in) throws Exception
  19. {
  20. Object o = v.get(sc);
  21. for(int i = 0; i < in.length - 1; i++)
  22. {
  23. o = java.lang.reflect.Array.get(o, in[i].getInt(sc));
  24. }
  25. wrapper.setValue(o, in[in.length - 1].getInt(sc));
  26. return wrapper;
  27. }
  28. @Override
  29. public int getArguments()
  30. {
  31. return arguments;
  32. }
  33. @Override
  34. public String toString()
  35. {
  36. StringBuilder sb = new StringBuilder();
  37. sb.append("push ");
  38. sb.append(v);
  39. if(arguments > 0)
  40. {
  41. sb.append("[");
  42. for(int i = 1; i < arguments; i++)
  43. {
  44. sb.append(",");
  45. }
  46. sb.append("]");
  47. }
  48. return sb.toString();
  49. }
  50. }