Buffer for general purpose use. Templated for most datatypes

Dependents:   BufferedSoftSerial 09_PT1000 10_PT1000 11_PT1000 ... more

Example

 #include "mbed.h"
 #include "Buffer.h"

 Buffer <char> buf;

 int main()
 {
     buf = 'a';
     buf.put('b');
     char *head = buf.head();
     puts(head);

     char whats_in_there[2] = {0};
     int pos = 0;

     while(buf.available())
     {   
         whats_in_there[pos++] = buf;
     }
     printf("%c %c\n", whats_in_there[0], whats_in_there[1]);
     buf.clear();
     error("done\n\n\n");
 }
Revision:
4:cd0a1f4c623f
Parent:
2:d13a72146516
Parent:
3:c2de0ddfe65b
Child:
5:7b754354b99c
--- a/Buffer.cpp	Thu May 23 23:48:36 2013 +0000
+++ b/Buffer.cpp	Wed Jun 26 15:24:27 2013 +0000
@@ -24,10 +24,10 @@
 #include "Buffer.h"
 
 template <class T>
-Buffer<T>::Buffer(BUFFER_SIZE size)
+Buffer<T>::Buffer(uint32_t size)
 {
     _buf = new T [size];
-    _sizemask = size-1;
+    _size = size;
     clear();
     
     return;
@@ -42,55 +42,21 @@
 }
 
 template <class T>
-void Buffer<T>::put(T data)
-{
-    _buf[_wloc++] = data;
-    _wloc &= _sizemask;
-    
-    return;
-}
-
-template <class T>
-T Buffer<T>::get(void)
-{
-    T data_pos = _buf[_rloc++];
-    _rloc &= _sizemask;
-    
-    return data_pos;
-}
-
-template <class T>
-T *Buffer<T>::head(void)
-{
-    T *data_pos = &_buf[0];
-    
-    return data_pos;
-}
-
-template <class T>
 void Buffer<T>::clear(void)
 {
     _wloc = 0;
     _rloc = 0;
-    memset(_buf, 0, _sizemask+1);
+    memset(_buf, 0, _size);
     
     return;
 }
 
 template <class T>
-uint32_t Buffer<T>::available(void)
-{
-    return (_wloc == _rloc) ? 0 : 1;
-}
-
-template <class T>
 uint32_t Buffer<T>::peek(char c)
 {
     return 1;
 }
 
-
-
 // make the linker aware of some possible types
 template class Buffer<uint8_t>;
 template class Buffer<int8_t>;