Gzz Core APIs

Gzz_CoreAPIs.gen.html Gzz_Frontend.gen.html Gzz_Backend.gen.html Gzz_Control.gen.html Gzz_GL.gen.html Gzz_architecture.gen.html#div4 div4_small

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.

Gzz_CoreAPIs.gen.html#coreapis coreapis

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.

ZZ structure; gzz

In the package gzz, the most important classes are Cell, Dim, Space and CellTexter.

gzz.Cell gzz.Dim gzz.Space gzz.CellTexter gzz.VStreamCellTexter gzz.JavaObjector gzz.Obs gzz.ObsTrigger Gzz_CoreAPIs.gen.html#core core

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.

Xanadu media model; gzz.media

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.

gzz.media.Span gzz.media.Enfilade1D gzz.media.Span1D gzz.media.TextSpan gzz.media.ImageSpan gzz.media.PageSpan gzz.media.VideoSpan gzz.media.AudioSpan gzz.media.ScrollBlock Gzz_CoreAPIs.gen.html#media media

An enfilade in Gzz is a sequence of spans.

Currently, AudioSpan and VideoSpan are not used.

Deltas between versions of zzstructures; gzz.diff

In order to undo and implement virtual cells, storing differences between structures is important. This package provides generic interfaces for that purpose.

gzz.diff.Delta gzz.diff.ContentDelta gzz.diff.SimpleContentDelta gzz.diff.DimDelta gzz.diff.SimpleDimDelta gzz.diff.DeltaSpace Gzz_CoreAPIs.gen.html#diffs diffs

DeltaSpace is the interface that a Space object that supports diffing provides.