lemon/lp_skeleton.h
changeset 587 9db62975c32b
parent 576 f5bc148f7e1f
child 588 89e29e22d479
     1.1 --- a/lemon/lp_skeleton.h	Thu Feb 26 09:39:02 2009 +0000
     1.2 +++ b/lemon/lp_skeleton.h	Thu Feb 26 07:39:16 2009 +0000
     1.3 @@ -22,10 +22,16 @@
     1.4  #include <lemon/lp_base.h>
     1.5  
     1.6  ///\file
     1.7 -///\brief A skeleton file to implement LP solver interfaces
     1.8 +///\brief Skeleton file to implement LP/MIP solver interfaces
     1.9 +///  
    1.10 +///The classes in this file do nothing, but they can serve as skeletons when
    1.11 +///implementing an interface to new solvers.
    1.12  namespace lemon {
    1.13  
    1.14 -  ///A skeleton class to implement LP solver interfaces
    1.15 +  ///A skeleton class to implement LP/MIP solver base interface
    1.16 +  
    1.17 +  ///This class does nothing, but it can serve as a skeleton when
    1.18 +  ///implementing an interface to new solvers.
    1.19    class SkeletonSolverBase : public virtual LpBase {
    1.20      int col_num,row_num;
    1.21  
    1.22 @@ -136,14 +142,20 @@
    1.23  
    1.24    };
    1.25  
    1.26 -  /// \brief Interface for a skeleton LP solver
    1.27 +  /// \brief Skeleton class for an LP solver interface
    1.28    ///
    1.29 -  /// This class implements an interface for a skeleton LP solver.
    1.30 +  ///This class does nothing, but it can serve as a skeleton when
    1.31 +  ///implementing an interface to new solvers.
    1.32 +
    1.33    ///\ingroup lp_group
    1.34 -  class LpSkeleton : public SkeletonSolverBase, public LpSolver {
    1.35 +  class LpSkeleton : public LpSolver, public SkeletonSolverBase {
    1.36    public:
    1.37 -    LpSkeleton() : SkeletonSolverBase(), LpSolver() {}
    1.38 -
    1.39 +    ///\e
    1.40 +    LpSkeleton() : LpSolver(), SkeletonSolverBase() {}
    1.41 +    ///\e
    1.42 +    virtual LpSkeleton* newSolver() const;
    1.43 +    ///\e
    1.44 +    virtual LpSkeleton* cloneSolver() const;
    1.45    protected:
    1.46  
    1.47      ///\e
    1.48 @@ -173,21 +185,23 @@
    1.49      virtual VarStatus _getRowStatus(int i) const;
    1.50  
    1.51      ///\e
    1.52 -    virtual LpSkeleton* _newSolver() const;
    1.53 -    ///\e
    1.54 -    virtual LpSkeleton* _cloneSolver() const;
    1.55 -    ///\e
    1.56      virtual const char* _solverName() const;
    1.57  
    1.58    };
    1.59  
    1.60 -  /// \brief Interface for a skeleton MIP solver
    1.61 +  /// \brief Skeleton class for a MIP solver interface
    1.62    ///
    1.63 -  /// This class implements an interface for a skeleton MIP solver.
    1.64 +  ///This class does nothing, but it can serve as a skeleton when
    1.65 +  ///implementing an interface to new solvers.
    1.66    ///\ingroup lp_group
    1.67 -  class MipSkeleton : public SkeletonSolverBase, public MipSolver {
    1.68 +  class MipSkeleton : public MipSolver, public SkeletonSolverBase {
    1.69    public:
    1.70 -    MipSkeleton() : SkeletonSolverBase(), MipSolver() {}
    1.71 +    ///\e
    1.72 +    MipSkeleton() : MipSolver(), SkeletonSolverBase() {}
    1.73 +    ///\e
    1.74 +    virtual MipSkeleton* newSolver() const;
    1.75 +    ///\e
    1.76 +    virtual MipSkeleton* cloneSolver() const;
    1.77  
    1.78    protected:
    1.79      ///\e
    1.80 @@ -215,13 +229,7 @@
    1.81      virtual ProblemType _getType() const;
    1.82  
    1.83      ///\e
    1.84 -    virtual MipSkeleton* _newSolver() const;
    1.85 -
    1.86 -    ///\e
    1.87 -    virtual MipSkeleton* _cloneSolver() const;
    1.88 -    ///\e
    1.89      virtual const char* _solverName() const;
    1.90 -
    1.91    };
    1.92  
    1.93  } //namespace lemon