Mercurial > hg > aim92
view stitch/buffer.c @ 0:5242703e91d3 tip
Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author | tomwalters |
---|---|
date | Fri, 20 May 2011 15:19:45 +0100 |
parents | |
children |
line wrap: on
line source
/* buffer.c ======== generic data buffer */ #include "stitch.h" #include "buffer.h" Buffer NewBuffer( where ) char where ; { DeclareNew( Buffer, buffer ) ; buffer->size = 0 ; buffer->refs = 1 ; return ( buffer ) ; } Buffer SharedBuffer( buffer ) Buffer buffer ; { buffer->refs++ ; return ( buffer ) ; } Buffer ResizedBuffer( buffer, size ) Buffer buffer ; unsigned size ; { if( size > BufferSize( buffer ) || size == 0 ) { if( BufferSize( buffer ) != 0 ) Free( BufferPointer( buffer ) ) ; SetBufferSize( buffer, size ) ; if( size != 0 ) SetBufferPointer( buffer, Malloc( size, "buffer.c for buffer" ) ) ; } return ( buffer ) ; } void FreeBuffer( buffer ) Buffer buffer ; { if( --buffer->refs == 0 ) Free( ResizedBuffer( buffer, 0 ) ) ; return ; }