The Tooba
 All Data Structures Namespaces Files Functions Variables Macros Pages
queue.h
Go to the documentation of this file.
1 #ifndef QUEUE_H_INCLUDED
2 #define QUEUE_H_INCLUDED 1
3 
4 #include "common.h"
5 
7 #define BUFSIZE 1024
8 
28 class Queue
29 {
31  uint32_t buffer[BUFSIZE];
32  inline int size(void) {
33  return (wpointer + BUFSIZE - rpointer) & (BUFSIZE - 1);
34  }
35  inline int empty(void) {
36  return size() == 0;
37  }
38  inline int full(void) {
39  return size() == BUFSIZE - 1;
40  }
41 public:
42  Queue() {
43  wpointer = rpointer = 0;
44  }
50  uint8_t read(uint32_t *x) {
51  if (empty()) return 1;
52  *x = buffer[rpointer];
53  rpointer = (rpointer + 1) & (BUFSIZE - 1);
54  return 0;
55  }
61  uint8_t write(uint32_t x) {
62  if (full()) return 1;
63  buffer[wpointer] = x;
64  wpointer = (wpointer + 1) & (BUFSIZE - 1);
65  return 0;
66  }
67 };
68 
69 #endif
Queue()
Definition: queue.h:42
int size(void)
Definition: queue.h:32
#define BUFSIZE
Definition: queue.h:7
uint8_t read(uint32_t *x)
Definition: queue.h:50
Definition: queue.h:28
int rpointer
Definition: queue.h:30
int wpointer
Definition: queue.h:30
int full(void)
Definition: queue.h:38
uint32_t buffer[BUFSIZE]
Definition: queue.h:31
uint8_t write(uint32_t x)
Definition: queue.h:61
int empty(void)
Definition: queue.h:35
tuple x
Definition: testit.py:14