comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:5242703e91d3
1 /*
2 buffer.c
3 ========
4
5 generic data buffer
6
7 */
8
9
10 #include "stitch.h"
11 #include "buffer.h"
12
13 Buffer NewBuffer( where )
14 char where ;
15 {
16 DeclareNew( Buffer, buffer ) ;
17
18 buffer->size = 0 ;
19 buffer->refs = 1 ;
20
21 return ( buffer ) ;
22 }
23
24 Buffer SharedBuffer( buffer )
25 Buffer buffer ;
26 {
27 buffer->refs++ ;
28
29 return ( buffer ) ;
30 }
31
32 Buffer ResizedBuffer( buffer, size )
33 Buffer buffer ;
34 unsigned size ;
35 {
36 if( size > BufferSize( buffer ) || size == 0 ) {
37
38 if( BufferSize( buffer ) != 0 )
39 Free( BufferPointer( buffer ) ) ;
40
41 SetBufferSize( buffer, size ) ;
42
43 if( size != 0 )
44 SetBufferPointer( buffer, Malloc( size, "buffer.c for buffer" ) ) ;
45 }
46
47 return ( buffer ) ;
48 }
49
50 void FreeBuffer( buffer )
51 Buffer buffer ;
52 {
53 if( --buffer->refs == 0 )
54 Free( ResizedBuffer( buffer, 0 ) ) ;
55
56 return ;
57 }