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