ColdFrameProfile

Stereotypes

Stereotype Applies to Documentation Tags
abbreviation
AssociationClass
Class
Normally the abbreviation of a class's name is formed from the initial letters of the words in the name. If there's only one word, it's formed by prepending "A_" or "An_". This stereotype is provided to support the {abbreviation} tag, which allows the modeller to override the default behaviour.
abbreviation
access
DataType
Indicates that the type is an access to the type specified in the accompanying {access-to-type}.
access-to-type
access-to-operation
DataType
The marked datatype must have only one operation, whose name is discarded (and can be omitted): instead, the datatype specifies an access to an operation of the given profile.
accessor
Operation
The tagged operation is an accessor for one of the attributes of the class, determined by scope (instance/class), name and parameter or result type.
active
Class
Each instance of the class is to have an associated task.
Setting the "isActive" modifier "true" has the same effect but is less visible for such a significant aspect of the generated code, and also doesn't allow setting of {priority} and {stack}.
priority
stack
association-class-naming *deprecated*
AssociationClass
This stereotype supports the tags {association-name}, which is used to specify the name to be used for the association part of an AssociationClass, and {class-name}, which is used to specify the name to be used for the class part. Both can be supplied; if only one is supplied, the other part retains the name specified in the model; if neither is supplied, the name used is formed by appending "_Class" to the AssociationClass name.
association-name
class-name
atomic
Attribute
The attribute must be read from memory or written to memory each time it is accessed, like «volatile», but additionally in such a way that it's proof against concurrent access.
The implementation may limit the size of objects that can be treated as atomic.
bounded-string
DataType
Specifies that the datatype is a string of length up to a maximum. The maximum length is specified in the tag {length}.
length
callback
Class
DataType
Operation
If applied to a type, callback support code is to be generated. The idea here is that a (lower-level) Domain may need to support Observers from higher-level Domains, and the higher-level Domains can register to be notified when something has changed in the lower-level Domain.
If applied to an operation, the operation is to be an Observer of some change in a lower-level domain. This implies the stereotype «class». The operation must take a single parameter of the type concerned.
cardinality
Class
Specifies (in the associated {max} tag) the maximum number of instances of a class. Note, under some circumstances ColdFrame can calculate the maximum number of instances (for example, if the class has a single identifier of an enumeration type): this setting will override such a calculation.
max
class
CallEvent
SignalEvent
StateMachine
This stereotype is used to manage class events, which is a ColdFrame concept that distinguishes events directed to state machines (instance events) from events originating outside the domain (class events, because external entities have no visibility of state-machine related events).
constraint
DataType
Indicates that the type is a constrained subtype of the type specified in the accompanying {constrains}.
The constraints are indicated in the accompanying {lower} and {upper}, at least one of which must be present.
If either {lower} or {upper} is absent, the lower or upper bound respectively of the {constrains} type is used.
constrains
lower
upper
convention
Class
DataType
Operation
Specifies that the conventions of the programming language specified in the accompanying {language} tag are to be used.
If specified on a class, the class must be stereotyped «datatype».
language
counterpart
DataType
The type is used for references to instances in other domains.
datatype
Class
Specifies that the class in fact specifies a (record) type or struct.
discriminated
Class
Causes the generation of discriminated records; the discriminant is an enumeration type with literals formed from the attribute names with _T appended.
To be applied to a Class stereotyped «datatype» and with attributes.
domain
Package
A domain is a separate real, hypothetical, or abstract world inhabited by a distinct set of classes that behave according to rules and policies characteristic of that domain.
A domain is translated as a top-level Ada package, with the name derived from the package name using the usual name conversion rules (it can be overridden using the tagged value {name}).
Child UML packages are included (recursively), unless they are steretyped «ignore». The child UML package structure is not reflected in the generated code (for example, all classes end up as direct Ada child packages of the domain package).
name
revision
domain-interface
Package
Supports unit test.
Marks a package (which needs to be a child of a «domain» package) as containing all the «public» classes and «callback» types, any types used by them, and any exceptions that form part of the external interface of the parent package.
Use the {name} tag to define the name to generate (the code will still be placed in the directory derived from the actual package name, which should be <parent>_Interface).
name
revision
entry
Operation
In an active class, you can specify task entries using the «entry» stereotype. It's permissible to have an ordinary operation with the same name as an «entry», because «entry» operations don't generate normal subprograms.
In a «protected» type, you can nominate procedures (operations without a return value) as entries using the «entry» stereotype.
The point about an entry of a protected type is that your implementation specifies a guard condition; callers of the entry block until the guard becomes open.
final
Operation
SimpleState
If applied to a (Simple)State, indicates that the marked state is a final state; no outgoing transitions are allowed.
If applied to an Operation, indicates that the marked operation deletes the instance.
Used in state machines to ensure that no further accesses are made to the deleted instance.
The (generated) operation Delete is automatically «final».
finalize
Operation
Operations to be called to clean up as an instance is deleted (for example, to tidy up associations) are marked with the stereotype «finalize». (It would be possible in theory to use Ada's controlled types, but that depends on your target language being Ada). Also, it's possible to have more than one «finalize» operation; if so, they're called in alphabetical order.
fixed-string
DataType
Specifies that the datatype is a fixed length string. The length is specified in the tag {length}.
length
id
Attribute
The attribute is an identifying attribute.
formalizes
ignore
Package
Transition
Used on a package to indicate that the contents of the package is to be ignored for code generation (it may, for example, include additional documentation).
Used on a state transition to indicate that the trigger event is to be ignored in the source state.
imported
DataType
Exception
Specifies that the object is to be found at the external reference specified in the {imported} tag.
hash
imported
init
Operation
Operations to be called from the Domain Initialize procedure are marked with the stereotype «init». This implies the stereotype «class». These operations must be parameterless procedures.
not-null
Parameter
This stereotype is applied to an operation parameter which is not permitted to be null.
It must only be applied to parameters of an access type (for example, a class in the domain).
null
DataType
Specifies an empty record; useful for a callback with no actual data associated.
protected
Class
Specifies that instances of the type are protected against concurrent access by multiple threads of execution.
To be applied to a Class stereotyped «datatype» and with attributes.
public
Class
Specifies that the marked class is part of the public interface of the domain.
renaming
DataType
Exception
Operation
Specifies that the object is a renaming of the external reference specified in the {renames} tag.
hash
renames
singleton
Class
Specifies that the marked class has precisely one instance (which will be automatically created on domain initialization).
source
AssociationEnd
If you have a symmetrical association of multiplicity 1:1, 1c:1c, 1-(1:1) or 1-(1c:1c), ColdFrame requires you to tell it how the association is to be formalized.
This stereotype marks the association end from which the referential attribute (which appears in the other end, or which forms the identifier of the Association Class) is taken.
teardown
Operation
Instance operations to be called during teardown (in unit test) are marked with the stereotype «teardown».
unsigned
DataType
Specifies that the datatype is an unsigned type, with modulus stated in the accompanying {mod} tag.
mod
utility
Class
Specifies that the "class" has no instances, and is merely a wrapper for operations.
volatile
Attribute
The attribute must be read from memory or written to memory each time it is accessed.

Tags

Tag Documentation Stereotype
abbreviation Normally the abbreviation of a class's name is formed from the initial letters of the words in the name. If there's only one word, it's formed by prepending "A_" or "An". This tag allows the modeller to override this, if the default behaviour leads to aliasing. abbreviation
access-to-type Names the type to which the marked type is an access; it must be a domain type, not one of those that ColdFrame defines (such as Integer).
Mandatory.
access
association-name *deprecated* This tag is used to specify the name to be used for the association part of an AssociationClass. If not supplied, the name used is the AssociationClass name. association-class-naming
class-name *deprecated* This tag is used to specify the name to be used for the class part of an AssociationClass. If neither this tag nor {association-name} is supplied, the name used is formed by appending "_Class" to the AssociationClass name. association-class-naming
constrains The type to be constrained; mandatory. constraint
formalizes The marked identifying attribute suffices to formalize the named association. It must be the name of the class at the other end of the association. id
hash Specifies how a renamed type is to be hashed. Currently the only supported styles are:
* 'discrete', which will work for imported enumerations or integer ranges but not for private or access types, and
* 'enumeration', which is similar but acts as a code generation optimization directive.
renaming
hash Specifies how an imported type is to be hashed. Currently the only supported styles are:
* 'discrete', which will work for imported enumerations or integer ranges but not for private or access types, and
* 'enumeration', which is similar but acts as a code generation optimization directive.
imported
imported Specifies the package where the element is actually declared. imported
language Specifies the programming language whose conventions are to be used in the translation; mandatory. convention
length Specifies the maximum length of the «bounded-string» string. bounded-string
length Specifies the length of the «fixed-string» string. fixed-string
lower The lower bound of the new type (in Ada, subtype). constraint
max Specifies the maximum number of instances of the class; mandatory. cardinality
mod If the value is m, the tagged «unsigned type» is to be able to store values 0 .. m - 1. unsigned
name The Ada package name to be used, if not the default (the UML package name). domain
name The Ada package name to be used, if not the default (the UML package name).
Should match the name of the parent «domain» package.
domain-interface
priority Specifies the task priority as a signed offset from the default. active
renames Specifies the fully-qualified name of the renamed element. renaming
revision The VCS revision of the UML model. domain
revision The VCS revision of the UML model. domain-interface
stack Specifies the stack size for the task (the default is 20_000 bytes). active
upper The upper bound of the new type (in Ada, subtype). constraint

Types

Type Documentation
Autonumber Used for automatically-generated instance identifiers.
For Ada, translates to Long_Long_Integer (typically 64-bits).
Boolean The standard boolean type.
Corresponds directly to the Ada Boolean.
Character The standard character type.
Corresponds directly to the Ada Character.
Counterpart Used for references to instances in other domains (but see «counterpart»).
Date May correspond to a calendar date, but for Ada translates to ColdFrame.Project.Calendar.Time (the same as Time).
Duration A time interval.
Corresponds directly to the Ada Duration.
Float The standard short float type.
Corresponds directly to the Ada Float.
Integer The standard integer type.
Corresponds directly to the Ada Integer.
Long_Float The standard long float type.
Corresponds directly to the Ada Long_Float.
Natural An integer, constrained to be greater than or equal to zero.
Corresponds directly to the Ada Natural.
Positive An integer, constrained to be greater than zero.
Corresponds directly to the Ada Positive.
Real A floating-point value.
For Ada, translates to Float.
String A fixed-length character string, normally used as an operation parameter, when it has the length of the actual. Can only be used for an attribute if the attribute is given an initial value.
Corresponds directly to the Ada String.
Text An unbounded string.
For Ada, translates to Ada.Strings.Unbounded.Unbounded_String.
Time May correspond to a time-of-day, but for Ada translates to ColdFrame.Project.Calendar.Time (the same as Date).
Timer Used mainly for timeouts in state machines.
A timer can hold at most one event, which is to be released at some future time but which can be cancelled or revoked.
Unbounded_String A variable-length string.
Corresponds directly to Ada.Strings.Unbounded.Unbounded_String.