Engine.Constraints.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. namespace Jint;
  2. public partial class Engine
  3. {
  4. public ConstraintOperations Constraints { get; }
  5. public class ConstraintOperations
  6. {
  7. private readonly Engine _engine;
  8. internal ConstraintOperations(Engine engine)
  9. {
  10. _engine = engine;
  11. }
  12. /// <summary>
  13. /// Checks engine's active constraints. Propagates exceptions from constraints.
  14. /// </summary>
  15. public void Check()
  16. {
  17. foreach (var constraint in _engine._constraints)
  18. {
  19. constraint.Check();
  20. }
  21. }
  22. /// <summary>
  23. /// Return the first constraint that matches the predicate.
  24. /// </summary>
  25. public T? Find<T>() where T : Constraint
  26. {
  27. foreach (var constraint in _engine._constraints)
  28. {
  29. if (constraint.GetType() == typeof(T))
  30. {
  31. return (T) constraint;
  32. }
  33. }
  34. return null;
  35. }
  36. /// <summary>
  37. /// Resets all execution constraints back to their initial state.
  38. /// </summary>
  39. public void Reset()
  40. {
  41. foreach (var constraint in _engine._constraints)
  42. {
  43. constraint.Reset();
  44. }
  45. }
  46. }
  47. }