The core gzz APIs define the public interface to the zzStructure and Xanalogical media. These APIs serve as a fundamental decoupling point in the Gzz architecture.
The package gzz.media provides the APIs for our version of Xanalogical media. The package gzz uses these APIs and provides the zzStructure. The package gzz.diff provides APIs for manipulating differences between versions of spaces, for implementing undo and virtual cells.
In the package gzz, the most important classes are Cell, Dim, Space and CellTexter.
Space is an interface that represents a single complete ZZ structure. Cell is a facade that delegates to Space and Dim for actual queries.<br>
There are also the classes Obs and ObsTrigger, which are used in the Cell API in several places. ObsTrigger keeps track of Obs (observer) objects for different events. The idea is that once an Obs is set up somewhere, it will be called at some point after the next event loop; not immediately. Triggering an observer removes it. The most common use would be to create cached object representing some part of the structure and automatically invalidating them when the structure changes.
The Xanadu media model interfaces are in the package gzz.media, organized in an inheritance hierarchy. The central interface is Span, which is a single permanent media span. It is not quite the same as a span in the original Xanadu documents, since it is only inside a single ScrollBlock.
An enfilade in Gzz is a sequence of spans.
Currently, AudioSpan and VideoSpan are not used.
In order to undo and implement virtual cells, storing differences between structures is important. This package provides generic interfaces for that purpose.
DeltaSpace is the interface that a Space object that supports diffing provides.