#| -*-Scheme-*- $Id$ Copyright 2006 Massachusetts Institute of Technology This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. |# ;;;; Equality constraints make two connectors hold the same values. (declare (usual-integrations)) (define cp:B=A (cp:make-constraint-type 'B=A (lambda (constraint) (let ((connectors (cp:constraint-connectors constraint))) (for-each (lambda (c1) (if (cp:has-value? c1) (for-each (lambda (c2) (if (not (eq? c2 c1)) (cp:set-value c2 (cp:value-of c1) (list c1) constraint))) connectors))) connectors))) (lambda (connectors) (if (not (>= (length connectors) 2)) (error "B=A: Too few connectors:" connectors)))))