Circular Buffer template for any data type
Dependents: serqet serqet2 EMGvoorjan kopija_NUCLEO_CELL_LOCKER_copy ... more
circular_buffer.h@0:b241b75b052b, 2012-10-22 (annotated)
- Committer:
- hamparawa
- Date:
- Mon Oct 22 13:17:26 2012 +0000
- Revision:
- 0:b241b75b052b
first version
Who changed what in which revision?
User | Revision | Line number | New 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 |