A System for Efficient and Flexible One-Way Constraint Evaluation in C++
This paper describes the Eval/vite system for compiling one-way constraints into C++ objects, as well as the highly efficient lazy and incremental evaluation algorithm behind it. This system supports the creation of C++ object classes whose members are controlled by one-way constraint equations. These objects are declared with simple specifications much like C++ class declarations. The system is designed to work smoothly with other C++ code, producing type-safe code which supports normal inheritance and information hiding mechanisms and works with most types. In particular, the system efficiently supports constraints involving indirection either through pointers or C++ reference types. The system also works with other sophisticated constructs such as the use of function valued constraint equations.