Engine.Constraints.cs 1.1 KB

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