SIS
Symmetric Index Structures
Layer System Desription

As was mentioned on the page Adapter Classes, this distribution here is inheretently tightly coupled to a layered design.

The already existing code base (in pure and fast ANSI C) comprises implementations for CompactedAutomata (named CompressedAutomato), Ukkonen's and Inenaga's CDAWG algorithms, and the algorithm for constructing SCDAWGs as described in SchulzetalXXX.

This pure-C-base presents the grounds for the Adaptation of the Automata described to function as Document-Indexing Automata.

To make implementation of such document-indexing automata easier and safer to use, the latter is achieved by wrapping ("adapting") the pure-C base.

LayeredSystemAdvantages

Many of the points mentioned in AdapterClassesAdvantages are equally valid in the description of the layered system:

  • The layered systems keeps on to the immense speed of the pure C implementation
  • the layered system makes both, usage and implementation easier and safer (cf the Description of Adavantages of the Adapter Pattern
  • Through the layered/adapted system, clear inheritance, composition and templatization are made possible.
    • In many respects a document-indexing CDAWG and SCDAWG pretty much behave the same. This let's us abstract even a little more, and through the use of generative programming allows us to have the appropriate code generated for us through templatization (see more on templatiztion in Templatization Description of Document Indexing Automata).

LayeredSystemConventions

  • You will find the adapted pure C code base in src/bas/lml (Bulgarian Academy of Sciences, Institute for Informatics XXX)
    • Keep in mind, that for this whole approach none of this code had to be changed!
  • You will find the corresponding adapter classes in src/lmu/cis/sis/adapter (LMU, CIS, Symmetric Index Structures).
  • You will find the indexing classes in src/lmu/cis/sis/indexer