class EXPAND_ALTERNATIVE
Summary
Overview
Features
{ANY}
{ABSTRACT_BACKTRACKING}
{}
{EXPAND_EXPRESSION}
{ABSTRACT_BACKTRACKING_POOL, ABSTRACT_BACKTRACKING}
{ABSTRACT_BACKTRACKING}
{ANY}
{ABSTRACT_BACKTRACKING_POOL}
{}
once function
{ANY}
The pool that will record Current
next_alternative (explorer: EXPAND_EXPRESSION)
effective procedure
Called by ABSTRACT_BACKTRACKING to let the current object switch to the next alternative to explore.
Two actions must be performed by that feature:
  - make iteration actions and then call
     'continue_alternative' if iteration is not ended
     and that current object must be called again to
     switch to an other alternative or else call
     'pop_alternative' if this is the last alternative
     to be explored.
  - select the state to be evaluated or
     call 'continue' or call 'backtrack'.
require
  • is_on_top: Current = explorer.top_alternative
writable attribute
{}
count: INTEGER_32
writable attribute
{}
make (itm: EXPRESSION_ITEM, cnt: INTEGER_32)
effective procedure
For the linked stack of alternatives.
Managed by ABSTRACT_BACKTRACKING.
writable attribute
The sequence to continue after a success in exploration of the current alternative.
Managed by ABSTRACT_BACKTRACKING.
set_continuation (value: ABSTRACT_BACKTRACKING_SEQUENCE)
effective procedure
ensure
writable attribute
Record of the top of the stack of sequence to restore the state of the exploration after that all alternatives were explored.
Managed by ABSTRACT_BACKTRACKING.
set_top_sequence (value: ABSTRACT_BACKTRACKING_SEQUENCE)
effective procedure
ensure
release
effective procedure
{ANY}
Called by ABSTRACT_BACKTRACKING to release current instance to the pool.
require
get_twin: EXPAND_ALTERNATIVE
effective function
{ANY}
Return a twin of current from the pool
require ensure
Internal link used by the pool to chain its poolable items.
Technical note: to give more freedom for further usages of 'pool_link' it is not defined with type anchorage.
set_pool_link (other: ABSTRACT_BACKTRACKING_POOLABLE)
effective procedure
Set 'pool_link' to 'other'
ensure
Failure_item: INTEGER_32
is 1
constant attribute
{}
Value_item: INTEGER_32
is 2
constant attribute
{}
Or_item: INTEGER_32
is 3
constant attribute
{}
And_item: INTEGER_32
is 4
constant attribute
{}
Empty_item: INTEGER_32
is 5
constant attribute
{}
Success_item: INTEGER_32
is 6
constant attribute
{}
Iterate: BOOLEAN
is True
constant attribute
{}
alternative_pool: POOL_ALTERNATIVE
once function
{}
sequence_pool: POOL_SEQUENCE
once function
{}