Beispiel #1
0
void CStateTemplate::resize()
{
  unsigned C_INT32 OldSize = mSize;

  if (mSize)
    mSize *= 2;
  else
    mSize = 16;

  // Resize the entities array.
  CModelEntity ** pTmp = mpEntities;
  mpEntities = new CModelEntity * [mSize];
  memcpy(mpEntities, pTmp, sizeof(CModelEntity *) * OldSize);
  pdeletev(pTmp);

  // Resize the states
  C_FLOAT64 * pInitialValues = mpInitialValues = mInitialState.resize(mSize);
  C_FLOAT64 * pCurrentValues = mpCurrentValues = mCurrentState.resize(mSize);

  // Update all pointers in the entities
  pTmp = mpEntities;
  CModelEntity ** pEnd = pTmp + mInsert;

  for (; pTmp != pEnd; ++pTmp, ++pInitialValues, ++pCurrentValues)
    if (*pTmp != NULL)
      {
        (*pTmp)->setInitialValuePtr(pInitialValues);
        (*pTmp)->setValuePtr(pCurrentValues);
      }
}
Beispiel #2
0
CState & CState::operator=(const CState & rhs)
{
  if (this != &rhs)
    {
      if (mSize != rhs.mSize)
        {
          pdeletev(mpValues);
          mpValues = new C_FLOAT64[rhs.mSize];
          mSize = rhs.mSize;
        }

      memcpy(mpValues, rhs.mpValues, sizeof(C_FLOAT64) * mSize);
      mpBeginIndependent = mpValues + (rhs.mpBeginIndependent - rhs.mpValues);
      mpBeginDependent = mpValues + (rhs.mpBeginDependent - rhs.mpValues);
      mpBeginFixed = mpValues + (rhs.mpBeginFixed - rhs.mpValues);
      mpEnd = mpValues + (rhs.mpEnd - rhs.mpValues);
      mUpdateDependentRequired = rhs.mUpdateDependentRequired;
    }

  return *this;
}
Beispiel #3
0
C_FLOAT64 * CState::resize(const unsigned C_INT32 & size)
{
  if (mSize != size)
    {
      C_FLOAT64 * pTmp = mpValues;

      if (size > 0)
        {
          mpValues = new C_FLOAT64[size];
          memcpy(mpValues, pTmp, sizeof(C_FLOAT64) * std::min(mSize, size));
        }
      else
        mpValues = NULL;

      pdeletev(pTmp);
      mSize = size;
    }

  updateIterator(getNumIndependent(), getNumDependent(), getNumFixed());

  return mpValues;
}
Beispiel #4
0
CCompressedColumnFormat::~CCompressedColumnFormat()
{
  pdelete(mpValue);
  pdelete(mpRowIndex);
  pdeletev(mpColumnStart);
}
Beispiel #5
0
CStateTemplate::~CStateTemplate()
{
  pdeletev(mpEntities);
}
Beispiel #6
0
CState::~CState() {pdeletev(mpValues);}