StackTrace.java 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package me.hammerle.snuviscript.exceptions;
  2. import java.util.Stack;
  3. import me.hammerle.snuviscript.instructions.Instruction;
  4. public class StackTrace {
  5. private final String stackTrace;
  6. public StackTrace(int currentLine, Stack<Integer> stack, Instruction[] code) {
  7. if(stack == null || code == null) {
  8. stackTrace = String.valueOf(currentLine);
  9. return;
  10. }
  11. StringBuilder sb = new StringBuilder();
  12. stack.forEach(stackLine -> {
  13. int line = code[stackLine].getLine();
  14. int file = (line >> 24) & 0xFF;
  15. line &= 0xFFFFFF;
  16. sb.append(line).append("(").append(file).append(") > ");
  17. });
  18. int file = (currentLine >> 24) & 0xFF;
  19. currentLine &= 0xFFFFFF;
  20. sb.append(currentLine).append("(").append(file).append(")");
  21. stackTrace = sb.toString();
  22. }
  23. public StackTrace(int currentLine) {
  24. this(currentLine, null, null);
  25. }
  26. @Override
  27. public String toString() {
  28. return stackTrace;
  29. }
  30. }