/simpletypesystem/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/simpletypesystem/trunk
99 by Gustav Hartvigsson
* Working on RingBuffer and Stream.
1
#include "RingBuffer.h"
2
3
4
struct SRingBuffer {
5
  size_t len;
6
  size_t start;
7
  size_t end;
8
  
9
  sbyte * array;
10
}
11
12
13
SRingBuffer *
14
s_ring_buffer_new (size_t len) {
121.1.3 by Gustav Hartvigsson
* Made the GC switchable at rutime (once) when compiled with S_USE_GC set.
15
  SRingBuffer * self = s_malloc (sizeof (SRingBuffer));
16
  self->array = s_calloc (len, size_t (sbyte));
99 by Gustav Hartvigsson
* Working on RingBuffer and Stream.
17
  
18
  self->len = len;
19
  self->start = 0;
20
  self->end = 0;
21
  
22
  return self;
23
}
24
25
26
void
27
s_ring_buffer_free (SRingBuffer * self) {
121.1.3 by Gustav Hartvigsson
* Made the GC switchable at rutime (once) when compiled with S_USE_GC set.
28
  s_free (self->array);
29
  s_free (self);
99 by Gustav Hartvigsson
* Working on RingBuffer and Stream.
30
}
31
32
sboolean
33
s_ring_buffer_is_empty (SRingBuffer * self) {
34
  return (self->start == self->end);
35
}
36
37
void
38
s_ring_buffer_push (SRingBuffer * self,
39
                    sbyte data);
40
41
42
void
43
s_ring_buffer_push_back (SRingBuffer * self,
44
                         sbyte data);
45
46
47
sbyte
48
s_ring_buffer_pop (SRingBuffer * self);
49
50
51
sbyte
52
s_ring_buffer_pop_back (SRingBuffer * self);
53
54
55
void
56
s_ring_buffer_realloc (SRingBuffer * self,
57
                       size_t len);
58
59
60
size_t
61
s_ring_buffer_len (SRingBuffer * self);
62
63
64
size_t
65
s_ring_buffer_size (SRingBuffer * self);
66
67
68
void
69
s_ring_buffer_for_each (SRingBuffer * self,
70
                        ForEachFunc func,
71
                        spointer user_data);
72