40a41,74
> struct ProcessFuncWrapper
> {
> virtual void call() = 0;
> virtual ~ProcessFuncWrapper() {}
> };
>
> template <typename T>
> struct ProcessMemberFuncWrapper : public ProcessFuncWrapper
> {
> typedef void (T::*TFunc)();
> T *t;
> TFunc func;
>
> ProcessMemberFuncWrapper(T *t, TFunc func) : t(t), func(func) {}
>
> void call() override { (t->*func)(); }
> };
>
> struct ExceptionWrapperBase
> {
> virtual void throw_it() = 0;
> };
>
> template <typename T>
> struct ExceptionWrapper : public ExceptionWrapperBase
> {
> const T &t;
> ExceptionWrapper(const T &t) : t(t) {}
>
> void throw_it() { throw t; }
> };
>
> void throw_it_wrapper(Process *p, ExceptionWrapperBase &exc, bool inc_kids);
>
136c170
< bool swap(sc_process_handle &);
---
> void swap(sc_process_handle &);
168d201
< void warn_unimpl(const char *func);
170,172c203,206
< void throw_it(const T &user_defined_exception,
< sc_descendent_inclusion_info include_descendants=
< SC_NO_DESCENDANTS)
---
> void
> throw_it(const T &user_defined_exception,
> sc_descendent_inclusion_info include_descendants=
> SC_NO_DESCENDANTS)
174c208,210
< warn_unimpl(__PRETTY_FUNCTION__);
---
> ::sc_gem5::ExceptionWrapper<T> exc(user_defined_exception);
> ::sc_gem5::throw_it_wrapper(_gem5_process, exc,
> include_descendants == SC_INCLUDE_DESCENDANTS);