Inheritance diagram for AxPipe::CNoThread:
Public Member Functions
|Wait for the Work() thread to finish if it's processing. |
|virtual void *||RTClassId ()|
|Run-Time version of our type identification. |
Static Public Member Functions
|void *||ClassId ()|
|Run-time type identifcation. |
Protected Member Functions
|virtual void||WorkStart ()|
|Initalize one Work-cycle, processing one CSeg. |
|virtual void||WorkSignal ()|
|Start Work() on one CSeg. |
|virtual void||WorkEnd ()|
|End one Work-cycle. |
|virtual void||WorkWait ()|
|Wait for a new CSeg to arrive to work on. |
|virtual void||WorkExitWait ()|
|Wait for the Work()-thread, if any, to terminate. |
|virtual void||Work ()=0|
|Actually process one CSeg. |
|Set to true when the derived object is to exit. |
|Set to true if the derived object's sink is to self-destruct with the pipe-line. |
Definition at line 52 of file CThread.h.
Run-time type identifcation.
We're not using the built in RTTI because we sometimes want to be able to forego most of the run time library, as well as exceptions and RTTI.
The point here is to create a guaranteed unique value that is the same for all instances of a class, while not requiring any inits outside of the class declaration, and also to 'fool' optimizing compilers, so that they cannot perform global optimization and figure out that it can fold identical functions into one. It happened in a previous version... That's why we include the static int, it can't be optimized away, at least not easily. You need to override ClassId() and RTClassId() in all derived clases you want to distinguish, this is most easily done by simply copying and pasting exactly these definitions. There is also the Run-Time version, accessible through a pointer to a polymorphic base-class for example, RTClassId().
Run-Time version of our type identification.
Wait for the Work() thread to finish if it's processing.
Defined here, but only has function in threaded version. Start and End one Work cycle, thereby ensuring that the previous one has finished.