home *** CD-ROM | disk | FTP | other *** search
- #include <string.h>
- #include <stdio.h>
-
- #include "Desk.Debug.h"
- #include "Defs.h"
-
-
- void Desk_DeskMem_BufferFree( Desk_deskmem_buffer* buffer)
- {
- Desk_Debug_Assert( buffer);
- Desk_Debug_Assert( buffer->data);
-
- Desk_DeskMem_Free( buffer->data);
- buffer->data = NULL;
- buffer->size = 0;
- }
-
-
-
-
- void Desk_DeskMem_BufferEnsure( Desk_deskmem_buffer* buffer, int min)
- {
- int l;
-
- Desk_Debug2_Printf( "Desk_DeskMem_BufferEnsure buffer=%p, min=%i\n", buffer, min);
-
- Desk_Debug_Assert( buffer);
- Desk_Debug_Assert( buffer->increment > 0);
- Desk_Debug_Assert( min>=0);
-
- l = ( 1 + min/buffer->increment) * buffer->increment;
-
- if ( l!=buffer->size) {
- buffer->data = Desk_DeskMem_Realloc( buffer->data, l);
- buffer->size = l;
- Desk_Debug2_Printf( "Desk_DeskMem_BufferEnsure - reallocating buffer %p, new datasize %i (size=%i)\n",
- buffer, min, l
- );
- }
-
- buffer->datasize = min;
-
- return;
- }
-
-
-
-
- void Desk_DeskMem_BufferInit( Desk_deskmem_buffer* buffer, int increment)
- {
- Desk_Debug_Assert( buffer);
- Desk_Debug_Assert( increment>0);
-
- Desk_Debug2_Printf( "Desk_DeskMem_BufferInit, buffer=%p, increment=%i\n", buffer, increment);
-
- buffer->size = 0;
- buffer->datasize = 0;
- buffer->data = Desk_DeskMem_Malloc( 0);
- buffer->increment = increment;
-
- Desk_DeskMem_BufferEnsure( buffer, 0);
- }
-
-
-
-
- void Desk_DeskMem_BufferEnsureExtra( Desk_deskmem_buffer *buffer, int extra)
- {
- Desk_DeskMem_BufferEnsure( buffer, buffer->datasize+extra);
- }
-
-
-
-
- void Desk_DeskMem_BufferStrNCat( Desk_deskmem_buffer* buffer, const char* extra, int extralen)
- {
- int oldlen;
-
- Desk_Debug_Printf( "Desk_DeskMem_BufferStrNCat buffer=%p, extra=%p, extralen=%i\n",
- buffer, extra, extralen
- );
-
- Desk_Debug_Assert( buffer);
- Desk_Debug_Assert( extra);
-
- oldlen = (buffer->data) ? strlen( (char*) buffer->data) : 0;
-
- Desk_Debug_Assert( oldlen < buffer->size);
- Desk_Debug_Assert( oldlen < buffer->datasize);
-
- Desk_DeskMem_BufferEnsure( buffer, oldlen + extralen + 1);
-
- strncat( ((char*) buffer->data) + oldlen, extra, extralen);
- }
-
-
-
-
-
- void Desk_DeskMem_BufferStrCat( Desk_deskmem_buffer* buffer, const char* extra)
- {
- Desk_Debug_Printf( "Desk_DeskMem_BufferStrCat buffer=%p, s=%p\n", buffer, extra);
- Desk_Debug_Assert( extra);
-
- Desk_DeskMem_BufferStrNCat( buffer, extra, strlen( extra));
- }
-
-
-
-
- void Desk_DeskMem_BufferStrCpy( Desk_deskmem_buffer* buffer, const char* s)
- {
- Desk_Debug_Printf( "Desk_DeskMem_BufferStrCpy buffer=%p, s=%p\n", buffer, s);
-
- Desk_Debug_Assert( s);
- Desk_Debug_Assert( buffer);
-
- Desk_DeskMem_BufferEnsure( buffer, 1 + strlen( s));
-
- strcpy( (char*) buffer->data, s);
-
- }
-