Circular Buffer template for any data type

Dependents:   serqet serqet2 EMGvoorjan kopija_NUCLEO_CELL_LOCKER_copy ... more

Committer:
hamparawa
Date:
Mon Oct 22 13:17:26 2012 +0000
Revision:
0:b241b75b052b
first version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hamparawa 0:b241b75b052b 1 #ifndef CIRCULAR_BUFFER
hamparawa 0:b241b75b052b 2 #define CIRCULAR_BUFFER
hamparawa 0:b241b75b052b 3
hamparawa 0:b241b75b052b 4
hamparawa 0:b241b75b052b 5 template<class T>
hamparawa 0:b241b75b052b 6 class circular_buffer
hamparawa 0:b241b75b052b 7 {
hamparawa 0:b241b75b052b 8 public:
hamparawa 0:b241b75b052b 9 // circular_buffer();
hamparawa 0:b241b75b052b 10 circular_buffer(int capacity);
hamparawa 0:b241b75b052b 11 ~circular_buffer();
hamparawa 0:b241b75b052b 12
hamparawa 0:b241b75b052b 13 int get_capacity(); // get the maximum capacity of the buf
hamparawa 0:b241b75b052b 14 int get_size(); // get the current item count
hamparawa 0:b241b75b052b 15
hamparawa 0:b241b75b052b 16 void push_back(T item);
hamparawa 0:b241b75b052b 17 // void push_front(T item);
hamparawa 0:b241b75b052b 18
hamparawa 0:b241b75b052b 19 void pop_back();
hamparawa 0:b241b75b052b 20 void pop_front();
hamparawa 0:b241b75b052b 21
hamparawa 0:b241b75b052b 22 T& front();
hamparawa 0:b241b75b052b 23 T& back();
hamparawa 0:b241b75b052b 24
hamparawa 0:b241b75b052b 25 T& at(int index);
hamparawa 0:b241b75b052b 26 T& operator[](int index);
hamparawa 0:b241b75b052b 27
hamparawa 0:b241b75b052b 28
hamparawa 0:b241b75b052b 29 protected:
hamparawa 0:b241b75b052b 30
hamparawa 0:b241b75b052b 31 int capacity;
hamparawa 0:b241b75b052b 32 int size;
hamparawa 0:b241b75b052b 33 int start_pos;
hamparawa 0:b241b75b052b 34 int end_pos;
hamparawa 0:b241b75b052b 35
hamparawa 0:b241b75b052b 36 T *buffer;
hamparawa 0:b241b75b052b 37
hamparawa 0:b241b75b052b 38 void increment(int& index);
hamparawa 0:b241b75b052b 39 void decrement(int& index);
hamparawa 0:b241b75b052b 40
hamparawa 0:b241b75b052b 41 int if_increment(int index);
hamparawa 0:b241b75b052b 42 int if_decrement(int index);
hamparawa 0:b241b75b052b 43
hamparawa 0:b241b75b052b 44 void reset();
hamparawa 0:b241b75b052b 45
hamparawa 0:b241b75b052b 46
hamparawa 0:b241b75b052b 47 };
hamparawa 0:b241b75b052b 48
hamparawa 0:b241b75b052b 49 #include "circular_buffer.cpp"
hamparawa 0:b241b75b052b 50
hamparawa 0:b241b75b052b 51 #endif // CIRCULAR_BUFFER
hamparawa 0:b241b75b052b 52
hamparawa 0:b241b75b052b 53