diff options
Diffstat (limited to 'src/libvpsc/blocks.h')
| -rw-r--r-- | src/libvpsc/blocks.h | 63 |
1 files changed, 52 insertions, 11 deletions
diff --git a/src/libvpsc/blocks.h b/src/libvpsc/blocks.h index e3223822e..b711a529f 100644 --- a/src/libvpsc/blocks.h +++ b/src/libvpsc/blocks.h @@ -33,21 +33,62 @@ class Constraint; class Blocks : public std::set<Block*> { public: - Blocks(const int n, Variable* const vs[]); + Blocks(const int n, Variable* const vs[]); + virtual ~Blocks(void); - void mergeLeft(Block *r); - void mergeRight(Block *l); - void split(Block *b, Block *&l, Block *&r, Constraint *c); - std::list<Variable*> *totalOrder(); - void cleanup(); - double cost(); + + /** + * Processes incoming constraints, most violated to least, merging with the + * neighbouring (left) block until no more violated constraints are found. + */ + void mergeLeft(Block *r); + + /** + * Symmetrical to mergeLeft. + * @see mergeLeft + */ + void mergeRight(Block *l); + + /** + * Splits block b across constraint c into two new blocks, l and r (c's left + * and right sides respectively). + */ + void split(Block *b, Block *&l, Block *&r, Constraint *c); + + /** + * Returns a list of variables with total ordering determined by the constraint + * DAG. + */ + std::list<Variable*> *totalOrder(); + + void cleanup(); + + /** + * Returns the cost total squared distance of variables from their desired + * positions. + */ + double cost(); + private: - void dfsVisit(Variable *v, std::list<Variable*> *order); - void removeBlock(Block *doomed); - Variable* const *vs; - int nvs; + void dfsVisit(Variable *v, std::list<Variable*> *order); + + void removeBlock(Block *doomed); + + Variable* const *vs; + + int nvs; }; extern long blockTimeCtr; } #endif // SEEN_REMOVEOVERLAP_BLOCKS_H +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |
