diff options
Diffstat (limited to 'libs/cassowary/cassowary/ClSolver.h')
-rw-r--r-- | libs/cassowary/cassowary/ClSolver.h | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/libs/cassowary/cassowary/ClSolver.h b/libs/cassowary/cassowary/ClSolver.h deleted file mode 100644 index 16e798d491..0000000000 --- a/libs/cassowary/cassowary/ClSolver.h +++ /dev/null @@ -1,167 +0,0 @@ -// $Id$ -// -// Cassowary Incremental Constraint Solver -// Original Smalltalk Implementation by Alan Borning -// This C++ Implementation by Greg J. Badros, <gjb@cs.washington.edu> -// http://www.cs.washington.edu/homes/gjb -// (C) 1998, 1999 Greg J. Badros and Alan Borning -// See ../LICENSE for legal details regarding this software -// -// ClSolver.h - -#ifndef ClSolver_H -#define ClSolver_H - -#if defined(HAVE_CONFIG_H) && !defined(CONFIG_H_INCLUDED) && !defined(CONFIG_INLINE_H_INCLUDED) -#include <cassowary/config-inline.h> -#define CONFIG_INLINE_H_INCLUDED -#endif - -#include "Cassowary.h" -#include "ClErrors.h" -#include "ClTypedefs.h" -#include <list> -#include <iostream> - -using std::list; -using std::ostream; - -class ClVariable; - -// ClSolver is an abstract base class -class ClSolver { - public: - - ClSolver() : _pv(0), _fAutosolve(true), _pfnChangeClvCallback(0) { } - - virtual ~ClSolver() - { } - - // Add the constraint cn to the solver - virtual ClSolver &AddConstraint(ClConstraint *const pcn) = 0; - - // Remove the constraint cn from the solver - virtual ClSolver &RemoveConstraint(ClConstraint *const pcn) = 0; - - // Same as above, but returns false if the constraint cannot be solved - // (i.e., the resulting system would be unsatisfiable) - // The above function "AddConstraint" throws an exception in that case - // which may be inconvenient - virtual bool AddConstraintNoException(ClConstraint *const pcn) - { - try { - AddConstraint(pcn); - return true; - } - catch (const ExCLRequiredFailure &e) - { return false; } - catch (const ExCLTooDifficult &e) - { return false; } - } - -#ifndef CL_NO_DEPRECATED - // Deprecated --02/22/99 gjb - bool AddConstraintNoException(ClConstraint &cn) - { return AddConstraintNoException(&cn); } -#endif - - virtual bool RemoveConstraintNoException(ClConstraint *const pcn) - { - try { - RemoveConstraint(pcn); - return true; - } - catch (const ExCLConstraintNotFound &e) - { return false; } - } - -#ifndef CL_NO_DEPRECATED - // Deprecated --02/22/99 gjb - bool RemoveConstraintNoException(ClConstraint &cn) - { return RemoveConstraintNoException(&cn); } -#endif - - - virtual ClSolver &Solve() - { assert(false); return *this; } - - virtual bool SolveNoException() - { - try { - Solve(); - return true; - } - catch (const ExCLTooDifficult &e) - { return false; } - catch (const ExCLRequiredFailure &e) - { return false; } - } - - - virtual void Resolve() - { assert(false); } - - void SetPv(void *pv) - { _pv = pv; } - - void *Pv() const - { return _pv; } - - typedef void (*PfnChangeClvCallback)(ClVariable *pclv, ClSolver *psolver); - - void SetChangeClvCallback(PfnChangeClvCallback pfn) - { _pfnChangeClvCallback = pfn; } - - // Control whether optimization and setting of external variables - // is done automatically or not. By default it is done - // automatically and solve() never needs to be explicitly - // called by client code; if SetAutosolve is put to false, - // then solve() needs to be invoked explicitly before using - // variables' values - // (Turning off autosolve while adding lots and lots of - // constraints [ala the addDel test in ClTests] saved - // about 20% in runtime, from 68sec to 54sec for 900 constraints, - // with 126 failed adds) - ClSolver &SetAutosolve(bool f) - { _fAutosolve = f; if (f) Solve(); return *this; } - - // Tell whether we are autosolving - bool FIsAutosolving() const - { return _fAutosolve; } - - -#ifndef CL_NO_IO - friend ostream &operator<<(ostream &xo, const ClSolver &solver); - - virtual ostream &PrintOn(ostream &xo) const = 0; - -#endif - - protected: - - // C-style extension mechanism so I - // don't have to wrap ScwmClSolver separately - void *_pv; - - bool _fAutosolve; - - PfnChangeClvCallback _pfnChangeClvCallback; -}; - - -#ifndef CL_NO_IO -ostream &PrintTo(ostream &xo, const ClVarVector &varlist); -ostream &operator<<(ostream &xo, const ClVarVector &varlist); - -ostream &PrintTo(ostream &xo, const ClConstraintToVarSetMap &mapCnToVarSet); -ostream &operator<<(ostream &xo, const ClConstraintToVarSetMap &mapCnToVarSet); - -ostream &PrintTo(ostream &xo, const ClConstraintSet &setCn); -ostream &operator<<(ostream &xo, const ClConstraintSet &setCn); - -ostream &PrintTo(ostream &xo, const list<FDNumber> &listFDN); -ostream &operator<<(ostream &xo, const list<FDNumber> &listFDN); - -#endif - -#endif |