Return TypeFunction nameArguments
unsigned inthzXbuf::Append(const void*,unsigned int,)

Declared in file: hzXbuf.h
Defined in file : hzXbuf.cpp

Function Logic:

0:START 1:!nBytes 2:Return nBytes 3:!mx 4:mx 5:!mx->m_Begin 6:_xblk_alloc mx mx 7:curBlk 8:!curBlk 9:Fatal 10:i 11:nWritten 12:curBlk->xize==XBLKSIZE 13:_xblk_alloc newBlk 14:!newBlk 15:Fatal 16:_xblk::Next mx curBlk 17:nCan 18:(nWritten+nCan)>nBytes 19:nCan 20:memcpy curBlk i mx nWritten 21:Return nWritten

Function body:

unsigned int hzXbuf::Append (const void* vpStr, unsigned int nBytes)
{
   _hzfunc("hzXbuf::Append(1)") ;
   _xblk*      curBlk ;
   _xblk*      newBlk ;
   const char* i ;
   uint32_t    nCan ;
   uint32_t    nWritten = 0;
   if (!nBytes)
       return nBytes ;
   if (!mx)
       mx = new _xbuf() ;
   if (!mx->m_Begin)
       mx->m_Begin = mx->m_End = _xblk_alloc() ;
   curBlk = (_xblk*) mx->m_End ;
   if (!curBlk)
       Fatal("Chain %p has no end block\n", this) ;
   i = (char*) vpStr ;
   for (; nWritten < nBytes ;)
   {
       if (curBlk->xize == XBLKSIZE)
       {
           newBlk = _xblk_alloc() ;
           if (!newBlk)
               Fatal("No allocation (case 2)\n") ;
           curBlk->Next(newBlk) ;
           mx->m_End = newBlk ;
           curBlk = newBlk ;
       }
       nCan = XBLKSIZE - curBlk->xize ;
       if ((nWritten + nCan) > nBytes)
           nCan = nBytes - nWritten ;
       memcpy(curBlk->m_Data + curBlk->xize, i, nCan) ;
       curBlk->xize += nCan ;
       i += nCan ;
       mx->m_nSize += nCan ;
       nWritten += nCan ;
   }
   return nWritten ;
}