Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a class
LatticeTrace
which is aTracebackitem
together withpredecessor
andsibling
references in order to store the network of trace nodes making up a search lattice. This class is equipped with functionsperformTraceback
andbuildWordLattice
which trace backwards from the node itself to build up aTraceback
vector orStandardWordLattice
. This class is going to be used in future search algorithms (e.g. #101).Note: The Trace class of the
AdvancedTreeSearch
module is very similar but has a few additional members specific to that module. Because of the self-referential nature of the class (throughpredecessor
andsibling
) it is not straightforward to have theAdvancedTreeSearch
Trace
inherit fromLatticeTrace
though without introducing a bunch ofdynamic_cast
calls. So the options are:Trace
andLatticeTrace
separate and accept that they are very similarTrace
toLatticeTrace
to join them into one single class even though the other members are generally unusedTrace
inherit fromLatticeTrace
and usedynamic_cast
wherever siblings or predecessors are accessed