// Copyright (C) 2003, International Business Machines // Corporation and others. All Rights Reserved. #ifndef MyMessageHandler_H #define MyMessageHandler_H #include #include "CoinPragma.hpp" #include #include "CoinMessageHandler.hpp" /** This just adds a model to CoinMessage and a void pointer so user can trap messages and do useful stuff. This is used in Clp/Test/unitTest.cpp The file pointer is just there as an example of user stuff. In practice you might have */ class ClpSimplex; typedef std::vector StdVectorDouble; class MyMessageHandler : public CoinMessageHandler { public: /**@name Overrides */ //@{ virtual int print(); //@} /**@name set and get */ //@{ /// Model const ClpSimplex * model() const; void setModel(ClpSimplex * model); /// Get queue of feasible extreme points const std::deque & getFeasibleExtremePoints() const; /// Empty queue of feasible extreme points void clearFeasibleExtremePoints(); //@} /**@name Constructors, destructor */ //@{ /** Default constructor. */ MyMessageHandler(); /// Constructor with pointer to model MyMessageHandler(ClpSimplex * model, FILE * userPointer=NULL); /** Destructor */ virtual ~MyMessageHandler(); //@} /**@name Copy method */ //@{ /** The copy constructor. */ MyMessageHandler(const MyMessageHandler&); /** The copy constructor from an CoinSimplexMessageHandler. */ MyMessageHandler(const CoinMessageHandler&); MyMessageHandler& operator=(const MyMessageHandler&); /// Clone virtual CoinMessageHandler * clone() const ; //@} protected: /**@name Data members The data members are protected to allow access for derived classes. */ //@{ /// Pointer back to model ClpSimplex * model_; /// Saved extreme points std::deque feasibleExtremePoints_; /// Iteration number so won't do same one twice int iterationNumber_; //@} }; #endif