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