Graphviz 14.1.3~dev.20260207.0611
Loading...
Searching...
No Matches
constraint.cpp
Go to the documentation of this file.
1
19#include "config.h"
20
21#include <vpsc/constraint.h>
22#include <cassert>
23Constraint::Constraint(Variable *left_, Variable *right_, double gap_)
24 : left(left_), right(right_), gap(gap_), timeStamp(0), active(false),
25 visited(false) {
26 left->out.push_back(this);
27 right->in.push_back(this);
28}
30 Constraints::iterator i;
31 for(i=left->out.begin(); i!=left->out.end(); i++) {
32 if(*i==this) break;
33 }
34 left->out.erase(i);
35 for(i=right->in.begin(); i!=right->in.end(); i++) {
36 if(*i==this) break;
37 }
38 right->in.erase(i);
39}
40std::ostream& operator <<(std::ostream &os, const Constraint &c)
41{
42 os<<*c.left<<"+"<<c.gap<<"<="<<*c.right<<"("<<c.slack()<<")"<<(c.active?"-active":"");
43 return os;
44}
#define right(i)
Definition closest.c:74
std::ostream & operator<<(std::ostream &os, const Constraint &c)
#define left
Definition dthdr.h:12
A constraint determines a minimum or exact spacing required between two variables.
Definition constraint.h:25
Variable * right
Definition constraint.h:29
double gap
Definition constraint.h:30
Variable * left
Definition constraint.h:28
bool active
Definition constraint.h:36
Constraint(Variable *left, Variable *right, double gap)
A constraint determines a minimum or exact spacing required between two variables.
double slack() const
Definition constraint.h:34
Constraints out
Definition variable.h:36
Constraints in
Definition variable.h:35