Пример #1
0
CTString &CTString::operator+=(const CTString &strSecond)
{
  ASSERT(IsValid() && strSecond.IsValid());

  GrowMemory( (void **)&str_String, strlen( str_String) + strlen( strSecond) + 1 );
  strcat(str_String, strSecond.str_String);
  return *this;
}
Пример #2
0
// expand buffer to be given number of bytes in size
void CBuffer::Expand(SLONG slNewSize)
{
    ASSERT(slNewSize>0);
    ASSERT(bu_slSize>=0);
    // if not already allocated
    if (bu_slSize==0) {
        // allocate a new empty buffer
        ASSERT(bu_pubBuffer==NULL);
        bu_pubBuffer = (UBYTE*)AllocMemory(slNewSize);
        bu_slWriteOffset = 0;
        bu_slReadOffset = 0;
        bu_slFree = slNewSize;
        bu_slSize = slNewSize;

        // if already allocated
    } else {
        ASSERT(slNewSize>bu_slSize);
        SLONG slSizeDiff = slNewSize-bu_slSize;
        ASSERT(bu_pubBuffer!=NULL);
        // grow buffer
        GrowMemory((void**)&bu_pubBuffer, slNewSize);

        // if buffer is currently wrapping
        if (bu_slReadOffset>bu_slWriteOffset||bu_slFree==0) {
            // move part at the end of buffer to the end
            memmove(bu_pubBuffer+bu_slReadOffset+slSizeDiff, bu_pubBuffer+bu_slReadOffset,
                    bu_slSize-bu_slReadOffset);
            bu_slReadOffset+=slSizeDiff;
        }
        bu_slFree += slNewSize-bu_slSize;
        bu_slSize = slNewSize;

        ASSERT(bu_slReadOffset>=0 && bu_slReadOffset<bu_slSize);
        ASSERT(bu_slFree>=0 && bu_slFree<=bu_slSize);
    }
}
Пример #3
0
ON_3dVector* ON_Workspace::GrowVectorMemory( ON_3dVector* p, size_t size )
{
  ON_3dVector* v3d = (ON_3dVector*)(GrowMemory(p,size*sizeof(*v3d)));
  return v3d;
}
Пример #4
0
ON_3dPoint* ON_Workspace::GrowPointMemory( ON_3dPoint* p, size_t size )
{
  ON_3dPoint* p3d = (ON_3dPoint*)(GrowMemory(p,size*sizeof(*p3d)));
  return p3d;
}
Пример #5
0
double* ON_Workspace::GrowDoubleMemory( double* p, size_t size )
{
  double* pd = (double*)(GrowMemory(p,size*sizeof(*pd)));
  return pd;
}
Пример #6
0
int* ON_Workspace::GrowIntMemory( int* p, size_t size )
{
  int* pi = (int*)(GrowMemory(p,size*sizeof(*pi)));
  return pi;
}