ColdFrame: Specially written support components for Ravenscar

This page discusses the restricted Ravenscar version of ColdFrame, which isn't intended to support testing directly. Instead, the idea is that the model and code are tested on the desktop, and then the model is regenerated for delivery on the target platform (with its implementation unaltered).

The full profile supports various testing facilities as well as being customisable to user requirements.

Library components

Specially written support components appear under the top-level package ColdFrame, in the directories lib/ and lib/ravenscar/. The more user-interesting ones are

ColdFrame.Callbacks
Provides callback (Observer) support.

ColdFrame.Events
Support for Events. This is a basic abstract event management specification.
Child packages are

ColdFrame.Events_G.Creation_G
Provides a "creation" event type, for use where there's no application event to cause transition from the initial state.

ColdFrame.Events.Standard
A straightforward event queueing and dispatching service.

ColdFrame.Exceptions
Provides exceptions.

ColdFrame.Hash
A family of hash functions, suitable for use as hashes (or part of hashes) for instantiating Hashed Map or Set containers.

ColdFrame.Hash.Access_Hash
A hash function for access values (useful for associative classes).

ColdFrame.Hash.Instance_Access_Hash
A hash function for access-to-instance values (useful for child classes).

ColdFrame.Hash.Strings
A hash function for strings.

ColdFrame.Instances
Provides a type from which all Instances are derived.
The purpose is to allow mutual visibility (to support associations and inheritance relationships).

Supplied Project components

For some purposes, standard ColdFrame generates code expecting certain services to be provided by specific packages (under ColdFrame.Project, directories project/ and project/standard/), where you would probably prefer to be able to provide your own version.

The Ravenscar-restricted version of ColdFrame doesn't support this idea. However, in order to eliminate the need to write environment-specific application code, three packages are provided:

ColdFrame.Project
The root of the Project tree
ColdFrame.Project.Events
A renaming of ColdFrame.Events.
ColdFrame.Project.Times
A renaming of ColdFrame.Times.