/*****************************************************************************
PURPOSE: Provide test of simulation early termination. Ensures threads
 come down appropriately for unit-test-like cases
PROGRAMMERS:
  (((Dan Jordan) (NASA) (Jan 2023) (Deal with it)))
*****************************************************************************/
#include "sim_objects/default_trick_sys.sm"
##include "trick/exec_proto.h"

class EarlyTerminationSimObject : public Trick::SimObject
{
 public:
  double x;

  EarlyTerminationSimObject()
    :
    x(0)
  {
    ("initialization") early_term();
  };

  void early_term() {
    std::string message = "Terminating with exit code 0";
    exec_terminate_with_return(0, "S_define", 24, message.c_str());
  }
 private:
  EarlyTerminationSimObject( const EarlyTerminationSimObject&);
  EarlyTerminationSimObject & operator= ( const EarlyTerminationSimObject&);

};
EarlyTerminationSimObject test;