#include <conteval.hpp>
Inheritance diagram for SExpressionGenericIterator:
The instructions generic_iteration and iteration_callback of the IntelibContinuation class use an object derived from this class to perform iterative evaluations.
The operation is as follows: when the IntelibContinuation encounters the generic_iteration instruction (whose parameter must always be a subclass of SExpressionGenericIterator), it calls the NeedAnotherIteration() method; if it returns true, it pushes to the todo stack another generic_iteration with the same object, then pushes the iteration_callback (which will call the CollectResultOfIteration method), then calls the ScheduleIteration() to give the object a chance to schedule its own stuff. Therefore, during the iteration this stuff will be evaluated first, then CollectResultOfIteration will be called, and then the decision-making generic_iteration instruction is performed again.
Definition at line 358 of file conteval.hpp.
Public Member Functions | |
SExpressionGenericIterator (IntelibTypeId &tid) | |
~SExpressionGenericIterator () | |
virtual bool | NeedAnotherIteration (IntelibContinuation &lf) const =0 |
Should we continue? | |
virtual void | ScheduleIteration (IntelibContinuation &lf)=0 |
Push the appropriate stuff to the todo list. | |
virtual void | CollectResultOfIteration (IntelibContinuation &lf)=0 |
Retrieve the result(s) of the last iteration. | |
virtual void | ReturnFinalValue (IntelibContinuation &lf)=0 |
What do we return after the iteration is complete. | |
const IntelibTypeId & | TermType () const |
Actual S-expression type. | |
bool | IsChangeable () const |
Can it be changed during the lifetime of the object? | |
virtual SExpression * | Clone () const |
Clone a changeable object. | |
virtual class SString | TextRepresentation () const =0 |
Text representation of the S-expression. | |
virtual bool | SpecificEql (const SExpression *) const |
Are the two objects EQL (while not EQ). | |
Static Public Attributes | |
static IntelibTypeId | TypeId |
Identifier for the set of all possible S-expressions. | |
Protected Member Functions | |
bool | CanDie () |
Is it OK to delete the object now? |
|
Definition at line 360 of file conteval.hpp. |
|
Definition at line 362 of file conteval.hpp. |
|
Should we continue?
|
|
Push the appropriate stuff to the todo list.
|
|
Retrieve the result(s) of the last iteration.
|
|
What do we return after the iteration is complete.
|
|
Actual S-expression type.
Definition at line 195 of file sexpress.hpp. Referenced by SReference::DynamicCastGetPtr(), SchReference::IsEql(), LReference::IsEql(), SReference::SimpleCastGetPtr(), SchReference::TextRepresentation(), and LReference::TextRepresentation(). |
|
Can it be changed during the lifetime of the object?
Definition at line 198 of file sexpress.hpp. References IntelibTypeId::IsChangeable(). |
|
Clone a changeable object. The method should return the pointer created with new
Reimplemented in SExpressionBacklink, SExpressionCons, SExpressionHashTable, SExpressionRawBuffer, and SExpressionVector. Definition at line 214 of file sexpress.hpp. |
|
Text representation of the S-expression. Returns the text string which represents the given S-expression as for real Lisp (for example, (25 36 49)) Implemented in SExpressionDoubleList, SExpressionInt, SExpressionFloat, SExpressionChar, SExpressionString, SExpressionClassicAtom, SExpressionLabel, SExpressionCons, SExpressionHashTable, SExpressionLocation, SExpressionRawBuffer, SExpressionVector, SExpressionWrapper< Data >, SExpressionIndirect, SExpressionIndirectAccessor, LExpressionContext, LExpressionLambda, LExpressionMacro, LExpressionUserCFunction, SchExpressionContext, and SchExpressionLambda. Referenced by SExpressionVector::TextRepresentation(), SchReference::TextRepresentation(), and LReference::TextRepresentation(). |
|
Are the two objects EQL (while not EQ). This function is overriden by those SExpressions able to be EQL while being not EQ.
Reimplemented in SExpressionInt, SExpressionFloat, SExpressionChar, and SExpressionString. Definition at line 235 of file sexpress.hpp. Referenced by SchReference::IsEql(), and LReference::IsEql(). |
|
Is it OK to delete the object now? Our children have no access to the private attribute RefCount and should never need it except when checking if the destruction is not an error. This solves the problem. Definition at line 53 of file refcount.hpp. |
|