38#ifndef LIBAVOID_VPSC_H
39#define LIBAVOID_VPSC_H
97typedef std::priority_queue<Constraint*,std::vector<Constraint*>,
102 typedef Variables::iterator
Vit;
103 typedef Constraints::iterator
Cit;
142 typedef std::pair<double, Constraint*>
Pair;
181 inline Variable(
const int id,
const double desiredPos=-1.0,
202 COLA_ASSERT(
scale == 1);
330 template <
typename T>
void split(Block *&l, Block *&r, Constraint *c)
Constraint * splitBetween(Variable *vl, Variable *vr, Block *&lb, Block *&rb)
bool canFollowLeft(Constraint const *c, Variable const *last) const
Constraint * findMinInConstraint()
friend std::ostream & operator<<(std::ostream &os, const Block &b)
bool canFollowRight(Constraint const *c, Variable const *last) const
bool getActivePathBetween(Constraints &path, Variable const *u, Variable const *v, Variable const *w) const
void setUpInConstraints()
void reset_active_lm(Variable *const v, Variable *const u)
std::pair< double, Constraint * > Pair
void list_active(Variable *const v, Variable *const u)
void merge(Block *b, Constraint *c, double dist)
Constraint * findMinLMBetween(Variable *const lv, Variable *const rv)
void populateSplitBlock(Block *b, Variable *v, Variable const *u)
void updateWeightedPosition()
Constraints::iterator Cit
bool getActiveDirectedPathBetween(Constraints &path, Variable const *u, Variable const *v) const
Constraints::const_iterator Cit_const
bool isActiveDirectedPathBetween(Variable const *u, Variable const *v) const
void deleteMinInConstraint()
void setUpOutConstraints()
bool split_path(Variable *, Variable *const, Variable *const, Constraint *&min_lm, bool desperation)
Constraint * findMinOutConstraint()
double compute_dfdv(Variable *const v, Variable *const u)
void addVariable(Variable *v)
void deleteMinOutConstraint()
void setUpConstraintHeap(Heap *&h, bool in)
void dfsVisit(Variable *v, std::list< Variable * > *order)
Blocks(Variables const &vs)
void split(Block *b, Block *&l, Block *&r, Constraint *c)
std::vector< Block * > m_blocks
void mergeRight(Block *l)
void removeBlock(Block *doomed)
std::list< Variable * > * totalOrder()
void insert(Block *block)
Block * at(size_t index) const
bool operator()(Constraint *const &l, Constraint *const &r) const
std::string toString(void) const
friend std::ostream & operator<<(std::ostream &os, const Constraint &c)
void addConstraint(Constraint *constraint)
bool constraintGraphIsCyclic(const unsigned n, Variable *const vs[])
Variables const & getVariables()
bool blockGraphIsCyclic()
Constraint * mostViolated(Constraints &l)
bool fixedDesiredPosition
Variable(const int id, const double desiredPos=-1.0, const double weight=1.0, const double scale=1.0)
friend std::ostream & operator<<(std::ostream &os, const Variable &v)
double unscaledPosition(void) const
double position(void) const
A constraint determines a minimum or exact spacing required between two Variable objects.
Incremental solver for Variable Placement with Separation Constraints problem instance.
A variable is comprised of an ideal position, final position and a weight.
libavoid: Object-avoiding orthogonal and polyline connector routing library.
Constraints constraintsRemovingRedundantEqualities(Variables const &vars, Constraints const &constraints)
std::vector< Variable * > Variables
std::vector< Constraint * > Constraints
std::priority_queue< Constraint *, std::vector< Constraint * >, CompareConstraints > Heap
double dist(const Point &a, const Point &b)
std::vector< vpsc::Variable * > Variables
A vector of pointers to Variable objects.
std::vector< vpsc::Constraint * > Constraints
A vector of pointers to Constraint objects.
void addVariable(Variable *const v)
UnsatisfiedConstraint(Constraint &c)