class_3.test   [plain text]


FrT;@1|>>0|$15|HeaderDoc::Test%22|$4|CODE$7|COMMENT$7|CPPCODE$15|EXPECTED_RESULT$23|EXPECTED_RESULT_ALLDECS$7|FAILMSG$8|FILENAME$4|LANG$4|NAME$7|SUBLANG$4|TYPE$5215|class IOEventSource : public OSObject
{
     OSDeclareAbstractStructors(IOEventSource)
     friend class IOWorkLoop;

public:
/*!
     @typedef Action
     @discussion Placeholder type for C++ function overloading discrimination.
As the all event sources require an action and it has to be stored somewhere
and be of some type, this is that type.
     @param owner
         Target of the function, can be used as a refcon.  The owner is set
during initialisation.   Note if a C++ function was specified this parameter
is implicitly the first paramter in the target member function's
parameter list.
*/   
     typedef void (*Action)(OSObject *owner, ...);

protected:
/*! @var eventChainNext 
         The next event source in the event chain. nil at end of chain. */
     IOEventSource *eventChainNext;

/*! @var owner The owner object called when an event has been delivered. */
     OSObject *owner;

/*! @var action
         The action method called when an event has been delivered */
     Action action;

/*! @var enabled 
         Is this event source enabled to deliver requests to the work-loop. */
     bool enabled;

/*! @var workLoop What is the work-loop for this event source. */
     IOWorkLoop *workLoop;

/*!     
        @function getID
        HeaderDoc test of multiline inline function definition.
*/
int getID() {
    return id;
}

/*! @function init
     @abstract Primary initialiser for the IOEventSource class.
     @throws halibut
     @throws mackeral
     @throws peanuts
     @param owner
         Owner of this instance of an event source.  Used as the first parameter
of the action callout.  Owner will generally be an OSObject it doesn't have to
be as no member functions will be called directly in it.  It can just be a
refcon for a client routine.
     @param action
         Pointer to C call out function.  Action is a pointer to a C function
that gets called when this event source has outstanding work.  It will usually
be called by the checkForWork member function.  The first parameter of the
action call out will always be the owner, this allows C++ member functions to
be used as actions.  Defaults to 0.
     @result true if the inherited classes and this instance initialise
successfully.
*/   
     virtual bool init(OSObject *owner, IOEventSource::Action action = 0);

/*! @function checkForWork
     @abstract Pure Virtual member function used by IOWorkLoop for work
scheduling.
     @discussion This function will be called to request a subclass to check
it's internal state for any work to do and then to call out the owner/action.
     @param moreP
         Pointer to the more-work output variable.  Set to true if this function
needs to be called again before all its outstanding events have been processed.
     @param wakeupTimeP
         Pointer to no-later wake up time output variable.  Return variable to
indicate when this object wishes to be called again; used for timeouts.
Note the checkForWork method may be called before the timeout fires.
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
requested.
*/   
     virtual void checkForWork(bool *moreP, mach_timespec_t *wakeupTimeP) = 0;

/*! @function setWorkLoop
     @abstract Set'ter for workLoop variable.
     @param workLoop
         Target work-loop of this event source instance.  A subclass of
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
functions.
*/   
     virtual void setWorkLoop(IOWorkLoop *workLoop);

/*! @function setNext
     @abstract Set'ter for eventChainNext variable.
     @param next 
         Pointer to another IOEventSource instance.
*/   
     virtual void setNext(IOEventSource *next);

/*! @function getNext
     @abstract Get'ter for eventChainNext variable.
     @result value of eventChainNext.
*/   
     virtual IOEventSource *getNext() const;

public:
/*! @function setAction
     @abstract Set'ter for action variable.
     @param action
         Pointer to a C function of type IOEventSource::Action.
*/   
     virtual void setAction(IOEventSource::Action action);

/*! @function getAction
     @abstract Get'ter for action variable.
     @result value of action.
*/   
     virtual IOEventSource::Action getAction() const;

/*! @function enable
     @abstract Enable event source.
     @discussion A subclass implementation is expected to respect the enabled
state when checkForWork is called.  Calling this function will cause the
work-loop to be signalled so that a checkForWork is performed.
*/   
     virtual void enable();

/*! @function disable
     @abstract Disable event source.
     @discussion A subclass implementation is expected to respect the enabled
state when checkForWork is called.
*/   
     virtual void disable();

/*! @function isEnabled
     @abstract Get'ter for enable variable.
     @result true if enabled.
*/   
     virtual bool isEnabled() const;

/*! @function getWorkLoop
     @abstract Get'ter for workLoop variable.
     @result value of workLoop.
*/   
     virtual IOWorkLoop *getWorkLoop() const;

/*! @function onThread
     @abstract Convenience function for workLoop->onThread.
     @result true if called on the work-loop thread.
*/   
     virtual bool onThread() const;
};
$2331|/*!
     @class IOEventSource
     @abstract Abstract class for all work-loop event sources.
     @namespace I/O Kit
     @updated 2007-03-07
     @throws sandwiches
     @discussion The IOEventSource declares the abstract super class that all
event sources must inherit from if an IOWorkLoop is to receive events
from them.

An event source can represent any event that should cause the work-loop of a
device to wake up and perform work.  Two examples of event sources are the
IOInterruptEventSource which delivers interrupt notifications and IOCommandGate
which delivers command requests.

A kernel module can always use the work-loop model for serialising access to
anything at all.  The IOEventSource is used for communicating events to the
work-loop, and the chain of event sources should be used to walk the possible
event sources and demultipex them.  Note a particular instance of an event
source may only be a member of 1 linked list chain.  If you need to move it
between chains than make sure it is removed from the original chain before
attempting to move it.

The IOEventSource makes no attempt to maintain the consitency of it's internal
data across multi-threading.  It is assumed that the user of these basic tools
will protect the data that these objects represent in some sort of device wide
instance lock.  For example the IOWorkLoop maintains the event chain by handing
off change request to its own thread and thus single threading access to its
state.

All subclasses of the IOEventSource are expected to implement the
checkForWork()
member function.

checkForWork() is the key method in this class.  It is called by some work-loop
when convienient and is expected to evaluate it's internal state and determine
if an event has occured since the last call.  In the case of an event having
occurred then the instance defined target(owner)/action will be called.  The
action is stored as an ordinary C function pointer but the first parameter is
always the owner.  This means that a C++ member function can be used as an
action function though this depends on the ABI.

Although the eventChainNext variable contains a reference to the next event
source in the chain this reference is not retained.  The list 'owner' i.e. the
client that creates the event, not the work-loop, is expected to retain the
source.
*/
$0|$197336|-=: TOP LEVEL COMMENT PARSE VALUES :=-
inHeader: 0
inClass: 1
inInterface: 0
inCPPHeader: 0
inOCCHeader: 0
inPerlScript: 0
inShellScript: 0
inPHPScript: 0
inJavaSource: 0
inFunctionGroup: 0
inGroup: 0
inFunction: 0
inPDefine: 0
inTypedef: 0
inUnion: 0
inStruct: 0
inConstant: 0
inVar: 0
inEnum: 0
inMethod: 0
inAvailabilityMacro: 0
inUnknown: 0
classType: unknown
inputCounter: 0
blockOffset: 0
fullpath: /test_suite_bogus_path/class_3.test
-=: BLOCKPARSE PARSER STATE KEYS :=-
$parserState->{FULLPATH} => /test_suite_bogus_path/class_3.test
$parserState->{ISFORWARDDECLARATION} => 0
$parserState->{NEXTTOKENNOCPP} => 0
$parserState->{availability} => 
$parserState->{backslashcount} => 0
$parserState->{basetype} => 
$parserState->{bracePending} => 0
$parserState->{callbackIsTypedef} => 0
$parserState->{callbackName} => 
$parserState->{callbackNamePending} => -1
$parserState->{categoryClass} => 
$parserState->{classNameFound} => 1
$parserState->{classtype} => class
$parserState->{forceClassDone} => 1
$parserState->{forceClassName} => IOEventSource
$parserState->{forceClassSuper} =>  public OSObject 
$parserState->{freezeStack} => ARRAY(OBJID)
$parserState->{freezereturn} => 1
$parserState->{frozensodname} => 
$parserState->{functionReturnsCallback} => 0
$parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{inBrackets} => 0
$parserState->{inChar} => 0
$parserState->{inClass} => 1
$parserState->{inComment} => 0
$parserState->{inInlineComment} => 0
$parserState->{inMacro} => 0
$parserState->{inMacroLine} => 0
$parserState->{inOperator} => 0
$parserState->{inPrivateParamTypes} => 0
$parserState->{inString} => 0
$parserState->{inTemplate} => 0
$parserState->{initbsCount} => 0
$parserState->{inputCounter} => 67
$parserState->{kr_c_function} => 0
$parserState->{kr_c_name} => 
$parserState->{lang} => C
$parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{lastsymbol} => ;
$parserState->{macroNoTrunc} => 1
$parserState->{name} => 
$parserState->{namePending} => 0
$parserState->{noInsert} => 0
$parserState->{occmethod} => 0
$parserState->{occmethodname} => 
$parserState->{occparmlabelfound} => 4
$parserState->{onlyComments} => 0
$parserState->{parsedParamList} => ARRAY(OBJID)
$parserState->{parsedParamParse} => 1
$parserState->{posstypes} => 
$parserState->{posstypesPending} => 0
$parserState->{pplStack} => ARRAY(OBJID)
$parserState->{preEqualsSymbol} => 
$parserState->{preTemplateSymbol} => 
$parserState->{preclasssodtype} => class
$parserState->{prekeywordsodname} => 
$parserState->{prekeywordsodtype} => 
$parserState->{returntype} => class IOEventSource : public OSObject  
$parserState->{seenBraces} => 0
$parserState->{seenMacroPart} => 0
$parserState->{seenTilde} => 0
$parserState->{simpleTDcontents} => 
$parserState->{simpleTypedef} => 0
$parserState->{sodclass} => class
$parserState->{sodname} => OSObject
$parserState->{sodtype} =>  public
$parserState->{sodtypeclasstoken} => class
$parserState->{stackFrozen} => 0
$parserState->{startOfDec} => 1
$parserState->{storeDec} => 
$parserState->{sublang} => C
$parserState->{temponlyComments} => 0
$parserState->{treePopTwo} => 0
$parserState->{value} => 
$parserState->{valuepending} => 0
-=: BLOCKPARSE RETURN VALUES :=-
newcount: 67
typelist: class
namelist: IOEventSource
posstypes:   OSObject 
value: 
returntype: public
pridec: 
simpleTDcontents: 
bpavail: 
blockOffset: 86
conformsToList: 
functionContents: 
extendsClass: 
implementsClass: 
-=: LIST OF PARSED PARAMETERS :=-
-=: DUMP OF PARSE TREE :=-
+---class
+--- 
+---IOEventSource
+--- 
+---:
+--- 
+---public
+--- 
+---OSObject
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSDeclareAbstractStructors (HAS STATE)
|   +---(
|   |   +---IOEventSource
|   |   +---)
|   +---[ NEWLINE ]
|   +---     
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---IOWorkLoop
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---
@typedef Action
|   |   +---
@discussion Placeholder type for C++ function overloading discrimination.
|   |   +---
As the all event sources require an action and it has to be stored somewhere
|   |   +---
and be of some type, this is that type.
|   |   +---
@param owner
|   |   +---
Target of the function, can be used as a refcon.  The owner is set
|   |   +---
during initialisation.   Note if a C++ function was specified this parameter
|   |   +---
is implicitly the first paramter in the target member function's
|   |   +---
parameter list.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-typedef (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---(
|   |   +---*
|   |   +---Action
|   |   +---)
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---.
|   |   +---.
|   |   +---.
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var eventChainNext 
|   |   +---
The next event source in the event chain. nil at end of chain. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOEventSource (HAS STATE)
|   +--- 
|   +---*
|   +---eventChainNext
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var owner The owner object called when an event has been delivered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSObject (HAS STATE)
|   +--- 
|   +---*
|   +---owner
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var action
|   |   +---
The action method called when an event has been delivered 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-Action (HAS STATE)
|   +--- 
|   +---action
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var enabled 
|   |   +---
Is this event source enabled to deliver requests to the work-loop. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-bool (HAS STATE)
|   +--- 
|   +---enabled
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var workLoop What is the work-loop for this event source. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOWorkLoop (HAS STATE)
|   +--- 
|   +---*
|   +---workLoop
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---     
|   |   +---
@function getID
|   |   +---
HeaderDoc test of multiline inline function definition.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-int (HAS STATE)
|   +--- 
|   +---getID
|   +---(
|   |   +---)
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function init
|   |   +---
@abstract Primary initialiser for the IOEventSource class.
|   |   +---
@throws halibut
|   |   +---
@throws mackeral
|   |   +---
@throws peanuts
|   |   +---
@param owner
|   |   +---
Owner of this instance of an event source.  Used as the first parameter
|   |   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   |   +---
be as no member functions will be called directly in it.  It can just be a
|   |   +---
refcon for a client routine.
|   |   +---
@param action
|   |   +---
Pointer to C call out function.  Action is a pointer to a C function
|   |   +---
that gets called when this event source has outstanding work.  It will usually
|   |   +---
be called by the checkForWork member function.  The first parameter of the
|   |   +---
action call out will always be the owner, this allows C++ member functions to
|   |   +---
be used as actions.  Defaults to 0.
|   |   +---
@result true if the inherited classes and this instance initialise
|   |   +---
successfully.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---init
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkForWork
|   |   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   |   +---
scheduling.
|   |   +---
@discussion This function will be called to request a subclass to check
|   |   +---
it's internal state for any work to do and then to call out the owner/action.
|   |   +---
@param moreP
|   |   +---
Pointer to the more-work output variable.  Set to true if this function
|   |   +---
needs to be called again before all its outstanding events have been processed.
|   |   +---
@param wakeupTimeP
|   |   +---
Pointer to no-later wake up time output variable.  Return variable to
|   |   +---
indicate when this object wishes to be called again; used for timeouts.
|   |   +---
Note the checkForWork method may be called before the timeout fires.
|   |   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   |   +---
requested.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---checkForWork
|   +---(
|   |   +---bool
|   |   +--- 
|   |   +---*
|   |   +---moreP
|   |   +---,
|   |   +--- 
|   |   +---mach_timespec_t
|   |   +--- 
|   |   +---*
|   |   +---wakeupTimeP
|   |   +---)
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setWorkLoop
|   |   +---
@abstract Set'ter for workLoop variable.
|   |   +---
@param workLoop
|   |   +---
Target work-loop of this event source instance.  A subclass of
|   |   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   |   +---
functions.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setWorkLoop
|   +---(
|   |   +---IOWorkLoop
|   |   +--- 
|   |   +---*
|   |   +---workLoop
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setNext
|   |   +---
@abstract Set'ter for eventChainNext variable.
|   |   +---
@param next 
|   |   +---
Pointer to another IOEventSource instance.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setNext
|   +---(
|   |   +---IOEventSource
|   |   +--- 
|   |   +---*
|   |   +---next
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getNext
|   |   +---
@abstract Get'ter for eventChainNext variable.
|   |   +---
@result value of eventChainNext.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +--- 
|   +---*
|   +---getNext
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setAction
|   |   +---
@abstract Set'ter for action variable.
|   |   +---
@param action
|   |   +---
Pointer to a C function of type IOEventSource::Action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setAction
|   +---(
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getAction
|   |   +---
@abstract Get'ter for action variable.
|   |   +---
@result value of action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---getAction
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function enable
|   |   +---
@abstract Enable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.  Calling this function will cause the
|   |   +---
work-loop to be signalled so that a checkForWork is performed.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---enable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function disable
|   |   +---
@abstract Disable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---disable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function isEnabled
|   |   +---
@abstract Get'ter for enable variable.
|   |   +---
@result true if enabled.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---isEnabled
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getWorkLoop
|   |   +---
@abstract Get'ter for workLoop variable.
|   |   +---
@result value of workLoop.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---getWorkLoop
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function onThread
|   |   +---
@abstract Convenience function for workLoop->onThread.
|   |   +---
@result true if called on the work-loop thread.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---onThread
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
-=: COMPUTED VALUE :=-
SUCCESS: 0
VALUE: 0
-=: CPP CHANGES :=-
NO CPP CHANGES
-=: FOUND MATCH :=-
1
-=: NAMED OBJECTS :=-
TREE COUNT: 0
INDEX GROUP: 
IS BLOCK: 
OBJECT TYPE: HeaderDoc::Header
NAME: class 3
APIUID: //test_ref/doc/header/class_3.test
ABSTRACT: ""
DISCUSSION: "<p></p>"
UPDATED: ""
COPYRIGHT: ""
HTMLMETA: ""
PRIVATEDECLARATION: ""
GROUP: ""
INDEXGROUP: ""
THROWS: ""
XMLTHROWS: ""
UPDATED: ""
LINKAGESTATE: ""
ACCESSCONTROL: ""
AVAILABILITY: ""
LINKUID: ""
ORIGCLASS: ""
ISDEFINE: ""
ISTEMPLATE: ""
VALUE: "UNKNOWN"
RETURNTYPE: ""
LINENUM: ""
CLASS: "HeaderDoc::Header"
MASTERENUM: ""
APIREFSETUPDONE: "1"
TPCDONE: ""
NOREGISTERUID: ""
SUPPRESSCHILDREN: ""
NAMELINE_DISCUSSION: ""
HIDEDOC: ""
HIDESINGLETONS: ""
HIDECONTENTS: ""
MAINOBJECT: ""
LIST ATTRIBUTES: 
SHORT ATTRIBUTES: 
LONG ATTRIBUTES: 
    TREE COUNT: 1
    INDEX GROUP: 
    IS BLOCK: 
    OBJECT TYPE: HeaderDoc::CPPClass
    NAME: IOEventSource
    APIUID: 
    ABSTRACT: "<p>Abstract class for all work-loop event sources.
"
    DISCUSSION: "<p>The IOEventSource declares the abstract super class that all
event sources must inherit from if an IOWorkLoop is to receive events
from them.
</p>
<p>An event source can represent any event that should cause the work-loop of a
device to wake up and perform work.  Two examples of event sources are the
IOInterruptEventSource which delivers interrupt notifications and IOCommandGate
which delivers command requests.
</p>
<p>A kernel module can always use the work-loop model for serialising access to
anything at all.  The IOEventSource is used for communicating events to the
work-loop, and the chain of event sources should be used to walk the possible
event sources and demultipex them.  Note a particular instance of an event
source may only be a member of 1 linked list chain.  If you need to move it
between chains than make sure it is removed from the original chain before
attempting to move it.
</p>
<p>The IOEventSource makes no attempt to maintain the consitency of it's internal
data across multi-threading.  It is assumed that the user of these basic tools
will protect the data that these objects represent in some sort of device wide
instance lock.  For example the IOWorkLoop maintains the event chain by handing
off change request to its own thread and thus single threading access to its
state.
</p>
<p>All subclasses of the IOEventSource are expected to implement the
checkForWork()
member function.
</p>
<p>checkForWork() is the key method in this class.  It is called by some work-loop
when convienient and is expected to evaluate it's internal state and determine
if an event has occured since the last call.  In the case of an event having
occurred then the instance defined target(owner)/action will be called.  The
action is stored as an ordinary C function pointer but the first parameter is
always the owner.  This means that a C++ member function can be used as an
action function though this depends on the ABI.
</p>
<p>Although the eventChainNext variable contains a reference to the next event
source in the chain this reference is not retained.  The list 'owner' i.e. the
client that creates the event, not the work-loop, is expected to retain the
source.
"
    UPDATED: "March 07, 2007"
    COPYRIGHT: ""
    HTMLMETA: ""
    PRIVATEDECLARATION: ""
    GROUP: ""
    INDEXGROUP: ""
    THROWS: " sandwiches<br>
"
    XMLTHROWS: "<throw> sandwiches</throw>
"
    UPDATED: "March 07, 2007"
    LINKAGESTATE: ""
    ACCESSCONTROL: ""
    AVAILABILITY: ""
    LINKUID: ""
    ORIGCLASS: ""
    ISDEFINE: ""
    ISTEMPLATE: ""
    VALUE: "UNKNOWN"
    RETURNTYPE: ""
    LINENUM: ""
    CLASS: "HeaderDoc::CPPClass"
    MASTERENUM: ""
    APIREFSETUPDONE: "1"
    TPCDONE: ""
    NOREGISTERUID: ""
    SUPPRESSCHILDREN: "0"
    NAMELINE_DISCUSSION: ""
    HIDEDOC: ""
    HIDESINGLETONS: ""
    HIDECONTENTS: ""
    MAINOBJECT: ""
    LIST ATTRIBUTES: 
    SHORT ATTRIBUTES: <p><b>Superclass</b></p>

<p><!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/cpp/econst/OSObject //test_ref/cpp/data/OSObject //test_ref/cpp/clconst/OSObject //test_ref/cpp/instm/OSObject //test_ref/cpp/clm/OSObject //test_ref/cpp/intfcm/OSObject //test_ref/cpp/intfm/OSObject //test_ref/cpp/func/OSObject //test_ref/cpp/ftmplt/OSObject //test_ref/cpp/defn/OSObject //test_ref/cpp/macro/OSObject //test_ref/doc/com/intfm/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" -->OSObject<!-- /a --></p>
<p><b>Declared In</b></p><p><a href="../../index.html" logicalPath="//test_ref/doc/header/class_3.test" target="_top" machineGenerated="true">class 3</a></p>

    LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getID
        APIUID: //test_ref/cpp/instm/IOEventSource/getID/int/()
        ABSTRACT: ""
        DISCUSSION: "<p>HeaderDoc test of multiline inline function definition."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " int"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: init
        APIUID: //test_ref/cpp/instm/IOEventSource/init/bool/(OSObject*,IOEventSource::Action)
        ABSTRACT: "<p>Primary initialiser for the IOEventSource class.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: " halibut<br>
 mackeral<br>
 peanuts<br>
"
        XMLTHROWS: "<throw> halibut</throw>
<throw> mackeral</throw>
<throw> peanuts</throw>
"
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: OSObject *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: IOEventSource :: Action
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/init/owner
            ABSTRACT: ""
            DISCUSSION: "<p>Owner of this instance of an event source.  Used as the first parameter
of the action callout.  Owner will generally be an OSObject it doesn't have to
be as no member functions will be called directly in it.  It can just be a
refcon for a client routine."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/init/action
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to C call out function.  Action is a pointer to a C function
that gets called when this event source has outstanding work.  It will usually
be called by the checkForWork member function.  The first parameter of the
action call out will always be the owner, this allows C++ member functions to
be used as actions.  Defaults to 0."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkForWork
        APIUID: //test_ref/cpp/instm/IOEventSource/checkForWork/void/(bool*,mach_timespec_t*)
        ABSTRACT: "<p>Pure Virtual member function used by IOWorkLoop for work
scheduling.
"
        DISCUSSION: "<p>This function will be called to request a subclass to check
it's internal state for any work to do and then to call out the owner/action.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: moreP
            TYPE: bool *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: wakeupTimeP
            TYPE: mach_timespec_t *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: moreP
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/checkForWork/moreP
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to the more-work output variable.  Set to true if this function
needs to be called again before all its outstanding events have been processed."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: wakeupTimeP
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/checkForWork/wakeupTimeP
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to no-later wake up time output variable.  Return variable to
indicate when this object wishes to be called again; used for timeouts.
Note the checkForWork method may be called before the timeout fires.
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
requested."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setWorkLoop
        APIUID: //test_ref/cpp/instm/IOEventSource/setWorkLoop/void/(IOWorkLoop*)
        ABSTRACT: "<p>Set'ter for workLoop variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: workLoop
            TYPE: IOWorkLoop *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: workLoop
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setWorkLoop/workLoop
            ABSTRACT: ""
            DISCUSSION: "<p>Target work-loop of this event source instance.  A subclass of
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
functions."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setNext
        APIUID: //test_ref/cpp/instm/IOEventSource/setNext/void/(IOEventSource*)
        ABSTRACT: "<p>Set'ter for eventChainNext variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: next
            TYPE: IOEventSource *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: next
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setNext/next
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to another IOEventSource instance."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getNext
        APIUID: //test_ref/cpp/instm/IOEventSource/getNext/IOEventSource*/()
        ABSTRACT: "<p>Get'ter for eventChainNext variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOEventSource *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setAction
        APIUID: //test_ref/cpp/instm/IOEventSource/setAction/void/(IOEventSource::Action)
        ABSTRACT: "<p>Set'ter for action variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: IOEventSource :: Action
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setAction/action
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to a C function of type IOEventSource::Action."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getAction
        APIUID: //test_ref/cpp/instm/IOEventSource/getAction/IOEventSource::Action/()
        ABSTRACT: "<p>Get'ter for action variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOEventSource :: Action"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: enable
        APIUID: //test_ref/cpp/instm/IOEventSource/enable/void/()
        ABSTRACT: "<p>Enable event source.
"
        DISCUSSION: "<p>A subclass implementation is expected to respect the enabled
state when checkForWork is called.  Calling this function will cause the
work-loop to be signalled so that a checkForWork is performed.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: disable
        APIUID: //test_ref/cpp/instm/IOEventSource/disable/void/()
        ABSTRACT: "<p>Disable event source.
"
        DISCUSSION: "<p>A subclass implementation is expected to respect the enabled
state when checkForWork is called.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: isEnabled
        APIUID: //test_ref/cpp/instm/IOEventSource/isEnabled/bool/()
        ABSTRACT: "<p>Get'ter for enable variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getWorkLoop
        APIUID: //test_ref/cpp/instm/IOEventSource/getWorkLoop/IOWorkLoop*/()
        ABSTRACT: "<p>Get'ter for workLoop variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOWorkLoop *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: onThread
        APIUID: //test_ref/cpp/instm/IOEventSource/onThread/bool/()
        ABSTRACT: "<p>Convenience function for workLoop->onThread.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Typedef
        NAME: Action
        APIUID: //test_ref/cpp/tdef/IOEventSource/Action
        ABSTRACT: ""
        DISCUSSION: "<p>Placeholder type for C++ function overloading discrimination.
As the all event sources require an action and it has to be stored somewhere
and be of some type, this is that type.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::Typedef"
        MASTERENUM: "0"
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: OSObject *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: ...
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: 
            APIUID: //test_ref/doc/typedeffield/IOEventSource/Action/owner
            ABSTRACT: ""
            DISCUSSION: "<p>Target of the function, can be used as a refcon.  The owner is set
during initialisation.   Note if a C++ function was specified this parameter
is implicitly the first paramter in the target member function's
parameter list."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: eventChainNext
        APIUID: //test_ref/cpp/data/IOEventSource/eventChainNext
        ABSTRACT: ""
        DISCUSSION: "<p>The next event source in the event chain. nil at end of chain."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "IOEventSource *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: owner
        APIUID: //test_ref/cpp/data/IOEventSource/owner
        ABSTRACT: ""
        DISCUSSION: "<p>The owner object called when an event has been delivered.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "The owner object called when an event has been delivered."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: action
        APIUID: //test_ref/cpp/data/IOEventSource/action
        ABSTRACT: ""
        DISCUSSION: "<p>The action method called when an event has been delivered"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "Action"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: enabled
        APIUID: //test_ref/cpp/data/IOEventSource/enabled
        ABSTRACT: ""
        DISCUSSION: "<p>Is this event source enabled to deliver requests to the work-loop."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: workLoop
        APIUID: //test_ref/cpp/data/IOEventSource/workLoop
        ABSTRACT: ""
        DISCUSSION: "<p>What is the work-loop for this event source.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "IOWorkLoop *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "What is the work-loop for this event source."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
-=: NAMED OBJECT PARSE TREES :=-
OBJECT: IOEventSource (HeaderDoc::CPPClass)
+---class
+--- 
+---IOEventSource
+--- 
+---:
+--- 
+---public
+--- 
+---OSObject
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSDeclareAbstractStructors (HAS STATE)
|   +---(
|   |   +---IOEventSource
|   |   +---)
|   +---[ NEWLINE ]
|   +---     
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---IOWorkLoop
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---
@typedef Action
|   |   +---
@discussion Placeholder type for C++ function overloading discrimination.
|   |   +---
As the all event sources require an action and it has to be stored somewhere
|   |   +---
and be of some type, this is that type.
|   |   +---
@param owner
|   |   +---
Target of the function, can be used as a refcon.  The owner is set
|   |   +---
during initialisation.   Note if a C++ function was specified this parameter
|   |   +---
is implicitly the first paramter in the target member function's
|   |   +---
parameter list.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-typedef (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---(
|   |   +---*
|   |   +---Action
|   |   +---)
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---.
|   |   +---.
|   |   +---.
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var eventChainNext 
|   |   +---
The next event source in the event chain. nil at end of chain. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOEventSource (HAS STATE)
|   +--- 
|   +---*
|   +---eventChainNext
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var owner The owner object called when an event has been delivered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSObject (HAS STATE)
|   +--- 
|   +---*
|   +---owner
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var action
|   |   +---
The action method called when an event has been delivered 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-Action (HAS STATE)
|   +--- 
|   +---action
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var enabled 
|   |   +---
Is this event source enabled to deliver requests to the work-loop. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-bool (HAS STATE)
|   +--- 
|   +---enabled
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var workLoop What is the work-loop for this event source. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOWorkLoop (HAS STATE)
|   +--- 
|   +---*
|   +---workLoop
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---     
|   |   +---
@function getID
|   |   +---
HeaderDoc test of multiline inline function definition.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-int (HAS STATE)
|   +--- 
|   +---getID
|   +---(
|   |   +---)
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function init
|   |   +---
@abstract Primary initialiser for the IOEventSource class.
|   |   +---
@throws halibut
|   |   +---
@throws mackeral
|   |   +---
@throws peanuts
|   |   +---
@param owner
|   |   +---
Owner of this instance of an event source.  Used as the first parameter
|   |   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   |   +---
be as no member functions will be called directly in it.  It can just be a
|   |   +---
refcon for a client routine.
|   |   +---
@param action
|   |   +---
Pointer to C call out function.  Action is a pointer to a C function
|   |   +---
that gets called when this event source has outstanding work.  It will usually
|   |   +---
be called by the checkForWork member function.  The first parameter of the
|   |   +---
action call out will always be the owner, this allows C++ member functions to
|   |   +---
be used as actions.  Defaults to 0.
|   |   +---
@result true if the inherited classes and this instance initialise
|   |   +---
successfully.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---init
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkForWork
|   |   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   |   +---
scheduling.
|   |   +---
@discussion This function will be called to request a subclass to check
|   |   +---
it's internal state for any work to do and then to call out the owner/action.
|   |   +---
@param moreP
|   |   +---
Pointer to the more-work output variable.  Set to true if this function
|   |   +---
needs to be called again before all its outstanding events have been processed.
|   |   +---
@param wakeupTimeP
|   |   +---
Pointer to no-later wake up time output variable.  Return variable to
|   |   +---
indicate when this object wishes to be called again; used for timeouts.
|   |   +---
Note the checkForWork method may be called before the timeout fires.
|   |   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   |   +---
requested.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---checkForWork
|   +---(
|   |   +---bool
|   |   +--- 
|   |   +---*
|   |   +---moreP
|   |   +---,
|   |   +--- 
|   |   +---mach_timespec_t
|   |   +--- 
|   |   +---*
|   |   +---wakeupTimeP
|   |   +---)
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setWorkLoop
|   |   +---
@abstract Set'ter for workLoop variable.
|   |   +---
@param workLoop
|   |   +---
Target work-loop of this event source instance.  A subclass of
|   |   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   |   +---
functions.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setWorkLoop
|   +---(
|   |   +---IOWorkLoop
|   |   +--- 
|   |   +---*
|   |   +---workLoop
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setNext
|   |   +---
@abstract Set'ter for eventChainNext variable.
|   |   +---
@param next 
|   |   +---
Pointer to another IOEventSource instance.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setNext
|   +---(
|   |   +---IOEventSource
|   |   +--- 
|   |   +---*
|   |   +---next
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getNext
|   |   +---
@abstract Get'ter for eventChainNext variable.
|   |   +---
@result value of eventChainNext.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +--- 
|   +---*
|   +---getNext
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setAction
|   |   +---
@abstract Set'ter for action variable.
|   |   +---
@param action
|   |   +---
Pointer to a C function of type IOEventSource::Action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setAction
|   +---(
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getAction
|   |   +---
@abstract Get'ter for action variable.
|   |   +---
@result value of action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---getAction
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function enable
|   |   +---
@abstract Enable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.  Calling this function will cause the
|   |   +---
work-loop to be signalled so that a checkForWork is performed.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---enable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function disable
|   |   +---
@abstract Disable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---disable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function isEnabled
|   |   +---
@abstract Get'ter for enable variable.
|   |   +---
@result true if enabled.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---isEnabled
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getWorkLoop
|   |   +---
@abstract Get'ter for workLoop variable.
|   |   +---
@result value of workLoop.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---getWorkLoop
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function onThread
|   |   +---
@abstract Convenience function for workLoop->onThread.
|   |   +---
@result true if called on the work-loop thread.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---onThread
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
END OF OBJECT


OBJECT: getID (HeaderDoc::Function)
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: init (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: checkForWork (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setWorkLoop (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setNext (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getNext (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setAction (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getAction (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: enable (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: disable (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: isEnabled (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getWorkLoop (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: onThread (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: Action (HeaderDoc::Typedef)
+-*-typedef (HAS STATE)
+--- 
+---void
+--- 
+---(
|   +---*
|   +---Action
|   +---)
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---.
|   +---.
|   +---.
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var eventChainNext 
|   +---
The next event source in the event chain. nil at end of chain. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOEventSource (HAS STATE)
+--- 
+---*
+---eventChainNext
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var owner The owner object called when an event has been delivered. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: eventChainNext (HeaderDoc::Var)
+-*-IOEventSource (HAS STATE)
+--- 
+---*
+---eventChainNext
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var owner The owner object called when an event has been delivered. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: owner (HeaderDoc::Var)
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: action (HeaderDoc::Var)
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: enabled (HeaderDoc::Var)
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: workLoop (HeaderDoc::Var)
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT



-=: HTML OUTPUT OF PARSE TREES :=-
OBJECT: IOEventSource (HeaderDoc::CPPClass)
	<span class="keyword">class</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> : <span class="keyword">public</span> <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> { 
	    <!-- a logicalPath="//test_ref/cpp/instm/OSDeclareAbstractStructors //test_ref/cpp/clm/OSDeclareAbstractStructors //test_ref/cpp/intfcm/OSDeclareAbstractStructors //test_ref/cpp/intfm/OSDeclareAbstractStructors //test_ref/cpp/func/OSDeclareAbstractStructors //test_ref/cpp/ftmplt/OSDeclareAbstractStructors //test_ref/cpp/defn/OSDeclareAbstractStructors //test_ref/cpp/macro/OSDeclareAbstractStructors //test_ref/doc/anysymbol/OSDeclareAbstractStructors" machineGenerated="true" --><span class="function">OSDeclareAbstractStructors</span><!-- /a -->(
	        <span class="param">IOEventSource</span>) <span class="keyword">friend</span> <span class="keyword">class</span> <!-- a logicalPath="//test_ref/cpp/econst/IOWorkLoop //test_ref/cpp/data/IOWorkLoop //test_ref/cpp/clconst/IOWorkLoop " machineGenerated="true" --><span class="var">IOWorkLoop</span><!-- /a -->;  
	    <span class="keyword">public</span>: <span class="comment">/*!
	@typedef Action
	@discussion Placeholder type for C++ function overloading discrimination.
	As the all event sources require an action and it has to be stored somewhere
	and be of some type, this is that type.
	@param owner
	Target of the function, can be used as a refcon.  The owner is set
	during initialisation.   Note if a C++ function was specified this parameter
	is implicitly the first paramter in the target member function's
	parameter list.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">typedef</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> (<span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/Action //test_ref/cpp/clm/Action //test_ref/cpp/intfcm/Action //test_ref/cpp/intfm/Action //test_ref/cpp/func/Action //test_ref/cpp/ftmplt/Action //test_ref/cpp/defn/Action //test_ref/cpp/macro/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="function">Action</span><!-- /a -->)(
	        <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	        ...);  
	    <span class="keyword">protected</span>: <span class="comment">/*! @var eventChainNext </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/eventChainNext //test_ref/cpp/data/eventChainNext //test_ref/cpp/clconst/eventChainNext " machineGenerated="true" --><span class="var">eventChainNext</span><!-- /a -->;  
	    <span class="comment">/*! @var owner The owner object called when an event has been delivered. </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/owner //test_ref/cpp/data/owner //test_ref/cpp/clconst/owner " machineGenerated="true" --><span class="var">owner</span><!-- /a -->;  
	    <span class="comment">/*! @var action</span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/action //test_ref/cpp/data/action //test_ref/cpp/clconst/action " machineGenerated="true" --><span class="var">action</span><!-- /a -->;  
	    <span class="comment">/*! @var enabled </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/enabled //test_ref/cpp/data/enabled //test_ref/cpp/clconst/enabled " machineGenerated="true" --><span class="var">enabled</span><!-- /a -->;  
	    <span class="comment">/*! @var workLoop What is the work-loop for this event source. </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/workLoop //test_ref/cpp/data/workLoop //test_ref/cpp/clconst/workLoop " machineGenerated="true" --><span class="var">workLoop</span><!-- /a -->;  
	    <span class="comment">/*! 
	@function getID
	HeaderDoc test of multiline inline function definition.</span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/int //test_ref/cpp/tdef/int //test_ref/cpp/tag/int //test_ref/cpp/struct/int //test_ref/cpp/intf/int //test_ref/doc/anysymbol/int" machineGenerated="true" --><span class="type">int</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/getID //test_ref/cpp/clm/getID //test_ref/cpp/intfcm/getID //test_ref/cpp/intfm/getID //test_ref/cpp/func/getID //test_ref/cpp/ftmplt/getID //test_ref/cpp/defn/getID //test_ref/cpp/macro/getID //test_ref/doc/anysymbol/getID" machineGenerated="true" --><span class="function">getID</span><!-- /a -->()   <span class="comment">/*! @function init
	@abstract Primary initialiser for the IOEventSource class.
	@throws halibut
	@throws mackeral
	@throws peanuts
	@param owner
	Owner of this instance of an event source.  Used as the first parameter
	of the action callout.  Owner will generally be an OSObject it doesn't have to
	be as no member functions will be called directly in it.  It can just be a
	refcon for a client routine.
	@param action
	Pointer to C call out function.  Action is a pointer to a C function
	that gets called when this event source has outstanding work.  It will usually
	be called by the checkForWork member function.  The first parameter of the
	action call out will always be the owner, this allows C++ member functions to
	be used as actions.  Defaults to 0.
	@result true if the inherited classes and this instance initialise
	successfully.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/init //test_ref/cpp/clm/init //test_ref/cpp/intfcm/init //test_ref/cpp/intfm/init //test_ref/cpp/func/init //test_ref/cpp/ftmplt/init //test_ref/cpp/defn/init //test_ref/cpp/macro/init //test_ref/doc/anysymbol/init" machineGenerated="true" --><span class="function">init</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/cl/action //test_ref/cpp/tdef/action //test_ref/cpp/tag/action //test_ref/cpp/struct/action //test_ref/cpp/intf/action //test_ref/doc/anysymbol/action" machineGenerated="true" --><span class="type">action</span><!-- /a --> = <span class="number">0</span>);  
	    <span class="comment">/*! @function checkForWork
	@abstract Pure Virtual member function used by IOWorkLoop for work
	scheduling.
	@discussion This function will be called to request a subclass to check
	it's internal state for any work to do and then to call out the owner/action.
	@param moreP
	Pointer to the more-work output variable.  Set to true if this function
	needs to be called again before all its outstanding events have been processed.
	@param wakeupTimeP
	Pointer to no-later wake up time output variable.  Return variable to
	indicate when this object wishes to be called again; used for timeouts.
	Note the checkForWork method may be called before the timeout fires.
	Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
	requested.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/checkForWork //test_ref/cpp/clm/checkForWork //test_ref/cpp/intfcm/checkForWork //test_ref/cpp/intfm/checkForWork //test_ref/cpp/func/checkForWork //test_ref/cpp/ftmplt/checkForWork //test_ref/cpp/defn/checkForWork //test_ref/cpp/macro/checkForWork //test_ref/doc/anysymbol/checkForWork" machineGenerated="true" --><span class="function">checkForWork</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <span class="type">*</span><span class="param">moreP</span>,
	        <!-- a logicalPath="//test_ref/cpp/cl/mach_timespec_t //test_ref/cpp/tdef/mach_timespec_t //test_ref/cpp/tag/mach_timespec_t //test_ref/cpp/struct/mach_timespec_t //test_ref/cpp/intf/mach_timespec_t //test_ref/doc/anysymbol/mach_timespec_t" machineGenerated="true" --><span class="type">mach_timespec_t</span><!-- /a --> <span class="type">*</span><span class="param">wakeupTimeP</span>) = <span class="number">0</span>;  
	    <span class="comment">/*! @function setWorkLoop
	@abstract Set'ter for workLoop variable.
	@param workLoop
	Target work-loop of this event source instance.  A subclass of
	IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
	functions.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setWorkLoop //test_ref/cpp/clm/setWorkLoop //test_ref/cpp/intfcm/setWorkLoop //test_ref/cpp/intfm/setWorkLoop //test_ref/cpp/func/setWorkLoop //test_ref/cpp/ftmplt/setWorkLoop //test_ref/cpp/defn/setWorkLoop //test_ref/cpp/macro/setWorkLoop //test_ref/doc/anysymbol/setWorkLoop" machineGenerated="true" --><span class="function">setWorkLoop</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><span class="param">workLoop</span>);  
	    <span class="comment">/*! @function setNext
	@abstract Set'ter for eventChainNext variable.
	@param next 
	Pointer to another IOEventSource instance.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setNext //test_ref/cpp/clm/setNext //test_ref/cpp/intfcm/setNext //test_ref/cpp/intfm/setNext //test_ref/cpp/func/setNext //test_ref/cpp/ftmplt/setNext //test_ref/cpp/defn/setNext //test_ref/cpp/macro/setNext //test_ref/doc/anysymbol/setNext" machineGenerated="true" --><span class="function">setNext</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><span class="param">next</span>);  
	    <span class="comment">/*! @function getNext
	@abstract Get'ter for eventChainNext variable.
	@result value of eventChainNext.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/getNext //test_ref/cpp/clm/getNext //test_ref/cpp/intfcm/getNext //test_ref/cpp/intfm/getNext //test_ref/cpp/func/getNext //test_ref/cpp/ftmplt/getNext //test_ref/cpp/defn/getNext //test_ref/cpp/macro/getNext //test_ref/doc/anysymbol/getNext" machineGenerated="true" --><span class="function">getNext</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="keyword">public</span>: <span class="comment">/*! @function setAction
	@abstract Set'ter for action variable.
	@param action
	Pointer to a C function of type IOEventSource::Action.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setAction //test_ref/cpp/clm/setAction //test_ref/cpp/intfcm/setAction //test_ref/cpp/intfm/setAction //test_ref/cpp/func/setAction //test_ref/cpp/ftmplt/setAction //test_ref/cpp/defn/setAction //test_ref/cpp/macro/setAction //test_ref/doc/anysymbol/setAction" machineGenerated="true" --><span class="function">setAction</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <span class="param">action</span>);  
	    <span class="comment">/*! @function getAction
	@abstract Get'ter for action variable.
	@result value of action.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/getAction //test_ref/cpp/clm/getAction //test_ref/cpp/intfcm/getAction //test_ref/cpp/intfm/getAction //test_ref/cpp/func/getAction //test_ref/cpp/ftmplt/getAction //test_ref/cpp/defn/getAction //test_ref/cpp/macro/getAction //test_ref/doc/anysymbol/getAction" machineGenerated="true" --><span class="function">getAction</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function enable
	@abstract Enable event source.
	@discussion A subclass implementation is expected to respect the enabled
	state when checkForWork is called.  Calling this function will cause the
	work-loop to be signalled so that a checkForWork is performed.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/enable //test_ref/cpp/clm/enable //test_ref/cpp/intfcm/enable //test_ref/cpp/intfm/enable //test_ref/cpp/func/enable //test_ref/cpp/ftmplt/enable //test_ref/cpp/defn/enable //test_ref/cpp/macro/enable //test_ref/doc/anysymbol/enable" machineGenerated="true" --><span class="function">enable</span><!-- /a -->();  
	    <span class="comment">/*! @function disable
	@abstract Disable event source.
	@discussion A subclass implementation is expected to respect the enabled
	state when checkForWork is called.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/disable //test_ref/cpp/clm/disable //test_ref/cpp/intfcm/disable //test_ref/cpp/intfm/disable //test_ref/cpp/func/disable //test_ref/cpp/ftmplt/disable //test_ref/cpp/defn/disable //test_ref/cpp/macro/disable //test_ref/doc/anysymbol/disable" machineGenerated="true" --><span class="function">disable</span><!-- /a -->();  
	    <span class="comment">/*! @function isEnabled
	@abstract Get'ter for enable variable.
	@result true if enabled.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/isEnabled //test_ref/cpp/clm/isEnabled //test_ref/cpp/intfcm/isEnabled //test_ref/cpp/intfm/isEnabled //test_ref/cpp/func/isEnabled //test_ref/cpp/ftmplt/isEnabled //test_ref/cpp/defn/isEnabled //test_ref/cpp/macro/isEnabled //test_ref/doc/anysymbol/isEnabled" machineGenerated="true" --><span class="function">isEnabled</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function getWorkLoop
	@abstract Get'ter for workLoop variable.
	@result value of workLoop.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/getWorkLoop //test_ref/cpp/clm/getWorkLoop //test_ref/cpp/intfcm/getWorkLoop //test_ref/cpp/intfm/getWorkLoop //test_ref/cpp/func/getWorkLoop //test_ref/cpp/ftmplt/getWorkLoop //test_ref/cpp/defn/getWorkLoop //test_ref/cpp/macro/getWorkLoop //test_ref/doc/anysymbol/getWorkLoop" machineGenerated="true" --><span class="function">getWorkLoop</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function onThread
	@abstract Convenience function for workLoop-&gt;onThread.
	@result true if called on the work-loop thread.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/onThread //test_ref/cpp/clm/onThread //test_ref/cpp/intfcm/onThread //test_ref/cpp/intfm/onThread //test_ref/cpp/func/onThread //test_ref/cpp/ftmplt/onThread //test_ref/cpp/defn/onThread //test_ref/cpp/macro/onThread //test_ref/doc/anysymbol/onThread" machineGenerated="true" --><span class="function">onThread</span><!-- /a -->() <span class="keyword">const</span>; 
	};  
END OF OBJECT


OBJECT: getID (HeaderDoc::Function)
	<!-- a logicalPath="//test_ref/cpp/cl/int //test_ref/cpp/tdef/int //test_ref/cpp/tag/int //test_ref/cpp/struct/int //test_ref/cpp/intf/int //test_ref/doc/anysymbol/int" machineGenerated="true" --><span class="type">int</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getID //test_ref/cpp/clm/IOEventSource/getID //test_ref/cpp/intfcm/IOEventSource/getID //test_ref/cpp/intfm/IOEventSource/getID //test_ref/cpp/func/getID //test_ref/cpp/ftmplt/IOEventSource/getID //test_ref/cpp/defn/getID //test_ref/cpp/macro/getID //test_ref/doc/anysymbol/getID" machineGenerated="true" --><span class="function">getID</span><!-- /a -->() 
END OF OBJECT


OBJECT: init (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/init //test_ref/cpp/clm/IOEventSource/init //test_ref/cpp/intfcm/IOEventSource/init //test_ref/cpp/intfm/IOEventSource/init //test_ref/cpp/func/init //test_ref/cpp/ftmplt/IOEventSource/init //test_ref/cpp/defn/init //test_ref/cpp/macro/init //test_ref/doc/anysymbol/init" machineGenerated="true" --><span class="function">init</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/cl/action //test_ref/cpp/tdef/action //test_ref/cpp/tag/action //test_ref/cpp/struct/action //test_ref/cpp/intf/action //test_ref/doc/anysymbol/action" machineGenerated="true" --><span class="type">action</span><!-- /a --> = <span class="number">0</span>); 
END OF OBJECT


OBJECT: checkForWork (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/checkForWork //test_ref/cpp/clm/IOEventSource/checkForWork //test_ref/cpp/intfcm/IOEventSource/checkForWork //test_ref/cpp/intfm/IOEventSource/checkForWork //test_ref/cpp/func/checkForWork //test_ref/cpp/ftmplt/IOEventSource/checkForWork //test_ref/cpp/defn/checkForWork //test_ref/cpp/macro/checkForWork //test_ref/doc/anysymbol/checkForWork" machineGenerated="true" --><span class="function">checkForWork</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <span class="type">*</span><span class="param">moreP</span>,
	    <!-- a logicalPath="//test_ref/cpp/cl/mach_timespec_t //test_ref/cpp/tdef/mach_timespec_t //test_ref/cpp/tag/mach_timespec_t //test_ref/cpp/struct/mach_timespec_t //test_ref/cpp/intf/mach_timespec_t //test_ref/doc/anysymbol/mach_timespec_t" machineGenerated="true" --><span class="type">mach_timespec_t</span><!-- /a --> <span class="type">*</span><span class="param">wakeupTimeP</span>) = <span class="number">0</span>; 
END OF OBJECT


OBJECT: setWorkLoop (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setWorkLoop //test_ref/cpp/clm/IOEventSource/setWorkLoop //test_ref/cpp/intfcm/IOEventSource/setWorkLoop //test_ref/cpp/intfm/IOEventSource/setWorkLoop //test_ref/cpp/func/setWorkLoop //test_ref/cpp/ftmplt/IOEventSource/setWorkLoop //test_ref/cpp/defn/setWorkLoop //test_ref/cpp/macro/setWorkLoop //test_ref/doc/anysymbol/setWorkLoop" machineGenerated="true" --><span class="function">setWorkLoop</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><span class="param">workLoop</span>); 
END OF OBJECT


OBJECT: setNext (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setNext //test_ref/cpp/clm/IOEventSource/setNext //test_ref/cpp/intfcm/IOEventSource/setNext //test_ref/cpp/intfm/IOEventSource/setNext //test_ref/cpp/func/setNext //test_ref/cpp/ftmplt/IOEventSource/setNext //test_ref/cpp/defn/setNext //test_ref/cpp/macro/setNext //test_ref/doc/anysymbol/setNext" machineGenerated="true" --><span class="function">setNext</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><span class="param">next</span>); 
END OF OBJECT


OBJECT: getNext (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getNext //test_ref/cpp/clm/IOEventSource/getNext //test_ref/cpp/intfcm/IOEventSource/getNext //test_ref/cpp/intfm/IOEventSource/getNext //test_ref/cpp/func/getNext //test_ref/cpp/ftmplt/IOEventSource/getNext //test_ref/cpp/defn/getNext //test_ref/cpp/macro/getNext //test_ref/doc/anysymbol/getNext" machineGenerated="true" --><span class="function">getNext</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: setAction (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setAction //test_ref/cpp/clm/IOEventSource/setAction //test_ref/cpp/intfcm/IOEventSource/setAction //test_ref/cpp/intfm/IOEventSource/setAction //test_ref/cpp/func/setAction //test_ref/cpp/ftmplt/IOEventSource/setAction //test_ref/cpp/defn/setAction //test_ref/cpp/macro/setAction //test_ref/doc/anysymbol/setAction" machineGenerated="true" --><span class="function">setAction</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <span class="param">action</span>); 
END OF OBJECT


OBJECT: getAction (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getAction //test_ref/cpp/clm/IOEventSource/getAction //test_ref/cpp/intfcm/IOEventSource/getAction //test_ref/cpp/intfm/IOEventSource/getAction //test_ref/cpp/func/getAction //test_ref/cpp/ftmplt/IOEventSource/getAction //test_ref/cpp/defn/getAction //test_ref/cpp/macro/getAction //test_ref/doc/anysymbol/getAction" machineGenerated="true" --><span class="function">getAction</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: enable (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/enable //test_ref/cpp/clm/IOEventSource/enable //test_ref/cpp/intfcm/IOEventSource/enable //test_ref/cpp/intfm/IOEventSource/enable //test_ref/cpp/func/enable //test_ref/cpp/ftmplt/IOEventSource/enable //test_ref/cpp/defn/enable //test_ref/cpp/macro/enable //test_ref/doc/anysymbol/enable" machineGenerated="true" --><span class="function">enable</span><!-- /a -->(); 
END OF OBJECT


OBJECT: disable (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/disable //test_ref/cpp/clm/IOEventSource/disable //test_ref/cpp/intfcm/IOEventSource/disable //test_ref/cpp/intfm/IOEventSource/disable //test_ref/cpp/func/disable //test_ref/cpp/ftmplt/IOEventSource/disable //test_ref/cpp/defn/disable //test_ref/cpp/macro/disable //test_ref/doc/anysymbol/disable" machineGenerated="true" --><span class="function">disable</span><!-- /a -->(); 
END OF OBJECT


OBJECT: isEnabled (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/isEnabled //test_ref/cpp/clm/IOEventSource/isEnabled //test_ref/cpp/intfcm/IOEventSource/isEnabled //test_ref/cpp/intfm/IOEventSource/isEnabled //test_ref/cpp/func/isEnabled //test_ref/cpp/ftmplt/IOEventSource/isEnabled //test_ref/cpp/defn/isEnabled //test_ref/cpp/macro/isEnabled //test_ref/doc/anysymbol/isEnabled" machineGenerated="true" --><span class="function">isEnabled</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: getWorkLoop (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getWorkLoop //test_ref/cpp/clm/IOEventSource/getWorkLoop //test_ref/cpp/intfcm/IOEventSource/getWorkLoop //test_ref/cpp/intfm/IOEventSource/getWorkLoop //test_ref/cpp/func/getWorkLoop //test_ref/cpp/ftmplt/IOEventSource/getWorkLoop //test_ref/cpp/defn/getWorkLoop //test_ref/cpp/macro/getWorkLoop //test_ref/doc/anysymbol/getWorkLoop" machineGenerated="true" --><span class="function">getWorkLoop</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: onThread (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/onThread //test_ref/cpp/clm/IOEventSource/onThread //test_ref/cpp/intfcm/IOEventSource/onThread //test_ref/cpp/intfm/IOEventSource/onThread //test_ref/cpp/func/onThread //test_ref/cpp/ftmplt/IOEventSource/onThread //test_ref/cpp/defn/onThread //test_ref/cpp/macro/onThread //test_ref/doc/anysymbol/onThread" machineGenerated="true" --><span class="function">onThread</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: Action (HeaderDoc::Typedef)
	<span class="keyword">typedef</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> ( <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/Action //test_ref/cpp/clm/IOEventSource/Action //test_ref/cpp/intfcm/IOEventSource/Action //test_ref/cpp/intfm/IOEventSource/Action //test_ref/cpp/func/Action //test_ref/cpp/ftmplt/IOEventSource/Action //test_ref/cpp/defn/Action //test_ref/cpp/macro/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="function">Action</span><!-- /a -->)(
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	    ...); 
END OF OBJECT


OBJECT: eventChainNext (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/eventChainNext //test_ref/cpp/data/IOEventSource/eventChainNext //test_ref/cpp/data/eventChainNext //test_ref/cpp/clconst/IOEventSource/eventChainNext " machineGenerated="true" --><span class="var">eventChainNext</span><!-- /a -->; 
END OF OBJECT


OBJECT: owner (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/owner //test_ref/cpp/data/IOEventSource/owner //test_ref/cpp/data/owner //test_ref/cpp/clconst/IOEventSource/owner " machineGenerated="true" --><span class="var">owner</span><!-- /a -->; 
END OF OBJECT


OBJECT: action (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/action //test_ref/cpp/data/IOEventSource/action //test_ref/cpp/data/action //test_ref/cpp/clconst/IOEventSource/action " machineGenerated="true" --><span class="var">action</span><!-- /a -->; 
END OF OBJECT


OBJECT: enabled (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/enabled //test_ref/cpp/data/IOEventSource/enabled //test_ref/cpp/data/enabled //test_ref/cpp/clconst/IOEventSource/enabled " machineGenerated="true" --><span class="var">enabled</span><!-- /a -->; 
END OF OBJECT


OBJECT: workLoop (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/workLoop //test_ref/cpp/data/IOEventSource/workLoop //test_ref/cpp/data/workLoop //test_ref/cpp/clconst/IOEventSource/workLoop " machineGenerated="true" --><span class="var">workLoop</span><!-- /a -->; 
END OF OBJECT



$209952|-=: TOP LEVEL COMMENT PARSE VALUES :=-
inHeader: 0
inClass: 1
inInterface: 0
inCPPHeader: 0
inOCCHeader: 0
inPerlScript: 0
inShellScript: 0
inPHPScript: 0
inJavaSource: 0
inFunctionGroup: 0
inGroup: 0
inFunction: 0
inPDefine: 0
inTypedef: 0
inUnion: 0
inStruct: 0
inConstant: 0
inVar: 0
inEnum: 0
inMethod: 0
inAvailabilityMacro: 0
inUnknown: 0
classType: unknown
inputCounter: 0
blockOffset: 0
fullpath: /test_suite_bogus_path/class_3.test
-=: BLOCKPARSE PARSER STATE KEYS :=-
$parserState->{FULLPATH} => /test_suite_bogus_path/class_3.test
$parserState->{ISFORWARDDECLARATION} => 0
$parserState->{NEXTTOKENNOCPP} => 0
$parserState->{availability} => 
$parserState->{backslashcount} => 0
$parserState->{basetype} => 
$parserState->{bracePending} => 0
$parserState->{callbackIsTypedef} => 0
$parserState->{callbackName} => 
$parserState->{callbackNamePending} => -1
$parserState->{categoryClass} => 
$parserState->{classNameFound} => 1
$parserState->{classtype} => class
$parserState->{forceClassDone} => 1
$parserState->{forceClassName} => IOEventSource
$parserState->{forceClassSuper} =>  public OSObject 
$parserState->{freezeStack} => ARRAY(OBJID)
$parserState->{freezereturn} => 1
$parserState->{frozensodname} => 
$parserState->{functionReturnsCallback} => 0
$parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{inBrackets} => 0
$parserState->{inChar} => 0
$parserState->{inClass} => 1
$parserState->{inComment} => 0
$parserState->{inInlineComment} => 0
$parserState->{inMacro} => 0
$parserState->{inMacroLine} => 0
$parserState->{inOperator} => 0
$parserState->{inPrivateParamTypes} => 0
$parserState->{inString} => 0
$parserState->{inTemplate} => 0
$parserState->{initbsCount} => 0
$parserState->{inputCounter} => 67
$parserState->{kr_c_function} => 0
$parserState->{kr_c_name} => 
$parserState->{lang} => C
$parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{lastsymbol} => ;
$parserState->{macroNoTrunc} => 1
$parserState->{name} => 
$parserState->{namePending} => 0
$parserState->{noInsert} => 0
$parserState->{occmethod} => 0
$parserState->{occmethodname} => 
$parserState->{occparmlabelfound} => 4
$parserState->{onlyComments} => 0
$parserState->{parsedParamList} => ARRAY(OBJID)
$parserState->{parsedParamParse} => 1
$parserState->{posstypes} => 
$parserState->{posstypesPending} => 0
$parserState->{pplStack} => ARRAY(OBJID)
$parserState->{preEqualsSymbol} => 
$parserState->{preTemplateSymbol} => 
$parserState->{preclasssodtype} => class
$parserState->{prekeywordsodname} => 
$parserState->{prekeywordsodtype} => 
$parserState->{returntype} => class IOEventSource : public OSObject  
$parserState->{seenBraces} => 0
$parserState->{seenMacroPart} => 0
$parserState->{seenTilde} => 0
$parserState->{simpleTDcontents} => 
$parserState->{simpleTypedef} => 0
$parserState->{sodclass} => class
$parserState->{sodname} => OSObject
$parserState->{sodtype} =>  public
$parserState->{sodtypeclasstoken} => class
$parserState->{stackFrozen} => 0
$parserState->{startOfDec} => 1
$parserState->{storeDec} => 
$parserState->{sublang} => C
$parserState->{temponlyComments} => 0
$parserState->{treePopTwo} => 0
$parserState->{value} => 
$parserState->{valuepending} => 0
-=: BLOCKPARSE RETURN VALUES :=-
newcount: 67
typelist: class
namelist: IOEventSource
posstypes:   OSObject 
value: 
returntype: public
pridec: 
simpleTDcontents: 
bpavail: 
blockOffset: 86
conformsToList: 
functionContents: 
extendsClass: 
implementsClass: 
-=: LIST OF PARSED PARAMETERS :=-
-=: DUMP OF PARSE TREE :=-
+---class
+--- 
+---IOEventSource
+--- 
+---:
+--- 
+---public
+--- 
+---OSObject
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSDeclareAbstractStructors (HAS STATE)
|   +---(
|   |   +---IOEventSource
|   |   +---)
|   +---[ NEWLINE ]
|   +---     
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---IOWorkLoop
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---
@typedef Action
|   |   +---
@discussion Placeholder type for C++ function overloading discrimination.
|   |   +---
As the all event sources require an action and it has to be stored somewhere
|   |   +---
and be of some type, this is that type.
|   |   +---
@param owner
|   |   +---
Target of the function, can be used as a refcon.  The owner is set
|   |   +---
during initialisation.   Note if a C++ function was specified this parameter
|   |   +---
is implicitly the first paramter in the target member function's
|   |   +---
parameter list.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-typedef (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---(
|   |   +---*
|   |   +---Action
|   |   +---)
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---.
|   |   +---.
|   |   +---.
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var eventChainNext 
|   |   +---
The next event source in the event chain. nil at end of chain. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOEventSource (HAS STATE)
|   +--- 
|   +---*
|   +---eventChainNext
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var owner The owner object called when an event has been delivered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSObject (HAS STATE)
|   +--- 
|   +---*
|   +---owner
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var action
|   |   +---
The action method called when an event has been delivered 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-Action (HAS STATE)
|   +--- 
|   +---action
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var enabled 
|   |   +---
Is this event source enabled to deliver requests to the work-loop. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-bool (HAS STATE)
|   +--- 
|   +---enabled
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var workLoop What is the work-loop for this event source. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOWorkLoop (HAS STATE)
|   +--- 
|   +---*
|   +---workLoop
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---     
|   |   +---
@function getID
|   |   +---
HeaderDoc test of multiline inline function definition.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-int (HAS STATE)
|   +--- 
|   +---getID
|   +---(
|   |   +---)
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function init
|   |   +---
@abstract Primary initialiser for the IOEventSource class.
|   |   +---
@throws halibut
|   |   +---
@throws mackeral
|   |   +---
@throws peanuts
|   |   +---
@param owner
|   |   +---
Owner of this instance of an event source.  Used as the first parameter
|   |   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   |   +---
be as no member functions will be called directly in it.  It can just be a
|   |   +---
refcon for a client routine.
|   |   +---
@param action
|   |   +---
Pointer to C call out function.  Action is a pointer to a C function
|   |   +---
that gets called when this event source has outstanding work.  It will usually
|   |   +---
be called by the checkForWork member function.  The first parameter of the
|   |   +---
action call out will always be the owner, this allows C++ member functions to
|   |   +---
be used as actions.  Defaults to 0.
|   |   +---
@result true if the inherited classes and this instance initialise
|   |   +---
successfully.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---init
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkForWork
|   |   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   |   +---
scheduling.
|   |   +---
@discussion This function will be called to request a subclass to check
|   |   +---
it's internal state for any work to do and then to call out the owner/action.
|   |   +---
@param moreP
|   |   +---
Pointer to the more-work output variable.  Set to true if this function
|   |   +---
needs to be called again before all its outstanding events have been processed.
|   |   +---
@param wakeupTimeP
|   |   +---
Pointer to no-later wake up time output variable.  Return variable to
|   |   +---
indicate when this object wishes to be called again; used for timeouts.
|   |   +---
Note the checkForWork method may be called before the timeout fires.
|   |   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   |   +---
requested.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---checkForWork
|   +---(
|   |   +---bool
|   |   +--- 
|   |   +---*
|   |   +---moreP
|   |   +---,
|   |   +--- 
|   |   +---mach_timespec_t
|   |   +--- 
|   |   +---*
|   |   +---wakeupTimeP
|   |   +---)
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setWorkLoop
|   |   +---
@abstract Set'ter for workLoop variable.
|   |   +---
@param workLoop
|   |   +---
Target work-loop of this event source instance.  A subclass of
|   |   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   |   +---
functions.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setWorkLoop
|   +---(
|   |   +---IOWorkLoop
|   |   +--- 
|   |   +---*
|   |   +---workLoop
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setNext
|   |   +---
@abstract Set'ter for eventChainNext variable.
|   |   +---
@param next 
|   |   +---
Pointer to another IOEventSource instance.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setNext
|   +---(
|   |   +---IOEventSource
|   |   +--- 
|   |   +---*
|   |   +---next
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getNext
|   |   +---
@abstract Get'ter for eventChainNext variable.
|   |   +---
@result value of eventChainNext.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +--- 
|   +---*
|   +---getNext
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setAction
|   |   +---
@abstract Set'ter for action variable.
|   |   +---
@param action
|   |   +---
Pointer to a C function of type IOEventSource::Action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setAction
|   +---(
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getAction
|   |   +---
@abstract Get'ter for action variable.
|   |   +---
@result value of action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---getAction
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function enable
|   |   +---
@abstract Enable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.  Calling this function will cause the
|   |   +---
work-loop to be signalled so that a checkForWork is performed.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---enable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function disable
|   |   +---
@abstract Disable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---disable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function isEnabled
|   |   +---
@abstract Get'ter for enable variable.
|   |   +---
@result true if enabled.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---isEnabled
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getWorkLoop
|   |   +---
@abstract Get'ter for workLoop variable.
|   |   +---
@result value of workLoop.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---getWorkLoop
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function onThread
|   |   +---
@abstract Convenience function for workLoop->onThread.
|   |   +---
@result true if called on the work-loop thread.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---onThread
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
-=: COMPUTED VALUE :=-
SUCCESS: 0
VALUE: 0
-=: CPP CHANGES :=-
NO CPP CHANGES
-=: FOUND MATCH :=-
1
-=: NAMED OBJECTS :=-
TREE COUNT: 0
INDEX GROUP: 
IS BLOCK: 
OBJECT TYPE: HeaderDoc::Header
NAME: class 3
APIUID: //test_ref/doc/header/class_3.test
ABSTRACT: ""
DISCUSSION: "<p></p>"
UPDATED: ""
COPYRIGHT: ""
HTMLMETA: ""
PRIVATEDECLARATION: ""
GROUP: ""
INDEXGROUP: ""
THROWS: ""
XMLTHROWS: ""
UPDATED: ""
LINKAGESTATE: ""
ACCESSCONTROL: ""
AVAILABILITY: ""
LINKUID: ""
ORIGCLASS: ""
ISDEFINE: ""
ISTEMPLATE: ""
VALUE: "UNKNOWN"
RETURNTYPE: ""
LINENUM: ""
CLASS: "HeaderDoc::Header"
MASTERENUM: ""
APIREFSETUPDONE: "1"
TPCDONE: ""
NOREGISTERUID: ""
SUPPRESSCHILDREN: ""
NAMELINE_DISCUSSION: ""
HIDEDOC: ""
HIDESINGLETONS: ""
HIDECONTENTS: ""
MAINOBJECT: ""
LIST ATTRIBUTES: 
SHORT ATTRIBUTES: 
LONG ATTRIBUTES: 
    TREE COUNT: 1
    INDEX GROUP: 
    IS BLOCK: 
    OBJECT TYPE: HeaderDoc::CPPClass
    NAME: IOEventSource
    APIUID: 
    ABSTRACT: "<p>Abstract class for all work-loop event sources.
"
    DISCUSSION: "<p>The IOEventSource declares the abstract super class that all
event sources must inherit from if an IOWorkLoop is to receive events
from them.
</p>
<p>An event source can represent any event that should cause the work-loop of a
device to wake up and perform work.  Two examples of event sources are the
IOInterruptEventSource which delivers interrupt notifications and IOCommandGate
which delivers command requests.
</p>
<p>A kernel module can always use the work-loop model for serialising access to
anything at all.  The IOEventSource is used for communicating events to the
work-loop, and the chain of event sources should be used to walk the possible
event sources and demultipex them.  Note a particular instance of an event
source may only be a member of 1 linked list chain.  If you need to move it
between chains than make sure it is removed from the original chain before
attempting to move it.
</p>
<p>The IOEventSource makes no attempt to maintain the consitency of it's internal
data across multi-threading.  It is assumed that the user of these basic tools
will protect the data that these objects represent in some sort of device wide
instance lock.  For example the IOWorkLoop maintains the event chain by handing
off change request to its own thread and thus single threading access to its
state.
</p>
<p>All subclasses of the IOEventSource are expected to implement the
checkForWork()
member function.
</p>
<p>checkForWork() is the key method in this class.  It is called by some work-loop
when convienient and is expected to evaluate it's internal state and determine
if an event has occured since the last call.  In the case of an event having
occurred then the instance defined target(owner)/action will be called.  The
action is stored as an ordinary C function pointer but the first parameter is
always the owner.  This means that a C++ member function can be used as an
action function though this depends on the ABI.
</p>
<p>Although the eventChainNext variable contains a reference to the next event
source in the chain this reference is not retained.  The list 'owner' i.e. the
client that creates the event, not the work-loop, is expected to retain the
source.
"
    UPDATED: "March 07, 2007"
    COPYRIGHT: ""
    HTMLMETA: ""
    PRIVATEDECLARATION: ""
    GROUP: ""
    INDEXGROUP: ""
    THROWS: " sandwiches<br>
"
    XMLTHROWS: "<throw> sandwiches</throw>
"
    UPDATED: "March 07, 2007"
    LINKAGESTATE: ""
    ACCESSCONTROL: ""
    AVAILABILITY: ""
    LINKUID: ""
    ORIGCLASS: ""
    ISDEFINE: ""
    ISTEMPLATE: ""
    VALUE: "UNKNOWN"
    RETURNTYPE: ""
    LINENUM: ""
    CLASS: "HeaderDoc::CPPClass"
    MASTERENUM: ""
    APIREFSETUPDONE: "1"
    TPCDONE: ""
    NOREGISTERUID: ""
    SUPPRESSCHILDREN: "0"
    NAMELINE_DISCUSSION: ""
    HIDEDOC: ""
    HIDESINGLETONS: ""
    HIDECONTENTS: ""
    MAINOBJECT: ""
    LIST ATTRIBUTES: 
    SHORT ATTRIBUTES: <p><b>Superclass</b></p>

<p><!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/cpp/econst/OSObject //test_ref/cpp/data/OSObject //test_ref/cpp/clconst/OSObject //test_ref/cpp/instm/OSObject //test_ref/cpp/clm/OSObject //test_ref/cpp/intfcm/OSObject //test_ref/cpp/intfm/OSObject //test_ref/cpp/func/OSObject //test_ref/cpp/ftmplt/OSObject //test_ref/cpp/defn/OSObject //test_ref/cpp/macro/OSObject //test_ref/doc/com/intfm/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" -->OSObject<!-- /a --></p>
<p><b>Declared In</b></p><p><a href="../../index.html" logicalPath="//test_ref/doc/header/class_3.test" target="_top" machineGenerated="true">class 3</a></p>

    LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: OSDeclareAbstractStructors
        APIUID: //test_ref/cpp/instm/IOEventSource/OSDeclareAbstractStructors//(IOEventSource)
        ABSTRACT: ""
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: 
            TYPE:  IOEventSource
            APIUID: //test_ref/cpp/internal_temporary_object/IOEventSource
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getID
        APIUID: //test_ref/cpp/instm/IOEventSource/getID/int/()
        ABSTRACT: ""
        DISCUSSION: "<p>HeaderDoc test of multiline inline function definition."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " int"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: init
        APIUID: //test_ref/cpp/instm/IOEventSource/init/bool/(OSObject*,IOEventSource::Action)
        ABSTRACT: "<p>Primary initialiser for the IOEventSource class.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: " halibut<br>
 mackeral<br>
 peanuts<br>
"
        XMLTHROWS: "<throw> halibut</throw>
<throw> mackeral</throw>
<throw> peanuts</throw>
"
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: OSObject *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: IOEventSource :: Action
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/init/owner
            ABSTRACT: ""
            DISCUSSION: "<p>Owner of this instance of an event source.  Used as the first parameter
of the action callout.  Owner will generally be an OSObject it doesn't have to
be as no member functions will be called directly in it.  It can just be a
refcon for a client routine."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/init/action
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to C call out function.  Action is a pointer to a C function
that gets called when this event source has outstanding work.  It will usually
be called by the checkForWork member function.  The first parameter of the
action call out will always be the owner, this allows C++ member functions to
be used as actions.  Defaults to 0."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkForWork
        APIUID: //test_ref/cpp/instm/IOEventSource/checkForWork/void/(bool*,mach_timespec_t*)
        ABSTRACT: "<p>Pure Virtual member function used by IOWorkLoop for work
scheduling.
"
        DISCUSSION: "<p>This function will be called to request a subclass to check
it's internal state for any work to do and then to call out the owner/action.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: moreP
            TYPE: bool *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: wakeupTimeP
            TYPE: mach_timespec_t *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: moreP
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/checkForWork/moreP
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to the more-work output variable.  Set to true if this function
needs to be called again before all its outstanding events have been processed."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: wakeupTimeP
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/checkForWork/wakeupTimeP
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to no-later wake up time output variable.  Return variable to
indicate when this object wishes to be called again; used for timeouts.
Note the checkForWork method may be called before the timeout fires.
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
requested."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setWorkLoop
        APIUID: //test_ref/cpp/instm/IOEventSource/setWorkLoop/void/(IOWorkLoop*)
        ABSTRACT: "<p>Set'ter for workLoop variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: workLoop
            TYPE: IOWorkLoop *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: workLoop
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setWorkLoop/workLoop
            ABSTRACT: ""
            DISCUSSION: "<p>Target work-loop of this event source instance.  A subclass of
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
functions."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setNext
        APIUID: //test_ref/cpp/instm/IOEventSource/setNext/void/(IOEventSource*)
        ABSTRACT: "<p>Set'ter for eventChainNext variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: next
            TYPE: IOEventSource *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: next
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setNext/next
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to another IOEventSource instance."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getNext
        APIUID: //test_ref/cpp/instm/IOEventSource/getNext/IOEventSource*/()
        ABSTRACT: "<p>Get'ter for eventChainNext variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOEventSource *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: setAction
        APIUID: //test_ref/cpp/instm/IOEventSource/setAction/void/(IOEventSource::Action)
        ABSTRACT: "<p>Set'ter for action variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: IOEventSource :: Action
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: action
            TYPE: 
            APIUID: //test_ref/doc/functionparam/IOEventSource/setAction/action
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer to a C function of type IOEventSource::Action."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getAction
        APIUID: //test_ref/cpp/instm/IOEventSource/getAction/IOEventSource::Action/()
        ABSTRACT: "<p>Get'ter for action variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOEventSource :: Action"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: enable
        APIUID: //test_ref/cpp/instm/IOEventSource/enable/void/()
        ABSTRACT: "<p>Enable event source.
"
        DISCUSSION: "<p>A subclass implementation is expected to respect the enabled
state when checkForWork is called.  Calling this function will cause the
work-loop to be signalled so that a checkForWork is performed.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: disable
        APIUID: //test_ref/cpp/instm/IOEventSource/disable/void/()
        ABSTRACT: "<p>Disable event source.
"
        DISCUSSION: "<p>A subclass implementation is expected to respect the enabled
state when checkForWork is called.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: isEnabled
        APIUID: //test_ref/cpp/instm/IOEventSource/isEnabled/bool/()
        ABSTRACT: "<p>Get'ter for enable variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getWorkLoop
        APIUID: //test_ref/cpp/instm/IOEventSource/getWorkLoop/IOWorkLoop*/()
        ABSTRACT: "<p>Get'ter for workLoop variable.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual IOWorkLoop *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: onThread
        APIUID: //test_ref/cpp/instm/IOEventSource/onThread/bool/()
        ABSTRACT: "<p>Convenience function for workLoop->onThread.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Typedef
        NAME: Action
        APIUID: //test_ref/cpp/tdef/IOEventSource/Action
        ABSTRACT: ""
        DISCUSSION: "<p>Placeholder type for C++ function overloading discrimination.
As the all event sources require an action and it has to be stored somewhere
and be of some type, this is that type.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::Typedef"
        MASTERENUM: "0"
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: OSObject *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: ...
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: owner
            TYPE: 
            APIUID: //test_ref/doc/typedeffield/IOEventSource/Action/owner
            ABSTRACT: ""
            DISCUSSION: "<p>Target of the function, can be used as a refcon.  The owner is set
during initialisation.   Note if a C++ function was specified this parameter
is implicitly the first paramter in the target member function's
parameter list."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: 
            LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: eventChainNext
        APIUID: //test_ref/cpp/data/IOEventSource/eventChainNext
        ABSTRACT: ""
        DISCUSSION: "<p>The next event source in the event chain. nil at end of chain."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "IOEventSource *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: owner
        APIUID: //test_ref/cpp/data/IOEventSource/owner
        ABSTRACT: ""
        DISCUSSION: "<p>The owner object called when an event has been delivered.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "The owner object called when an event has been delivered."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: action
        APIUID: //test_ref/cpp/data/IOEventSource/action
        ABSTRACT: ""
        DISCUSSION: "<p>The action method called when an event has been delivered"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "Action"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: enabled
        APIUID: //test_ref/cpp/data/IOEventSource/enabled
        ABSTRACT: ""
        DISCUSSION: "<p>Is this event source enabled to deliver requests to the work-loop."
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: workLoop
        APIUID: //test_ref/cpp/data/IOEventSource/workLoop
        ABSTRACT: ""
        DISCUSSION: "<p>What is the work-loop for this event source.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "IOWorkLoop *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "What is the work-loop for this event source."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: 
        LONG ATTRIBUTES: 
-=: NAMED OBJECT PARSE TREES :=-
OBJECT: IOEventSource (HeaderDoc::CPPClass)
+---class
+--- 
+---IOEventSource
+--- 
+---:
+--- 
+---public
+--- 
+---OSObject
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSDeclareAbstractStructors (HAS STATE)
|   +---(
|   |   +---IOEventSource
|   |   +---)
|   +---[ NEWLINE ]
|   +---     
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---IOWorkLoop
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---
@typedef Action
|   |   +---
@discussion Placeholder type for C++ function overloading discrimination.
|   |   +---
As the all event sources require an action and it has to be stored somewhere
|   |   +---
and be of some type, this is that type.
|   |   +---
@param owner
|   |   +---
Target of the function, can be used as a refcon.  The owner is set
|   |   +---
during initialisation.   Note if a C++ function was specified this parameter
|   |   +---
is implicitly the first paramter in the target member function's
|   |   +---
parameter list.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-typedef (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---(
|   |   +---*
|   |   +---Action
|   |   +---)
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---.
|   |   +---.
|   |   +---.
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var eventChainNext 
|   |   +---
The next event source in the event chain. nil at end of chain. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOEventSource (HAS STATE)
|   +--- 
|   +---*
|   +---eventChainNext
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var owner The owner object called when an event has been delivered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-OSObject (HAS STATE)
|   +--- 
|   +---*
|   +---owner
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var action
|   |   +---
The action method called when an event has been delivered 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-Action (HAS STATE)
|   +--- 
|   +---action
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var enabled 
|   |   +---
Is this event source enabled to deliver requests to the work-loop. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-bool (HAS STATE)
|   +--- 
|   +---enabled
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var workLoop What is the work-loop for this event source. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-IOWorkLoop (HAS STATE)
|   +--- 
|   +---*
|   +---workLoop
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +---     
|   |   +---
@function getID
|   |   +---
HeaderDoc test of multiline inline function definition.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-int (HAS STATE)
|   +--- 
|   +---getID
|   +---(
|   |   +---)
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function init
|   |   +---
@abstract Primary initialiser for the IOEventSource class.
|   |   +---
@throws halibut
|   |   +---
@throws mackeral
|   |   +---
@throws peanuts
|   |   +---
@param owner
|   |   +---
Owner of this instance of an event source.  Used as the first parameter
|   |   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   |   +---
be as no member functions will be called directly in it.  It can just be a
|   |   +---
refcon for a client routine.
|   |   +---
@param action
|   |   +---
Pointer to C call out function.  Action is a pointer to a C function
|   |   +---
that gets called when this event source has outstanding work.  It will usually
|   |   +---
be called by the checkForWork member function.  The first parameter of the
|   |   +---
action call out will always be the owner, this allows C++ member functions to
|   |   +---
be used as actions.  Defaults to 0.
|   |   +---
@result true if the inherited classes and this instance initialise
|   |   +---
successfully.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---init
|   +---(
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---owner
|   |   +---,
|   |   +--- 
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkForWork
|   |   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   |   +---
scheduling.
|   |   +---
@discussion This function will be called to request a subclass to check
|   |   +---
it's internal state for any work to do and then to call out the owner/action.
|   |   +---
@param moreP
|   |   +---
Pointer to the more-work output variable.  Set to true if this function
|   |   +---
needs to be called again before all its outstanding events have been processed.
|   |   +---
@param wakeupTimeP
|   |   +---
Pointer to no-later wake up time output variable.  Return variable to
|   |   +---
indicate when this object wishes to be called again; used for timeouts.
|   |   +---
Note the checkForWork method may be called before the timeout fires.
|   |   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   |   +---
requested.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---checkForWork
|   +---(
|   |   +---bool
|   |   +--- 
|   |   +---*
|   |   +---moreP
|   |   +---,
|   |   +--- 
|   |   +---mach_timespec_t
|   |   +--- 
|   |   +---*
|   |   +---wakeupTimeP
|   |   +---)
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setWorkLoop
|   |   +---
@abstract Set'ter for workLoop variable.
|   |   +---
@param workLoop
|   |   +---
Target work-loop of this event source instance.  A subclass of
|   |   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   |   +---
functions.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setWorkLoop
|   +---(
|   |   +---IOWorkLoop
|   |   +--- 
|   |   +---*
|   |   +---workLoop
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setNext
|   |   +---
@abstract Set'ter for eventChainNext variable.
|   |   +---
@param next 
|   |   +---
Pointer to another IOEventSource instance.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setNext
|   +---(
|   |   +---IOEventSource
|   |   +--- 
|   |   +---*
|   |   +---next
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getNext
|   |   +---
@abstract Get'ter for eventChainNext variable.
|   |   +---
@result value of eventChainNext.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +--- 
|   +---*
|   +---getNext
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function setAction
|   |   +---
@abstract Set'ter for action variable.
|   |   +---
@param action
|   |   +---
Pointer to a C function of type IOEventSource::Action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---setAction
|   +---(
|   |   +---IOEventSource
|   |   +---::
|   |   +---Action
|   |   +--- 
|   |   +---action
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getAction
|   |   +---
@abstract Get'ter for action variable.
|   |   +---
@result value of action.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---getAction
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function enable
|   |   +---
@abstract Enable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.  Calling this function will cause the
|   |   +---
work-loop to be signalled so that a checkForWork is performed.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---enable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function disable
|   |   +---
@abstract Disable event source.
|   |   +---
@discussion A subclass implementation is expected to respect the enabled
|   |   +---
state when checkForWork is called.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---disable
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function isEnabled
|   |   +---
@abstract Get'ter for enable variable.
|   |   +---
@result true if enabled.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---isEnabled
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getWorkLoop
|   |   +---
@abstract Get'ter for workLoop variable.
|   |   +---
@result value of workLoop.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---getWorkLoop
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function onThread
|   |   +---
@abstract Convenience function for workLoop->onThread.
|   |   +---
@result true if called on the work-loop thread.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---     
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---onThread
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
END OF OBJECT


OBJECT: OSDeclareAbstractStructors (HeaderDoc::Function)
+-*-OSDeclareAbstractStructors (HAS STATE)
+---(
|   +---IOEventSource
|   +---)
+---[ NEWLINE ]
+---     
+---friend
+--- 
+---class
+--- 
+---IOWorkLoop
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +---
@typedef Action
|   +---
@discussion Placeholder type for C++ function overloading discrimination.
|   +---
As the all event sources require an action and it has to be stored somewhere
|   +---
and be of some type, this is that type.
|   +---
@param owner
|   +---
Target of the function, can be used as a refcon.  The owner is set
|   +---
during initialisation.   Note if a C++ function was specified this parameter
|   +---
is implicitly the first paramter in the target member function's
|   +---
parameter list.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-typedef (HAS STATE)
+--- 
+---void
+--- 
+---(
|   +---*
|   +---Action
|   +---)
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---.
|   +---.
|   +---.
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var eventChainNext 
|   +---
The next event source in the event chain. nil at end of chain. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOEventSource (HAS STATE)
+--- 
+---*
+---eventChainNext
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var owner The owner object called when an event has been delivered. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getID (HeaderDoc::Function)
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: init (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: checkForWork (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setWorkLoop (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setNext (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getNext (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: setAction (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getAction (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: enable (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: disable (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: isEnabled (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getWorkLoop (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: onThread (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: Action (HeaderDoc::Typedef)
+-*-typedef (HAS STATE)
+--- 
+---void
+--- 
+---(
|   +---*
|   +---Action
|   +---)
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---.
|   +---.
|   +---.
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var eventChainNext 
|   +---
The next event source in the event chain. nil at end of chain. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOEventSource (HAS STATE)
+--- 
+---*
+---eventChainNext
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var owner The owner object called when an event has been delivered. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: eventChainNext (HeaderDoc::Var)
+-*-IOEventSource (HAS STATE)
+--- 
+---*
+---eventChainNext
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var owner The owner object called when an event has been delivered. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: owner (HeaderDoc::Var)
+-*-OSObject (HAS STATE)
+--- 
+---*
+---owner
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var action
|   +---
The action method called when an event has been delivered 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: action (HeaderDoc::Var)
+-*-Action (HAS STATE)
+--- 
+---action
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var enabled 
|   +---
Is this event source enabled to deliver requests to the work-loop. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: enabled (HeaderDoc::Var)
+-*-bool (HAS STATE)
+--- 
+---enabled
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @var workLoop What is the work-loop for this event source. 
|   +---*/
+---[ NEWLINE ]
+---     
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: workLoop (HeaderDoc::Var)
+-*-IOWorkLoop (HAS STATE)
+--- 
+---*
+---workLoop
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +---     
|   +---
@function getID
|   +---
HeaderDoc test of multiline inline function definition.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+-*-int (HAS STATE)
+--- 
+---getID
+---(
|   +---)
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function init
|   +---
@abstract Primary initialiser for the IOEventSource class.
|   +---
@throws halibut
|   +---
@throws mackeral
|   +---
@throws peanuts
|   +---
@param owner
|   +---
Owner of this instance of an event source.  Used as the first parameter
|   +---
of the action callout.  Owner will generally be an OSObject it doesn't have to
|   +---
be as no member functions will be called directly in it.  It can just be a
|   +---
refcon for a client routine.
|   +---
@param action
|   +---
Pointer to C call out function.  Action is a pointer to a C function
|   +---
that gets called when this event source has outstanding work.  It will usually
|   +---
be called by the checkForWork member function.  The first parameter of the
|   +---
action call out will always be the owner, this allows C++ member functions to
|   +---
be used as actions.  Defaults to 0.
|   +---
@result true if the inherited classes and this instance initialise
|   +---
successfully.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---init
+---(
|   +---OSObject
|   +--- 
|   +---*
|   +---owner
|   +---,
|   +--- 
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkForWork
|   +---
@abstract Pure Virtual member function used by IOWorkLoop for work
|   +---
scheduling.
|   +---
@discussion This function will be called to request a subclass to check
|   +---
it's internal state for any work to do and then to call out the owner/action.
|   +---
@param moreP
|   +---
Pointer to the more-work output variable.  Set to true if this function
|   +---
needs to be called again before all its outstanding events have been processed.
|   +---
@param wakeupTimeP
|   +---
Pointer to no-later wake up time output variable.  Return variable to
|   +---
indicate when this object wishes to be called again; used for timeouts.
|   +---
Note the checkForWork method may be called before the timeout fires.
|   +---
Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
|   +---
requested.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---checkForWork
+---(
|   +---bool
|   +--- 
|   +---*
|   +---moreP
|   +---,
|   +--- 
|   +---mach_timespec_t
|   +--- 
|   +---*
|   +---wakeupTimeP
|   +---)
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setWorkLoop
|   +---
@abstract Set'ter for workLoop variable.
|   +---
@param workLoop
|   +---
Target work-loop of this event source instance.  A subclass of
|   +---
IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
|   +---
functions.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setWorkLoop
+---(
|   +---IOWorkLoop
|   +--- 
|   +---*
|   +---workLoop
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setNext
|   +---
@abstract Set'ter for eventChainNext variable.
|   +---
@param next 
|   +---
Pointer to another IOEventSource instance.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setNext
+---(
|   +---IOEventSource
|   +--- 
|   +---*
|   +---next
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getNext
|   +---
@abstract Get'ter for eventChainNext variable.
|   +---
@result value of eventChainNext.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+--- 
+---*
+---getNext
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function setAction
|   +---
@abstract Set'ter for action variable.
|   +---
@param action
|   +---
Pointer to a C function of type IOEventSource::Action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---setAction
+---(
|   +---IOEventSource
|   +---::
|   +---Action
|   +--- 
|   +---action
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getAction
|   +---
@abstract Get'ter for action variable.
|   +---
@result value of action.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOEventSource
+---::
+---Action
+--- 
+---getAction
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function enable
|   +---
@abstract Enable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.  Calling this function will cause the
|   +---
work-loop to be signalled so that a checkForWork is performed.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---enable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function disable
|   +---
@abstract Disable event source.
|   +---
@discussion A subclass implementation is expected to respect the enabled
|   +---
state when checkForWork is called.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---disable
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function isEnabled
|   +---
@abstract Get'ter for enable variable.
|   +---
@result true if enabled.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---isEnabled
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getWorkLoop
|   +---
@abstract Get'ter for workLoop variable.
|   +---
@result value of workLoop.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---IOWorkLoop
+--- 
+---*
+---getWorkLoop
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function onThread
|   +---
@abstract Convenience function for workLoop->onThread.
|   +---
@result true if called on the work-loop thread.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---     
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---onThread
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT



-=: HTML OUTPUT OF PARSE TREES :=-
OBJECT: IOEventSource (HeaderDoc::CPPClass)
	<span class="keyword">class</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> : <span class="keyword">public</span> <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> { 
	    <!-- a logicalPath="//test_ref/cpp/instm/OSDeclareAbstractStructors //test_ref/cpp/clm/OSDeclareAbstractStructors //test_ref/cpp/intfcm/OSDeclareAbstractStructors //test_ref/cpp/intfm/OSDeclareAbstractStructors //test_ref/cpp/func/OSDeclareAbstractStructors //test_ref/cpp/ftmplt/OSDeclareAbstractStructors //test_ref/cpp/defn/OSDeclareAbstractStructors //test_ref/cpp/macro/OSDeclareAbstractStructors //test_ref/doc/anysymbol/OSDeclareAbstractStructors" machineGenerated="true" --><span class="function">OSDeclareAbstractStructors</span><!-- /a -->(
	        <span class="param">IOEventSource</span>) <span class="keyword">friend</span> <span class="keyword">class</span> <!-- a logicalPath="//test_ref/cpp/econst/IOWorkLoop //test_ref/cpp/data/IOWorkLoop //test_ref/cpp/clconst/IOWorkLoop " machineGenerated="true" --><span class="var">IOWorkLoop</span><!-- /a -->;  
	    <span class="keyword">public</span>: <span class="comment">/*!
	@typedef Action
	@discussion Placeholder type for C++ function overloading discrimination.
	As the all event sources require an action and it has to be stored somewhere
	and be of some type, this is that type.
	@param owner
	Target of the function, can be used as a refcon.  The owner is set
	during initialisation.   Note if a C++ function was specified this parameter
	is implicitly the first paramter in the target member function's
	parameter list.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">typedef</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> (<span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/Action //test_ref/cpp/clm/Action //test_ref/cpp/intfcm/Action //test_ref/cpp/intfm/Action //test_ref/cpp/func/Action //test_ref/cpp/ftmplt/Action //test_ref/cpp/defn/Action //test_ref/cpp/macro/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="function">Action</span><!-- /a -->)(
	        <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	        ...);  
	    <span class="keyword">protected</span>: <span class="comment">/*! @var eventChainNext </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/eventChainNext //test_ref/cpp/data/eventChainNext //test_ref/cpp/clconst/eventChainNext " machineGenerated="true" --><span class="var">eventChainNext</span><!-- /a -->;  
	    <span class="comment">/*! @var owner The owner object called when an event has been delivered. </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/owner //test_ref/cpp/data/owner //test_ref/cpp/clconst/owner " machineGenerated="true" --><span class="var">owner</span><!-- /a -->;  
	    <span class="comment">/*! @var action</span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/action //test_ref/cpp/data/action //test_ref/cpp/clconst/action " machineGenerated="true" --><span class="var">action</span><!-- /a -->;  
	    <span class="comment">/*! @var enabled </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/enabled //test_ref/cpp/data/enabled //test_ref/cpp/clconst/enabled " machineGenerated="true" --><span class="var">enabled</span><!-- /a -->;  
	    <span class="comment">/*! @var workLoop What is the work-loop for this event source. </span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/workLoop //test_ref/cpp/data/workLoop //test_ref/cpp/clconst/workLoop " machineGenerated="true" --><span class="var">workLoop</span><!-- /a -->;  
	    <span class="comment">/*! 
	@function getID
	HeaderDoc test of multiline inline function definition.</span>
	        <span class="comment">*/</span>
	    <!-- a logicalPath="//test_ref/cpp/cl/int //test_ref/cpp/tdef/int //test_ref/cpp/tag/int //test_ref/cpp/struct/int //test_ref/cpp/intf/int //test_ref/doc/anysymbol/int" machineGenerated="true" --><span class="type">int</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/getID //test_ref/cpp/clm/getID //test_ref/cpp/intfcm/getID //test_ref/cpp/intfm/getID //test_ref/cpp/func/getID //test_ref/cpp/ftmplt/getID //test_ref/cpp/defn/getID //test_ref/cpp/macro/getID //test_ref/doc/anysymbol/getID" machineGenerated="true" --><span class="function">getID</span><!-- /a -->()   <span class="comment">/*! @function init
	@abstract Primary initialiser for the IOEventSource class.
	@throws halibut
	@throws mackeral
	@throws peanuts
	@param owner
	Owner of this instance of an event source.  Used as the first parameter
	of the action callout.  Owner will generally be an OSObject it doesn't have to
	be as no member functions will be called directly in it.  It can just be a
	refcon for a client routine.
	@param action
	Pointer to C call out function.  Action is a pointer to a C function
	that gets called when this event source has outstanding work.  It will usually
	be called by the checkForWork member function.  The first parameter of the
	action call out will always be the owner, this allows C++ member functions to
	be used as actions.  Defaults to 0.
	@result true if the inherited classes and this instance initialise
	successfully.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/init //test_ref/cpp/clm/init //test_ref/cpp/intfcm/init //test_ref/cpp/intfm/init //test_ref/cpp/func/init //test_ref/cpp/ftmplt/init //test_ref/cpp/defn/init //test_ref/cpp/macro/init //test_ref/doc/anysymbol/init" machineGenerated="true" --><span class="function">init</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/cl/action //test_ref/cpp/tdef/action //test_ref/cpp/tag/action //test_ref/cpp/struct/action //test_ref/cpp/intf/action //test_ref/doc/anysymbol/action" machineGenerated="true" --><span class="type">action</span><!-- /a --> = <span class="number">0</span>);  
	    <span class="comment">/*! @function checkForWork
	@abstract Pure Virtual member function used by IOWorkLoop for work
	scheduling.
	@discussion This function will be called to request a subclass to check
	it's internal state for any work to do and then to call out the owner/action.
	@param moreP
	Pointer to the more-work output variable.  Set to true if this function
	needs to be called again before all its outstanding events have been processed.
	@param wakeupTimeP
	Pointer to no-later wake up time output variable.  Return variable to
	indicate when this object wishes to be called again; used for timeouts.
	Note the checkForWork method may be called before the timeout fires.
	Defaults to MACH_TIMESPEC_ZERO which is interpreted as no timeout
	requested.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/checkForWork //test_ref/cpp/clm/checkForWork //test_ref/cpp/intfcm/checkForWork //test_ref/cpp/intfm/checkForWork //test_ref/cpp/func/checkForWork //test_ref/cpp/ftmplt/checkForWork //test_ref/cpp/defn/checkForWork //test_ref/cpp/macro/checkForWork //test_ref/doc/anysymbol/checkForWork" machineGenerated="true" --><span class="function">checkForWork</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <span class="type">*</span><span class="param">moreP</span>,
	        <!-- a logicalPath="//test_ref/cpp/cl/mach_timespec_t //test_ref/cpp/tdef/mach_timespec_t //test_ref/cpp/tag/mach_timespec_t //test_ref/cpp/struct/mach_timespec_t //test_ref/cpp/intf/mach_timespec_t //test_ref/doc/anysymbol/mach_timespec_t" machineGenerated="true" --><span class="type">mach_timespec_t</span><!-- /a --> <span class="type">*</span><span class="param">wakeupTimeP</span>) = <span class="number">0</span>;  
	    <span class="comment">/*! @function setWorkLoop
	@abstract Set'ter for workLoop variable.
	@param workLoop
	Target work-loop of this event source instance.  A subclass of
	IOWorkLoop that at least reacts to signalWorkAvailable() and onThread
	functions.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setWorkLoop //test_ref/cpp/clm/setWorkLoop //test_ref/cpp/intfcm/setWorkLoop //test_ref/cpp/intfm/setWorkLoop //test_ref/cpp/func/setWorkLoop //test_ref/cpp/ftmplt/setWorkLoop //test_ref/cpp/defn/setWorkLoop //test_ref/cpp/macro/setWorkLoop //test_ref/doc/anysymbol/setWorkLoop" machineGenerated="true" --><span class="function">setWorkLoop</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><span class="param">workLoop</span>);  
	    <span class="comment">/*! @function setNext
	@abstract Set'ter for eventChainNext variable.
	@param next 
	Pointer to another IOEventSource instance.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setNext //test_ref/cpp/clm/setNext //test_ref/cpp/intfcm/setNext //test_ref/cpp/intfm/setNext //test_ref/cpp/func/setNext //test_ref/cpp/ftmplt/setNext //test_ref/cpp/defn/setNext //test_ref/cpp/macro/setNext //test_ref/doc/anysymbol/setNext" machineGenerated="true" --><span class="function">setNext</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><span class="param">next</span>);  
	    <span class="comment">/*! @function getNext
	@abstract Get'ter for eventChainNext variable.
	@result value of eventChainNext.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/getNext //test_ref/cpp/clm/getNext //test_ref/cpp/intfcm/getNext //test_ref/cpp/intfm/getNext //test_ref/cpp/func/getNext //test_ref/cpp/ftmplt/getNext //test_ref/cpp/defn/getNext //test_ref/cpp/macro/getNext //test_ref/doc/anysymbol/getNext" machineGenerated="true" --><span class="function">getNext</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="keyword">public</span>: <span class="comment">/*! @function setAction
	@abstract Set'ter for action variable.
	@param action
	Pointer to a C function of type IOEventSource::Action.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/setAction //test_ref/cpp/clm/setAction //test_ref/cpp/intfcm/setAction //test_ref/cpp/intfm/setAction //test_ref/cpp/func/setAction //test_ref/cpp/ftmplt/setAction //test_ref/cpp/defn/setAction //test_ref/cpp/macro/setAction //test_ref/doc/anysymbol/setAction" machineGenerated="true" --><span class="function">setAction</span><!-- /a -->(
	        <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <span class="param">action</span>);  
	    <span class="comment">/*! @function getAction
	@abstract Get'ter for action variable.
	@result value of action.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/getAction //test_ref/cpp/clm/getAction //test_ref/cpp/intfcm/getAction //test_ref/cpp/intfm/getAction //test_ref/cpp/func/getAction //test_ref/cpp/ftmplt/getAction //test_ref/cpp/defn/getAction //test_ref/cpp/macro/getAction //test_ref/doc/anysymbol/getAction" machineGenerated="true" --><span class="function">getAction</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function enable
	@abstract Enable event source.
	@discussion A subclass implementation is expected to respect the enabled
	state when checkForWork is called.  Calling this function will cause the
	work-loop to be signalled so that a checkForWork is performed.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/enable //test_ref/cpp/clm/enable //test_ref/cpp/intfcm/enable //test_ref/cpp/intfm/enable //test_ref/cpp/func/enable //test_ref/cpp/ftmplt/enable //test_ref/cpp/defn/enable //test_ref/cpp/macro/enable //test_ref/doc/anysymbol/enable" machineGenerated="true" --><span class="function">enable</span><!-- /a -->();  
	    <span class="comment">/*! @function disable
	@abstract Disable event source.
	@discussion A subclass implementation is expected to respect the enabled
	state when checkForWork is called.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/disable //test_ref/cpp/clm/disable //test_ref/cpp/intfcm/disable //test_ref/cpp/intfm/disable //test_ref/cpp/func/disable //test_ref/cpp/ftmplt/disable //test_ref/cpp/defn/disable //test_ref/cpp/macro/disable //test_ref/doc/anysymbol/disable" machineGenerated="true" --><span class="function">disable</span><!-- /a -->();  
	    <span class="comment">/*! @function isEnabled
	@abstract Get'ter for enable variable.
	@result true if enabled.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/isEnabled //test_ref/cpp/clm/isEnabled //test_ref/cpp/intfcm/isEnabled //test_ref/cpp/intfm/isEnabled //test_ref/cpp/func/isEnabled //test_ref/cpp/ftmplt/isEnabled //test_ref/cpp/defn/isEnabled //test_ref/cpp/macro/isEnabled //test_ref/doc/anysymbol/isEnabled" machineGenerated="true" --><span class="function">isEnabled</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function getWorkLoop
	@abstract Get'ter for workLoop variable.
	@result value of workLoop.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/getWorkLoop //test_ref/cpp/clm/getWorkLoop //test_ref/cpp/intfcm/getWorkLoop //test_ref/cpp/intfm/getWorkLoop //test_ref/cpp/func/getWorkLoop //test_ref/cpp/ftmplt/getWorkLoop //test_ref/cpp/defn/getWorkLoop //test_ref/cpp/macro/getWorkLoop //test_ref/doc/anysymbol/getWorkLoop" machineGenerated="true" --><span class="function">getWorkLoop</span><!-- /a -->() <span class="keyword">const</span>;  
	    <span class="comment">/*! @function onThread
	@abstract Convenience function for workLoop-&gt;onThread.
	@result true if called on the work-loop thread.</span>
	        <span class="comment">*/</span>
	    <span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/onThread //test_ref/cpp/clm/onThread //test_ref/cpp/intfcm/onThread //test_ref/cpp/intfm/onThread //test_ref/cpp/func/onThread //test_ref/cpp/ftmplt/onThread //test_ref/cpp/defn/onThread //test_ref/cpp/macro/onThread //test_ref/doc/anysymbol/onThread" machineGenerated="true" --><span class="function">onThread</span><!-- /a -->() <span class="keyword">const</span>; 
	};  
END OF OBJECT


OBJECT: OSDeclareAbstractStructors (HeaderDoc::Function)
	<!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/OSDeclareAbstractStructors //test_ref/cpp/clm/IOEventSource/OSDeclareAbstractStructors //test_ref/cpp/intfcm/IOEventSource/OSDeclareAbstractStructors //test_ref/cpp/intfm/IOEventSource/OSDeclareAbstractStructors //test_ref/cpp/func/OSDeclareAbstractStructors //test_ref/cpp/ftmplt/IOEventSource/OSDeclareAbstractStructors //test_ref/cpp/defn/OSDeclareAbstractStructors //test_ref/cpp/macro/OSDeclareAbstractStructors //test_ref/doc/anysymbol/OSDeclareAbstractStructors" machineGenerated="true" --><span class="function">OSDeclareAbstractStructors</span><!-- /a -->(
	    <span class="param">IOEventSource</span>) <span class="keyword">friend</span> <span class="keyword">class</span> <!-- a logicalPath="//test_ref/cpp/econst/IOWorkLoop //test_ref/cpp/data/IOEventSource/IOWorkLoop //test_ref/cpp/data/IOWorkLoop //test_ref/cpp/clconst/IOEventSource/IOWorkLoop " machineGenerated="true" --><span class="var">IOWorkLoop</span><!-- /a -->; 
END OF OBJECT


OBJECT: getID (HeaderDoc::Function)
	<!-- a logicalPath="//test_ref/cpp/cl/int //test_ref/cpp/tdef/int //test_ref/cpp/tag/int //test_ref/cpp/struct/int //test_ref/cpp/intf/int //test_ref/doc/anysymbol/int" machineGenerated="true" --><span class="type">int</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getID //test_ref/cpp/clm/IOEventSource/getID //test_ref/cpp/intfcm/IOEventSource/getID //test_ref/cpp/intfm/IOEventSource/getID //test_ref/cpp/func/getID //test_ref/cpp/ftmplt/IOEventSource/getID //test_ref/cpp/defn/getID //test_ref/cpp/macro/getID //test_ref/doc/anysymbol/getID" machineGenerated="true" --><span class="function">getID</span><!-- /a -->() 
END OF OBJECT


OBJECT: init (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/init //test_ref/cpp/clm/IOEventSource/init //test_ref/cpp/intfcm/IOEventSource/init //test_ref/cpp/intfm/IOEventSource/init //test_ref/cpp/func/init //test_ref/cpp/ftmplt/IOEventSource/init //test_ref/cpp/defn/init //test_ref/cpp/macro/init //test_ref/doc/anysymbol/init" machineGenerated="true" --><span class="function">init</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/cl/action //test_ref/cpp/tdef/action //test_ref/cpp/tag/action //test_ref/cpp/struct/action //test_ref/cpp/intf/action //test_ref/doc/anysymbol/action" machineGenerated="true" --><span class="type">action</span><!-- /a --> = <span class="number">0</span>); 
END OF OBJECT


OBJECT: checkForWork (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/checkForWork //test_ref/cpp/clm/IOEventSource/checkForWork //test_ref/cpp/intfcm/IOEventSource/checkForWork //test_ref/cpp/intfm/IOEventSource/checkForWork //test_ref/cpp/func/checkForWork //test_ref/cpp/ftmplt/IOEventSource/checkForWork //test_ref/cpp/defn/checkForWork //test_ref/cpp/macro/checkForWork //test_ref/doc/anysymbol/checkForWork" machineGenerated="true" --><span class="function">checkForWork</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <span class="type">*</span><span class="param">moreP</span>,
	    <!-- a logicalPath="//test_ref/cpp/cl/mach_timespec_t //test_ref/cpp/tdef/mach_timespec_t //test_ref/cpp/tag/mach_timespec_t //test_ref/cpp/struct/mach_timespec_t //test_ref/cpp/intf/mach_timespec_t //test_ref/doc/anysymbol/mach_timespec_t" machineGenerated="true" --><span class="type">mach_timespec_t</span><!-- /a --> <span class="type">*</span><span class="param">wakeupTimeP</span>) = <span class="number">0</span>; 
END OF OBJECT


OBJECT: setWorkLoop (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setWorkLoop //test_ref/cpp/clm/IOEventSource/setWorkLoop //test_ref/cpp/intfcm/IOEventSource/setWorkLoop //test_ref/cpp/intfm/IOEventSource/setWorkLoop //test_ref/cpp/func/setWorkLoop //test_ref/cpp/ftmplt/IOEventSource/setWorkLoop //test_ref/cpp/defn/setWorkLoop //test_ref/cpp/macro/setWorkLoop //test_ref/doc/anysymbol/setWorkLoop" machineGenerated="true" --><span class="function">setWorkLoop</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><span class="param">workLoop</span>); 
END OF OBJECT


OBJECT: setNext (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setNext //test_ref/cpp/clm/IOEventSource/setNext //test_ref/cpp/intfcm/IOEventSource/setNext //test_ref/cpp/intfm/IOEventSource/setNext //test_ref/cpp/func/setNext //test_ref/cpp/ftmplt/IOEventSource/setNext //test_ref/cpp/defn/setNext //test_ref/cpp/macro/setNext //test_ref/doc/anysymbol/setNext" machineGenerated="true" --><span class="function">setNext</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><span class="param">next</span>); 
END OF OBJECT


OBJECT: getNext (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getNext //test_ref/cpp/clm/IOEventSource/getNext //test_ref/cpp/intfcm/IOEventSource/getNext //test_ref/cpp/intfm/IOEventSource/getNext //test_ref/cpp/func/getNext //test_ref/cpp/ftmplt/IOEventSource/getNext //test_ref/cpp/defn/getNext //test_ref/cpp/macro/getNext //test_ref/doc/anysymbol/getNext" machineGenerated="true" --><span class="function">getNext</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: setAction (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/setAction //test_ref/cpp/clm/IOEventSource/setAction //test_ref/cpp/intfcm/IOEventSource/setAction //test_ref/cpp/intfm/IOEventSource/setAction //test_ref/cpp/func/setAction //test_ref/cpp/ftmplt/IOEventSource/setAction //test_ref/cpp/defn/setAction //test_ref/cpp/macro/setAction //test_ref/doc/anysymbol/setAction" machineGenerated="true" --><span class="function">setAction</span><!-- /a -->(
	    <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <span class="param">action</span>); 
END OF OBJECT


OBJECT: getAction (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a -->::<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getAction //test_ref/cpp/clm/IOEventSource/getAction //test_ref/cpp/intfcm/IOEventSource/getAction //test_ref/cpp/intfm/IOEventSource/getAction //test_ref/cpp/func/getAction //test_ref/cpp/ftmplt/IOEventSource/getAction //test_ref/cpp/defn/getAction //test_ref/cpp/macro/getAction //test_ref/doc/anysymbol/getAction" machineGenerated="true" --><span class="function">getAction</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: enable (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/enable //test_ref/cpp/clm/IOEventSource/enable //test_ref/cpp/intfcm/IOEventSource/enable //test_ref/cpp/intfm/IOEventSource/enable //test_ref/cpp/func/enable //test_ref/cpp/ftmplt/IOEventSource/enable //test_ref/cpp/defn/enable //test_ref/cpp/macro/enable //test_ref/doc/anysymbol/enable" machineGenerated="true" --><span class="function">enable</span><!-- /a -->(); 
END OF OBJECT


OBJECT: disable (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/disable //test_ref/cpp/clm/IOEventSource/disable //test_ref/cpp/intfcm/IOEventSource/disable //test_ref/cpp/intfm/IOEventSource/disable //test_ref/cpp/func/disable //test_ref/cpp/ftmplt/IOEventSource/disable //test_ref/cpp/defn/disable //test_ref/cpp/macro/disable //test_ref/doc/anysymbol/disable" machineGenerated="true" --><span class="function">disable</span><!-- /a -->(); 
END OF OBJECT


OBJECT: isEnabled (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/isEnabled //test_ref/cpp/clm/IOEventSource/isEnabled //test_ref/cpp/intfcm/IOEventSource/isEnabled //test_ref/cpp/intfm/IOEventSource/isEnabled //test_ref/cpp/func/isEnabled //test_ref/cpp/ftmplt/IOEventSource/isEnabled //test_ref/cpp/defn/isEnabled //test_ref/cpp/macro/isEnabled //test_ref/doc/anysymbol/isEnabled" machineGenerated="true" --><span class="function">isEnabled</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: getWorkLoop (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/getWorkLoop //test_ref/cpp/clm/IOEventSource/getWorkLoop //test_ref/cpp/intfcm/IOEventSource/getWorkLoop //test_ref/cpp/intfm/IOEventSource/getWorkLoop //test_ref/cpp/func/getWorkLoop //test_ref/cpp/ftmplt/IOEventSource/getWorkLoop //test_ref/cpp/defn/getWorkLoop //test_ref/cpp/macro/getWorkLoop //test_ref/doc/anysymbol/getWorkLoop" machineGenerated="true" --><span class="function">getWorkLoop</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: onThread (HeaderDoc::Function)
	<span class="keyword">virtual</span> <!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/onThread //test_ref/cpp/clm/IOEventSource/onThread //test_ref/cpp/intfcm/IOEventSource/onThread //test_ref/cpp/intfm/IOEventSource/onThread //test_ref/cpp/func/onThread //test_ref/cpp/ftmplt/IOEventSource/onThread //test_ref/cpp/defn/onThread //test_ref/cpp/macro/onThread //test_ref/doc/anysymbol/onThread" machineGenerated="true" --><span class="function">onThread</span><!-- /a -->() <span class="keyword">const</span>; 
END OF OBJECT


OBJECT: Action (HeaderDoc::Typedef)
	<span class="keyword">typedef</span> <!-- a logicalPath="//test_ref/cpp/cl/void //test_ref/cpp/tdef/void //test_ref/cpp/tag/void //test_ref/cpp/struct/void //test_ref/cpp/intf/void //test_ref/doc/anysymbol/void" machineGenerated="true" --><span class="type">void</span><!-- /a --> ( <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/instm/IOEventSource/Action //test_ref/cpp/clm/IOEventSource/Action //test_ref/cpp/intfcm/IOEventSource/Action //test_ref/cpp/intfm/IOEventSource/Action //test_ref/cpp/func/Action //test_ref/cpp/ftmplt/IOEventSource/Action //test_ref/cpp/defn/Action //test_ref/cpp/macro/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="function">Action</span><!-- /a -->)(
	    <!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><span class="param">owner</span>,
	    ...); 
END OF OBJECT


OBJECT: eventChainNext (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/IOEventSource //test_ref/cpp/tdef/IOEventSource //test_ref/cpp/tag/IOEventSource //test_ref/cpp/struct/IOEventSource //test_ref/cpp/intf/IOEventSource //test_ref/doc/anysymbol/IOEventSource" machineGenerated="true" --><span class="type">IOEventSource</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/eventChainNext //test_ref/cpp/data/IOEventSource/eventChainNext //test_ref/cpp/data/eventChainNext //test_ref/cpp/clconst/IOEventSource/eventChainNext " machineGenerated="true" --><span class="var">eventChainNext</span><!-- /a -->; 
END OF OBJECT


OBJECT: owner (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/OSObject //test_ref/cpp/tdef/OSObject //test_ref/cpp/tag/OSObject //test_ref/cpp/struct/OSObject //test_ref/cpp/intf/OSObject //test_ref/doc/anysymbol/OSObject" machineGenerated="true" --><span class="type">OSObject</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/owner //test_ref/cpp/data/IOEventSource/owner //test_ref/cpp/data/owner //test_ref/cpp/clconst/IOEventSource/owner " machineGenerated="true" --><span class="var">owner</span><!-- /a -->; 
END OF OBJECT


OBJECT: action (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/Action //test_ref/cpp/tdef/Action //test_ref/cpp/tag/Action //test_ref/cpp/struct/Action //test_ref/cpp/intf/Action //test_ref/doc/anysymbol/Action" machineGenerated="true" --><span class="type">Action</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/action //test_ref/cpp/data/IOEventSource/action //test_ref/cpp/data/action //test_ref/cpp/clconst/IOEventSource/action " machineGenerated="true" --><span class="var">action</span><!-- /a -->; 
END OF OBJECT


OBJECT: enabled (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/bool //test_ref/cpp/tdef/bool //test_ref/cpp/tag/bool //test_ref/cpp/struct/bool //test_ref/cpp/intf/bool //test_ref/doc/anysymbol/bool" machineGenerated="true" --><span class="type">bool</span><!-- /a --> <!-- a logicalPath="//test_ref/cpp/econst/enabled //test_ref/cpp/data/IOEventSource/enabled //test_ref/cpp/data/enabled //test_ref/cpp/clconst/IOEventSource/enabled " machineGenerated="true" --><span class="var">enabled</span><!-- /a -->; 
END OF OBJECT


OBJECT: workLoop (HeaderDoc::Var)
	<!-- a logicalPath="//test_ref/cpp/cl/IOWorkLoop //test_ref/cpp/tdef/IOWorkLoop //test_ref/cpp/tag/IOWorkLoop //test_ref/cpp/struct/IOWorkLoop //test_ref/cpp/intf/IOWorkLoop //test_ref/doc/anysymbol/IOWorkLoop" machineGenerated="true" --><span class="type">IOWorkLoop</span><!-- /a --> <span class="type">*</span><!-- a logicalPath="//test_ref/cpp/econst/workLoop //test_ref/cpp/data/IOEventSource/workLoop //test_ref/cpp/data/workLoop //test_ref/cpp/clconst/IOEventSource/workLoop " machineGenerated="true" --><span class="var">workLoop</span><!-- /a -->; 
END OF OBJECT



_$89|/Users/dg/headerdoc-techpubs/Modules/HeaderDoc//../../testsuite/parser_tests/class_3.test$1|C$7|class 3$1|C$6|parser