30a31
> #include <string>
59a61,66
> public:
> std::string resultStr;
> int resultInt;
>
> ScMainFiber() : resultInt(1) {}
>
64,66c71,82
< ::sc_main(_argc, _argv);
< // Make sure no systemc events/notifications are scheduled
< // after sc_main returns.
---
> try {
> resultInt = ::sc_main(_argc, _argv);
> if (resultInt)
> resultStr = "sc_main returned non-zero";
> else
> resultStr = "sc_main finished";
> // Make sure no systemc events/notifications are scheduled
> // after sc_main returns.
> } catch (const sc_report &r) {
> // There was an exception nobody caught.
> resultStr = r.what();
> }
117a134,145
> int
> sc_main_result_code()
> {
> return scMainFiber.resultInt;
> }
>
> std::string
> sc_main_result_str()
> {
> return scMainFiber.resultStr;
> }
>
126a155,156
> systemc.def("sc_main_result_code", &sc_main_result_code);
> systemc.def("sc_main_result_str", &sc_main_result_str);