Array.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. private final int arguments;
  8. private final ArrayReturnWrapper wrapper = new ArrayReturnWrapper();
  9. private final Variable v;
  10. public Array(int line, int arguments, Variable v) {
  11. super(line);
  12. this.arguments = arguments;
  13. this.v = v;
  14. }
  15. @Override
  16. public InputProvider execute(Script sc, InputProvider[] in) throws Exception {
  17. Object o = v.get(sc);
  18. for(int i = 0; i < in.length - 1; i++) {
  19. o = java.lang.reflect.Array.get(o, in[i].getInt(sc));
  20. }
  21. wrapper.setValue(o, in[in.length - 1].getInt(sc));
  22. return wrapper;
  23. }
  24. @Override
  25. public int getArguments() {
  26. return arguments;
  27. }
  28. @Override
  29. public String toString() {
  30. StringBuilder sb = new StringBuilder();
  31. sb.append("push ");
  32. sb.append(v);
  33. if(arguments > 0) {
  34. sb.append("[");
  35. for(int i = 1; i < arguments; i++) {
  36. sb.append(",");
  37. }
  38. sb.append("]");
  39. }
  40. return sb.toString();
  41. }
  42. @Override
  43. public String getName() {
  44. return "array";
  45. }
  46. }