1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/* $Id: MyMessageHandler.hpp 1665 2011-01-04 17:55:54Z lou $ */
// Copyright (C) 2003, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
#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
|