
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