``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.

Postcript of the paper

Pdf of the paper