Mercurial > hg > aim92
diff stitch/buffer.h @ 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stitch/buffer.h Fri May 20 15:19:45 2011 +0100 @@ -0,0 +1,26 @@ +/* + + buffer.h + ======== + + simple generic buffer abstraction. + +*/ + +#define DeleteBuffer( _buffer ) ( FreeBuffer( _buffer ), _buffer = 0 ) + +#define BufferSize( _buffer ) ( ( _buffer )->size ) +#define BufferPointer( _buffer ) ( ( _buffer )->addr ) +#define SetBufferSize( _buffer, _size ) ( ( _buffer )->size = _size ) +#define SetBufferPointer( _buffer, _addr ) ( ( _buffer )->addr = _addr ) +#define SizedBufferPointer( _buffer, _size ) ( BufferPointer( ( ( _size ) > BufferSize( _buffer ) ) ? ResizedBuffer( _buffer, _size ) : _buffer ) ) + +typedef struct _buffer *Buffer ; + + +struct _buffer { Pointer addr ; unsigned size, refs ; } ; + +extern Buffer NewBuffer( /* char where[] */ ) ; +extern Buffer SharedBuffer( /* Buffer buffer */ ) ; +extern Buffer ResizedBuffer( /* Buffer buffer, unsigned size */ ) ; +extern void FreeBuffer( /* Buffer buffer */ ) ;