EE445M RTOS
Taken at the University of Texas Spring 2015
buffer.h
Go to the documentation of this file.
1 /* -*- mode: c; c-basic-offset: 4; -*- */
2 /* Created by Eric Crosson 2015-03-04 */
3 /* Revision history: Look in Git FGT */
4 #ifndef __BUFFER__
5 #define __BUFFER__
6 
18 #define BUFFER_MAX_LENGTH 32
19 #define BUFFER_DEFAULT_DECREMENT_AMOUNT 1
20 
22 #define buffer_init(buf) \
23  buffer_len(buf) = 0;
24 
28 #define buffer_add(buf, elt) \
29  do { \
30  if(buffer_len(buf) + 1 <= BUFFER_MAX_LENGTH) { \
31  buf[buffer_len(buf)] = elt; \
32  ++buffer_len(buf); \
33  } \
34  } while (false)
35 
36 
39 #define buffer_dec(buf) \
40  buffer_dec_(buf, BUFFER_DEFAULT_DECREMENT_AMOUNT)
41 
47 #define buffer_dec_(buf, amount) \
48  do { \
49  if(buffer_len(buf) - amount >= 0) { \
50  buffer_len(buf) = buffer_len(buf) - amount; \
51  } \
52  } while (false)
53 
55 #define buffer_last(buf) \
56  buf[buffer_len(buf)-1]
57 
59 #define buffer_full(buf) \
60  (buf##_SIZE == BUFFER_MAX_LENGTH-1)
61 
63 #define buffer_empty(buf) \
64  (buf##_SIZE == 0)
65 
66 #define buffer_clear(buf) \
67  buffer_len(buf) = 0
68 
70 #define buffer_null_terminate(buf) \
71  buf[buffer_len(buf)] = 0
72 
74 #define buffer_len(buf) \
75  buf##_SIZE
76 
77 #endif
78 
79 /* End Doxygen group
80  * @}
81  */