Integrating pointer variables into one-way constraint models
- 1 June 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computer-Human Interaction
- Vol. 1 (2), 161-213
- https://doi.org/10.1145/180171.180174
Abstract
Pointer variables have long been considered useful for constructing and manipulating data structures in traditional programming languages. This article 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 article 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 fault tolerant in that they can handle and recover gracefully 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 experience with applications written in Garnet have proven the usefulness of pointer variable constraints. Many large-scale applications have been implemented using these constraints.Keywords
This publication has 29 references indexed in Scilit:
- Constraint patterns as a basis for object oriented programmingACM SIGPLAN Notices, 1992
- Declarative programming in a prototype-instance systemACM SIGPLAN Notices, 1992
- AlphonseACM SIGPLAN Notices, 1992
- Environment for rapidly creating interactive design toolsThe Visual Computer, 1992
- EquateACM SIGPLAN Notices, 1991
- Incremental attribute evaluationACM Transactions on Programming Languages and Systems, 1991
- A user interface toolkit based on graphical objects and constraintsACM SIGPLAN Notices, 1988
- An object-oriented approach to graphical interfacesACM Transactions on Graphics, 1986
- Incremental Context-Dependent Analysis for Language-Based EditorsACM Transactions on Programming Languages and Systems, 1983
- A High-Level Language for Specifying PicturesACM Transactions on Graphics, 1982