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.
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).
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.