Provided by: ivtools-dev_2.0.11d.a1-3build1_amd64 

NAME
CSolver - enforces connector semantics
SYNOPSIS
#include <Unidraw/csolver.h>
DESCRIPTION
A CSolver object defines and implements a model for specifying connectivity semantics that connector
subclasses can build upon to implement their specialized semantics. Normally, only one CSolver instance
is used per application, and only connector subclasses need access it. The Unidraw class constructor
initializes the csolver global to point to a CSolver instance it creates. Thus applications should not
instantiate CSolver directly.
CSolver models a connection between two connectors (regardless of their particular subclass or semantics)
as a pair of generic connectors with a piece of CGlue interposed. The CGlue characterizes the
relationship between the connectors' centers in terms of a natural size (which corresponds to the
distance between the centers), elasticity, and deformation limits. Connector subclasses specify their
connectivity behavior with a CGlue instance and subsequently rely on the CSolver to reorient them to
conform to that behavior. For example, when a pin is told to connect itself to another pin, it registers
with the global csolver a connection containing the two connectors (the pins themselves) and a piece of
CGlue having zero natural size, elasticity, and deformation limits. This specification effectively
constrains the connectors' centers to coincide. The connectivity semantics of other connector
combinations, including those involving application-specific connectors, must be specified using CGlue.
PUBLIC OPERATIONS
CSolver()
Create a new instance. Application programs do not normally instantiate CSolver explicitly.
virtual void Connect(Connector*, Connector*, CGlue* = nil)
Specify a connection between two connectors, optionally with a piece of CGlue interposed.
Omitting the CGlue parameter is equivalent to specifying a connection with CGlue having zero
natural size, elasticity, and deformation limits.
void Disconnect(Connector*, Connector*)
void Disconnect(Connector*)
Destroy the connection(s) established between two connectors (the two-parameter form), or destroy
all connections to a given connector (the one-parameter form).
void Solve()
Solve instructs the CSolver to reorient connected connectors to conform to their connectivity
semantics as reflected by its connection specifications. Normally this function is called
automatically and only in response to Unidraw::Update.
CSolverState* GetState(Connector*)
void SetState(CSolverState*)
CSolverState is a class that encapsulates all the information about the connections in which a
connector participates. Only CSolver can create or do anything with a CSolverState instance.
GetState initializes and returns a CSolverState instance for the given connector, and SetState
establishes the connections that a CSolverState instance specifies without disturbing existing
connections. These operations are useful when it is necessary to reestablish a connector's
connections after they have been lost, for example, by removing the connector from the component
hierarchy (as caused by a command to delete the component).
void Read(istream&)
void Write(ostream&)
Explicitly read/write the csolver's contents from/to disk. Normally only a catalog calls these
operations.
SEE ALSO
Catalog(3U), GGlue(3U), Connector(3U), globals(3U)
Unidraw 20 November 1990 CSolver(3U)