[ Reference Manual | Alphabetic Index ]

# library(viewable)

Module for the management of viewables: arrays for visualisation [more]

## Predicates

> viewable(?ViewableName)
>   Test/enumerate names of all existent viewables.
> viewable_create(?ViewableName, +Elements)
>   Create a viewable.
> viewable_create(?ViewableName, +Elements, ++Type)
>   Create a viewable, specifying type.
> viewable_create(?ViewableName, +Elements, ++Type, ++LocNamesList)
>   Create a viewable, specifying both type and location names.
> viewable_expand(++ViewableName, ++DimensionNumber, +ExtraElements)
>   Expand a dimension of a viewable by adding new elements.
> viewable_expand(++ViewableName, ++DimensionNumber, +ExtraElements, ++LocName)
>   Expand a dimension of a viewable by adding new elements, specifying the name of the new location.
> viewable_size(++ViewableName, ?SizeList)
>   Query the sizes of the dimensions of an existent viewable.
> viewable_type(++ViewableName, ?Type)
>   Query the type of an existent viewable.

## Reexports

## Description

Module for the management of viewables. These are logical, multidimensional arrays and graph structures whose elements can be accessed globally for visualisation purposes. The creation, destruction and modification of viewables and their contents can be monitored by visualisation clients.

The library `lib(graph_algorithms)` contains predicates to create and manipulate graph structures.

Viewables are created using `viewable_create/2/3/4` and last until this call is backtracked over. During its lifetime, a viewable is said to be existent. This can be tested with `viewable/1`, which can also be used to enumerate all existent viewables.

One or more of the dimensions of a viewable can optionally be flexible in size while the viewable is existent. This allows new elements to be added to the viewable, using `viewable_expand/3/4`. The fixity of a dimension denotes whether it is fixed or flexible. In the case of graph typed viewables, the fixity refers to the ability to add new nodes and/or edges to the graph. Currently only fixed graphs are supported.

A viewable is given a type when it is created. For array types, this specifies the number of dimensions, the fixity of each dimension and the type of viewable elements which the viewable can contain. For graph types, this simply specifies whether the graph structure (number of nodes, edge direction etc) may be modified during the viewables lifetime. An existent viewable's type can be retrieved using `viewable_type/2`, and its current sizes of the dimensions can be retrieved using `viewable_size/2.`

### Optimised behaviour without visualisation

Visualisation clients can only monitor viewables whose creation occurs after they register. When there are no registered visualisation clients, for efficiency purposes no data on viewables is stored and so the predicates in this module behave slightly differently from normal:

- `viewable_create/2/3/4` and `viewable_expand/3/4` succeed with any arguments. It is therefore reasonable to leave these predicates in your code even when not visualising.
- `viewable/1`, `viewable_size/2` and `viewable_type/2` fail whatever the arguments. If these predicates are used (normally they should not be necessary) the possibility of failure should be taken into account.

## About

- Author: Josh Singer

Generated from viewable.eci on 2020-02-26 22:26