Connector, ConnectorView - base classes for connector sub-
jects and views
SYNOPSIS
#include <Unidraw/Components/connector.h>
DESCRIPTION
Connector is an abstract base class for graphical compo-
nent subjects that enforce different connectivity seman-
tics depending on the particular connector subclass. Con-
nectorView is the abstract base class for views of connec-
tor subjects. A connector can be connected to one or more
other connectors. Once connected, two connectors can
affect each other's position in specific ways as defined
by the semantics of the connection.
Connectors also participate in the propagation of state
variable values during dataflow. Two connected connectors
with bound state variables will assign the value of one
state variable to other, and the direction of transfer
depends on the connectors' transmission method. For exam-
ple, if the transmission method of connector C1 with bound
state variable S1 is In, and if the transmission method of
connector C2 with bound state variable S2 is Out, and if
C1 and C2 are connected, then S1 will be assigned the
value of S2 during dataflow.
CONNECTOR PUBLIC OPERATIONS
virtual void Interpret(Command*)
virtual void Uninterpret(Command*)
In addition to (un)interpreting the commands Graph-
icComp (un)interprets, connectors also (un)inter-
pret DeleteCmd and CutCmd to sever and restore any
connections to them.
virtual void Connect(Connector*, CGlue* = nil);
Connect this connector to the given one, optionally
with a piece of CGlue interposed. This operation
allows redundant connections by default.
virtual void Disconnect(Connector*)
void DisconnectAll()
Disconnect the given connector from this one, if
they are connected. DisconnectAll calls Disconnect
on all connected connectors until no connections
remain.
virtual boolean ConnectedTo(Connector*)
Return whether this connector is connected to the
given one.
virtual void GetCenter(float&, float&)
virtual void SetBinding(StateVar*)
virtual StateVar* GetBinding()
Assign and return the state variable bound to the
connector, if any. Only one state variable can be
bound to a connector at a time.
virtual void SetTransMethod(TransMethod)
virtual TransMethod GetTransMethod()
Assign and return the connector's transmission
method.
virtual void Transmit(Path* = nil)
Initiate dataflow originating from this connector,
optionally based on information supplied in the
given path object. Other Unidraw or application
objects call this operation whenever data modifica-
tions should be propagated.
CONNECTOR PROTECTED OPERATIONS
Connector(Graphic* = nil)
Initialize the connector instance, optionally with
a graphic whose center defines the connector's
position.
virtual void ConnectMe(Connector*)
virtual void DisconnectMe(Connector*)
Connectors maintain a list of the connectors to
which they are connected. The Connect and Discon-
nect operations update this connector's list, while
the ConnectMe and DisconnectMe operations inform
their argument to update their lists.
void Retransmit(Path*)
void Retransmit(Connector* peer, Path*)
boolean Transferable(Connector* peer)
The Transmit operation uses these operations to
propagate state variable values. The first
Retransmit function calls the second one on each of
the connector's peers (i.e., the connectors to
which it is connected) if the path records that
this connector has not already been visited (other-
wise propagation ceases). The first Retransmit
copies the path if necessary to avoid accumulating
visit information from multiple branches. The sec-
ond Retransmit calls Transferable, which returns
whether the value of this connector's state vari-
able can be transferred to the given peer's state
variable based on the two connectors' transmission
methods. If the values are transferable, then the
Transferable operation carries out the assignment
to the peer's state variable as a side-effect. The
parent and by calling the first Retransmit opera-
tion on the peer.
CONNECTORVIEW PUBLIC OPERATIONS
Connector* GetConnector()
Return the view's subject, if any.
CONNECTORVIEW PROTECTED OPERATIONS
ConnectorView(Connector* = nil)
The constructor takes a subject as an optional
argument. The view will attach itself to the sub-
ject if one is specified.
SEE ALSO
CGlue(3U), GraphicComp(3U), GraphicView(3U), Path(3U),
StateVar(3U), edit(3U0, globals(3U)
Man(1) output converted with
man2html