// Copyright (C) 2003, International Business Machines
// Corporation and others. All Rights Reserved.
#ifndef MyMessageHandler_H
#define MyMessageHandler_H
#include <deque>
#include "CoinPragma.hpp"
#include <stdio.h>
#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<double> 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<StdVectorDouble> & 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<StdVectorDouble> feasibleExtremePoints_;
/// Iteration number so won't do same one twice
int iterationNumber_;
//@}
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1