00001
00002
00003
00004 #include "BCP_math.hpp"
00005 #include "BCP_buffer.hpp"
00006 #include "OS_cut.hpp"
00007
00008
00009 void
00010 OS_cut::pack(BCP_buffer& buf) const
00011 {
00012 buf.pack(OsiRowCut::lb());
00013 buf.pack(OsiRowCut::ub());
00014 const CoinPackedVector& v = OsiRowCut::row();
00015 const int numElem = v.getNumElements();
00016 buf.pack(v.getIndices(), numElem);
00017 buf.pack(v.getElements(), numElem);
00018 }
00019
00020
00021 OS_cut::OS_cut(BCP_buffer& buf) :
00022 BCP_cut_algo(-BCP_DBL_MAX, BCP_DBL_MAX), OsiRowCut()
00023 {
00024 double lb, ub;
00025 buf.unpack( lb);
00026 buf.unpack( ub);
00027 OsiRowCut::setLb( lb);
00028 OsiRowCut::setUb( ub);
00029
00030 int numElem;
00031 int* indices;
00032 double* elements;
00033 buf.unpack(indices, numElem, true);
00034 buf.unpack(elements, numElem, true);
00035 OsiRowCut::setRow(numElem, indices, elements);
00036
00037 if(numElem > 0) {
00038 delete[] indices;
00039 delete[] elements;
00040 }
00041 }
00042
00043
00044 OS_cut::OS_cut(const OsiRowCut& cut) :
00045 BCP_cut_algo(cut.lb(), cut.ub()), OsiRowCut(cut)
00046 {}
00047
00048
00049 BCP_MemPool OS_cut::memPool(sizeof(OS_cut));