NAME

OTC_Worker - Abstract interface for objects which act on items.

SYNOPSIS


#include <OTC/collctn/worker.hh>

template<class T>
class OTC_Worker
{
  public:
    inline OTC_Worker();
    virtual void start() = 0;
    virtual void finish() = 0;
    virtual OTC_Progress action(T& theItem) = 0;
};

CLASS TYPE

Abstract

DESCRIPTION

The OTC_Worker class provides an alternative to using the OTC_Modifier class to act on items in a collection. Support for the OTC_Worker class can also be provided on collection type objects which do not support an iterator. To use this concept, a derived version of this class must be created. The derived class must redefine the action() function to perform whatever is to be done for each item in the collection. An instance of the derived class is then applied to the collection. The collection will do the work of calling the action() function on each item in the collection. If necessary, the action() function, through is return value, can prematurely stop or restart the process. Through the OTC_Worker class, it is possible to modify the item to which the action() function is being applied.

STARTING/FINISHING

virtual void start() = 0;
virtual void finish() = 0;

ACTION

virtual OTC_Progress action(T& theItem) = 0;

NOTES

The destructor of this class is NOT defined as virtual. The destructor is not defined as virtual so that a separate template expansion is not required for this class. The implication of the destructor not being virtual is that it is not possible to delete an instance of a derived class, which has been created on the free store, using a pointer to the base class. It is expected that instances of derived classes will always being created on the stack and thus this restriction should not affect the use of the class. The start() and finish() functions are defined as being pure virtual functions and must be defined in a derived class. This requirement is again to avoid a separate template expansion of this class being required.

SEE ALSO

OTC_Visitor

LIBRARY

OTC

AUTHOR(S)

Graham Dumpleton

COPYRIGHT

Copyright 1993 TELSTRA CORPORATION LIMITED
Copyright 1994 DUMPLETON SOFTWARE CONSULTING PTY LIMITED