// Copyright (C) 2000, International Business Machines
// Corporation and others. All Rights Reserved.
#if defined(_MSC_VER)
// Turn off compiler warning about long names
# pragma warning(disable:4786)
#endif
#include "CoinHelperFunctions.hpp"
#include "CoinShallowPackedVector.hpp"
//#############################################################################
void
CoinShallowPackedVector::clear()
{
clearBase();
indices_ = NULL;
elements_ = NULL;
nElements_ = 0;
}
//#############################################################################
CoinShallowPackedVector&
CoinShallowPackedVector::operator=(const CoinPackedVectorBase & x)
{
if (&x != this) {
indices_ = x.getIndices();
elements_ = x.getElements();
nElements_ = x.getNumElements();
CoinPackedVectorBase::clearBase();
CoinPackedVectorBase::copyMaxMinIndex(x);
try {
CoinPackedVectorBase::duplicateIndex();
}
catch (CoinError e) {
throw CoinError("duplicate index", "operator= from base",
"CoinShallowPackedVector");
}
}
return *this;
}
//#############################################################################
CoinShallowPackedVector&
CoinShallowPackedVector::operator=(const CoinShallowPackedVector & x)
{
if (&x != this) {
indices_ = x.indices_;
elements_ = x.elements_;
nElements_ = x.nElements_;
CoinPackedVectorBase::clearBase();
CoinPackedVectorBase::copyMaxMinIndex(x);
try {
CoinPackedVectorBase::duplicateIndex();
}
catch (CoinError e) {
throw CoinError("duplicate index", "operator=",
"CoinShallowPackedVector");
}
}
return *this;
}
//#############################################################################
void
CoinShallowPackedVector::setVector(int size,
const int * inds, const double * elems,
bool testForDuplicateIndex)
{
indices_ = inds;
elements_ = elems;
nElements_ = size;
CoinPackedVectorBase::clearBase();
try {
CoinPackedVectorBase::setTestForDuplicateIndex(testForDuplicateIndex);
}
catch (CoinError e) {
throw CoinError("duplicate index", "setVector",
"CoinShallowPackedVector");
}
}
//#############################################################################
//-------------------------------------------------------------------
// Default
//-------------------------------------------------------------------
CoinShallowPackedVector::CoinShallowPackedVector(bool testForDuplicateIndex) :
CoinPackedVectorBase(),
indices_(NULL),
elements_(NULL),
nElements_(0)
{
try {
CoinPackedVectorBase::setTestForDuplicateIndex(testForDuplicateIndex);
}
catch (CoinError e) {
throw CoinError("duplicate index", "default constructor",
"CoinShallowPackedVector");
}
}
//-------------------------------------------------------------------
// Explicit
//-------------------------------------------------------------------
CoinShallowPackedVector::CoinShallowPackedVector(int size,
const int * inds,
const double * elems,
bool testForDuplicateIndex) :
CoinPackedVectorBase(),
indices_(inds),
elements_(elems),
nElements_(size)
{
try {
CoinPackedVectorBase::setTestForDuplicateIndex(testForDuplicateIndex);
}
catch (CoinError e) {
throw CoinError("duplicate index", "explicit constructor",
"CoinShallowPackedVector");
}
}
//-------------------------------------------------------------------
// Copy
//-------------------------------------------------------------------
CoinShallowPackedVector::CoinShallowPackedVector(const CoinPackedVectorBase& x) :
CoinPackedVectorBase(),
indices_(x.getIndices()),
elements_(x.getElements()),
nElements_(x.getNumElements())
{
CoinPackedVectorBase::copyMaxMinIndex(x);
try {
CoinPackedVectorBase::setTestForDuplicateIndex(x.testForDuplicateIndex());
}
catch (CoinError e) {
throw CoinError("duplicate index", "copy constructor from base",
"CoinShallowPackedVector");
}
}
//-------------------------------------------------------------------
// Copy
//-------------------------------------------------------------------
CoinShallowPackedVector::CoinShallowPackedVector(const
CoinShallowPackedVector& x) :
CoinPackedVectorBase(),
indices_(x.getIndices()),
elements_(x.getElements()),
nElements_(x.getNumElements())
{
CoinPackedVectorBase::copyMaxMinIndex(x);
try {
CoinPackedVectorBase::setTestForDuplicateIndex(x.testForDuplicateIndex());
}
catch (CoinError e) {
throw CoinError("duplicate index", "copy constructor",
"CoinShallowPackedVector");
}
}
//-------------------------------------------------------------------
// Print
//-------------------------------------------------------------------
void CoinShallowPackedVector::print()
{
for (int i=0; i < nElements_; i++)
{
std::cout << indices_[i] << ":" << elements_[i];
if (i < nElements_-1)
std::cout << ", ";
}
std::cout << std::endl;
}
syntax highlighted by Code2HTML, v. 0.9.1