``Integrating Pointer Variables into One-Way Constraint Models''
Bradley T. Vander Zanden,
Brad Myers,
Dario Giuse, and
Pedro Szekely
ACM Transactions on Computer Human
Interaction,
1, 2, (June 1994), 161-213.
Available via anonymous ftp to cs.utk.edu in
pub/bvz/papers/tochi94.ps.Z.
Abstract
Pointer variables have long been considered useful
for constructing and manipulating data structures in traditional
programming languages.
This paper discusses how pointer variables can be integrated
into one-way constraint models and indicates
how these constraints can be usefully employed in user
interfaces.
Pointer variables
allow constraints to model a wide array of dynamic application behavior,
simplify the implementation of structured objects and demonstrational
systems,
and improve the storage and efficiency of constraint-based applications.
This paper also presents two incremental
algorithms--one lazy and one eager--for
solving constraints with pointer variables.
Both algorithms are capable of handling 1) arbitrary systems of
one-way constraints, including constraints that involve cycles; and
2) editing models that allow
multiple changes between calls to
the constraint solver.
These algorithms are also fault-tolerant in that they can gracefully
handle and recover from formulas that crash due to programmer error.
Constraints that use pointer variables have been implemented
in a comprehensive user interface
toolkit, Garnet, and our experiences with applications written
in Garnet have
proven the usefulness of pointer-variable constraints.
Many large
scale applications have now been implemented using these constraints.