The MapsTo property associates the set of internal players specified in its value part to the external player named in the abstraction bind. An external player is a player exposed in the interface of a component, and an internal player is one that is exposed in the interface of another component that has been instantiated inside the implementation of a component. A bind, therefore, maps a player in the interface of a component to one or more players in its composite implementation.
There are two forms of the <bind> statement: the simple bind, and the abstraction bind. When a player in the interface is implemented by a single player in the implementation having the same type, then the system designer uses the simple bind syntax. This form of the bind is a simple aliasing operation.
When the player in the interface is implemented by a collection of players in the implementation, or a single player with a different type, then the system designer uses the abstraction bind syntax. An abstraction bind does not represent a simple aliasing operation. It is an association of players in the implementation to a player in the interface. The list of players in the MapsTo property represents an abstraction of some form. For example, the players may collectively represent some abstract operation as a group - an operation that is accessible via a single player in the interface of the component. In other cases, the player(s) in the MapsTo list may represent a concrete implementation of a more abstract behavior of a player in the interface (i.e., a behavior not directly supported in a given programming language). For example, a stream player in the interface of a Filter component that has a composite implementation may actually be implemented by procedure call players in the implementation (e.g., to routines like fgets or fprintf in the C language). The behavior of a stream in the interface is actually an abstraction implemented by procedure calls in the implementation in this case.
The MapsTo property is required in an abstraction bind. It is an integral part of the specification of the bind itself.
More than one specification of the MapsTo property in a single property list is treated as a single specification with the union of all values in all of the specifications.
IMPLEMENTATION IS USES main INTERFACE Sort_Main USES sort INTERFACE Sort USES libc INTERFACE Libc BIND input TO ABSTRACTION MAPSTO (main.libc.fgets) END input BIND output TO ABSTRACTION MAPSTO (main.libc.fprintf) END output ESTABLISH C-PLBundler WITH main.sort_routines AS participant sort.sort_routines AS participant END C-PLBundler ESTABLISH C-PLBundler WITH main.libc AS participant libc.libc AS participant END C-PLBundler END IMPLEMENTATION
Author:
Last Modified: May 12, 1996