Jsm.Control.ProcessedJumps.cs 858 B

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.Collections.Generic;
  3. namespace FF8
  4. {
  5. public static partial class Jsm
  6. {
  7. public static partial class Control
  8. {
  9. private sealed class ProcessedJumps
  10. {
  11. private readonly HashSet<IJumpToInstruction> _processed = new HashSet<IJumpToInstruction>();
  12. public ProcessedJumps()
  13. {
  14. }
  15. public Boolean TryProcess(IJumpToInstruction jmp)
  16. {
  17. return _processed.Add(jmp);
  18. }
  19. public void Process(IJumpToInstruction jmp)
  20. {
  21. if (!_processed.Add(jmp))
  22. throw new InvalidProgramException($"The jump instruction ({jmp}) has already been processed.");
  23. }
  24. }
  25. }
  26. }
  27. }