next up previous top
Next: MinAssocs
Up: Property
Previous: MaxConns

Member

Description

The Member property is used to further specify a PLBundle player definition. It is used to define players inside the PLBundle. The value associated with this property has three fields, each of which corresponds to a portion of a UniCon player definition. The first field is the player name, the second is the player type, and the third is the player property list.
PLBundle players must contain at least one member player definition, and there is no upper limit imposed for member players in a PLBundle.

The PLBundle player type in UniCon allows the system designer to create a collection of players, to attach significance to a group of routines and data in an architectural description of a system. The name PLBundle denotes a programing language bundle; the bundle may only contain players of types that have corresponding programming language implementations: GlobalDataDef, GlobalDataUse, RoutineCall, and RoutineDef players.

Each Member player in a PLBundle must be unique. In other words, there may not be duplicate member player definitions in a single PLBundle. Two member players are duplicates if the contents of their first fields are identical (the double-quotes are insignificant, so if one is a "string" and one an <identifier> they are identical if the names are the same - case of the letters is significant).

The same player may, however, be defined in multiple different PLBundle players in the same component. In this case, these Member player definitions refer to the same player in the source code implementation, so the specifications of all Member properties pertaining to this player must be identical inside all of the PLBundle players in which they appear.

This feature of the UniCon language allows the set of players in the source code implementation of a component to be grouped into overlapping subsets of players (i.e., via PLBundle player definitions) in the UniCon description of that component. The PLBundle player definitions can then become useful abstractions to the system designer, and a single player can be a member of more than one abstraction. For example, the C standard library contains over 700 players. A UniCon component definition corresponding to this library may export any number of PLBundle and non-PLBundle player definitions. A system designer may choose to define a PLBundle player for all input/output operations, for example, and another one for only low-level input/output operations. As you can imagine, the write routine definition might exist as a member in both of these bundles.

Property Lists

The Member property can legally be specified in the property list in the following UniCon language element:

Value Syntax

The syntax of the value part of the Member property consists of a sequence of three fields, separated by semicolons, enclosed in parentheses. The first and second fields consist of a single <identifier> or "string". The third field is a property list, containing properties that are separated by whitespace.

Required Rule

Required

At least one Member property specification must be present in a UniCon definition of a PLBundle player.

Merge Rule

ERROR

The merge rule value for a given property tells the UniCon compiler what to do when a duplicate specification of that property occurs in the same property list. Usually a duplicate constitutes another property specification with the same name part. For example, any two specifications of the MaxAssocs property in the same property list, regardless of the specific contents of their respective value parts, are considered duplicates. For the Member property, a specification is not a duplicate unless the value part is equivalent to the value part of a previously specified Member property. More specifically, two Member properties are duplicates if the first field in each is the same. The case of the letters in this check is significant, but the presence or absence of double-quotes is not.

Subsequent duplicate specifications of the Member property in a single property list are reported as errors. The UniCon compiler uses the first of the duplicate Member properties it encounters.

Semantic Checks

The following are the semantic checks performed on the value of the Member property:

  1. Nested Member properties are not permitted in a UniCon PLBundle player definition. Therefore, the Member property is not permitted in the property list of another Member property.

  2. The second field of the Member property specifies the type of the Member player. There are only four legal player types for a Member player definition: GlobalDataDef, GlobalDataUse, RoutineCall, and RoutineDef.

  3. Duplicate Member player definitions in a single PLBundle player are illegal. Member player definitions are duplicates if the first field (i.e., the player name) is the same in each. See the discussion above in the Merge Rule section for more details.

All of the standard checks for UniCon player definitions are applied to a Member player definition:

  1. The player type must be a valid player type.

  2. The properties in the Member property list must be legal for a player of the given type.

  3. The values of the properties in the Member property list must have legal syntax for a player of the given type.

  4. The value of the properties in the Member property list must adhere to the semantics defined for the given property in a player of the given type.

  5. All required properties for a player of the given type must be present.

  6. The MinAssocs value must not be greater than the MaxAssocs value for the Member player.

Example

The following is an example of some specifications of the Member property. They are all embedded in the definition of a PLBundle player:

  PLAYER Sort_Bundle IS PLBundle
    MEMBER (bubble; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
    MEMBER (quick; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
    MEMBER (merge; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
    MEMBER (sort; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
    MEMBER (topological; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
  END Sort_Bundle
In the example above, each Member property defines a Member player in the PLBundle player. Each Member player is of type RoutineDef, and each is further specified by
Signature and MinAssocs properties. The value of zero in the MinAssocs properties means that the Member players do not have to be connected in a system description. Each routine takes as input a pointer to an array of integers, and returns the same. These players describe sort routines for integers.

The PLBundle player below might be defined in the same component. It may contain some of the same Member players defined in other bundles.

  PLAYER Fast_Sort_Bundle IS PLBundle
    MEMBER (quick; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
    MEMBER (merge; RoutineDef;
      SIGNATURE ("int *"; "int *")
      MINASSOCS (0))
  END Fast_Sort_Bundle

next up previous top
Next: MinAssocs
Up: Property
Previous: MaxConns

Comments? Mail the current maintainer of this page.

Author: Gregory Zelesnik

Last Modified: May 12, 1996