sc_core::sc_throw_it< EXCEPT > Class Template Reference

Arbitrary exception class. More...

#include <sysc/kernel/sc_process.h>

Inheritance diagram for sc_core::sc_throw_it< EXCEPT >:
Inheritance graph
[legend]
Collaboration diagram for sc_core::sc_throw_it< EXCEPT >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 sc_throw_it (const EXCEPT &value)
virtual ~sc_throw_it ()
virtual this_typeclone () const
virtual void throw_it ()

Protected Attributes

EXCEPT m_value

Detailed Description

template<typename EXCEPT>
class sc_core::sc_throw_it< EXCEPT >

Arbitrary exception class.

This class serves as a way of throwing an execption for an aribtrary type without knowing what that type is. A true virtual method in the base class is used to actually throw the execption. A pointer to the base class is used internally removing the necessity of knowing what the type of EXCEPT is for code internal to the library.

Note the clone() true virtual method. This is used to allow instances of the sc_throw_it<EXCEPT> class to be easily garbage collected. Since an exception may be propogated to more than one process knowing when to garbage collect is non-trivial. So when a call is made to sc_process_handle::throw_it() an instance of sc_throw_it<EXCEPT> is allocated on the stack. For each process throwing the exception a copy is made via clone(). That allows those objects to be deleted by the individual processes when they are no longer needed (in this implementation of SystemC that deletion will occur each time a new exception is thrown ( see sc_thread_process::suspend_me() ).

Definition at line 304 of file sc_process.h.


Constructor & Destructor Documentation

template<typename EXCEPT>
sc_core::sc_throw_it< EXCEPT >::sc_throw_it ( const EXCEPT &  value  )  [inline]

Definition at line 308 of file sc_process.h.

template<typename EXCEPT>
virtual sc_core::sc_throw_it< EXCEPT >::~sc_throw_it (  )  [inline, virtual]

Definition at line 309 of file sc_process.h.


Member Function Documentation

template<typename EXCEPT>
virtual this_type* sc_core::sc_throw_it< EXCEPT >::clone (  )  const [inline, virtual]

Implements sc_core::sc_throw_it_helper.

Definition at line 310 of file sc_process.h.

template<typename EXCEPT>
virtual void sc_core::sc_throw_it< EXCEPT >::throw_it (  )  [inline, virtual]

Implements sc_core::sc_throw_it_helper.

Definition at line 311 of file sc_process.h.


Member Data Documentation

template<typename EXCEPT>
EXCEPT sc_core::sc_throw_it< EXCEPT >::m_value [protected]

Definition at line 313 of file sc_process.h.


The documentation for this class was generated from the following file:

Generated on 31 Jul 2017 for SystemC by  doxygen 1.6.1