next up previous top
Next: FileIO
Up: Connector Type
Previous: Connector Type

DataAccess

Semantics

The connector type DataAccess provides an architectural abstraction for the global data defines/uses relation (inter-module connection) supported by programming languages. In addition to making this type of connection first-class (i.e., visible as an entity at the architecture description level), the DataAccess connector type supports type-checking of the players in the connection on the basis of signatures as well as the spelling of the names.

The system designer may specify the Rename property in the property list of an instantiation of a DataAccess connector to bypass the semantic check on the names of the players (meaning that they do not have to be the same). In such a case, the UniCon compiler detects and repairs the name mismatch in the underlying system implementation.

Role types

Roles of the following types can be legally defined in the protocol of a connector of type DataAccess:

a definer of global data
a user of the contents of a global data definition

Properties

The following properties can be legally included in the property list of a connector of type DataAccess. Properties legal in a <protocol> property list have a P in parentheses after the property name; those legal in an <instantiation> or <establish> property list have an I:

The syntax for an InstFormals property in a connector of type
DataAccess is a comma-separated list of <parameter>s enclosed in parentheses. A <parameter> consists of an <identifier>, followed by a `=', followed by a <complex string> or the language keyword NODEFAULT. A <complex string> is a simple "string" or a sequence of "string"s concatenated by the `&' character:

INSTFORMALS (first_parameter = "an initial value",
second_parameter = "a much" &
"longer initial value that " &
"will not fit on one line",
third_parameter = NODEFAULT)
The Rename property has no associated value. The syntax, therefore, is simply:

RENAME

Semantic Checks

The following are the semantic checks made in connections of type DataAccess:

  1. The name of the player playing the User role must be identical (including case) to the name of the player playing the Definer role, unless the Rename property is specified in the connection.

  2. The data type in the signature of the player playing the User role must be identical (including case) to the data type in the signature of the player playing the Definer role. (Warning only)

Implementation Semantics

DataAccess connections are realized as linker directives that describe how global data references in the underlying system implementation are to be resolved with the addresses of the corresponding global data definitions within a single address space.

If a name mismatch is detected in a DataAccess connection and the Rename property was specified, the UniCon compiler renames both identifiers in the source code of the implementation to a third, UniCon-generated identifier to resolve the mismatch. The renaming occurs at compile-time via macro names supplied with the -D option to invocations of the C language compiler.


next up previous top
Next: FileIO
Up: Connector Type
Previous: Connector Type

Comments? Mail the current maintainer of this page.

Author: Gregory Zelesnik

Last Modified: May 12, 1996