view 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 source
/*

    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 */ ) ;