Buffer from Sam Grove changed to have static instead of dynamic memory allocation. Fixed size to 256B.

Dependents:   BufferedSerialStatic

Fork of Buffer by Sam Grove

Files at this revision

API Documentation at this revision

Comitter:
sam_grove
Date:
Wed Jun 26 15:19:45 2013 +0000
Parent:
1:490224f41c09
Child:
4:cd0a1f4c623f
Commit message:
Allow any size of buffer

Changed in this revision

Buffer.cpp Show annotated file Show diff for this revision Revisions of this file
Buffer.h Show annotated file Show diff for this revision Revisions of this file
--- a/Buffer.cpp	Thu May 23 19:26:31 2013 +0000
+++ b/Buffer.cpp	Wed Jun 26 15:19:45 2013 +0000
@@ -24,7 +24,7 @@
 #include "Buffer.h"
 
 template <class T>
-Buffer<T>::Buffer(BUFFER_SIZE size)
+Buffer<T>::Buffer(uint32_t size)
 {
     _buf = new T [size];
     _size = size;
@@ -42,32 +42,6 @@
 }
 
 template <class T>
-void Buffer<T>::put(T data)
-{
-    _buf[_wloc++] = data;
-    _wloc &= (_size-1);
-    
-    return;
-}
-
-template <class T>
-T Buffer<T>::get(void)
-{
-    T data_pos = _buf[_rloc++];
-    _rloc &= (_size-1);
-    
-    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;
@@ -77,12 +51,6 @@
     return;
 }
 
-template <class T>
-uint32_t Buffer<T>::available(void)
-{
-    return (_wloc == _rloc) ? 0 : 1;
-}
-
 // make the linker aware of some possible types
 template class Buffer<uint8_t>;
 template class Buffer<int8_t>;
--- a/Buffer.h	Thu May 23 19:26:31 2013 +0000
+++ b/Buffer.h	Wed Jun 26 15:19:45 2013 +0000
@@ -65,14 +65,12 @@
     volatile uint32_t   _wloc;
     volatile uint32_t   _rloc;
     uint32_t            _size;
-    
-    enum BUFFER_SIZE{SMALL = 0x100, MEDIUM = 0x400, LARGE = 0x1000};
 
 public:
     /** Create a Buffer and allocate memory for it
-     *  @param size An enum from BUFFER_SIZE.
+     *  @param size The size of the buffer
      */
-    Buffer(BUFFER_SIZE size = Buffer::SMALL);
+    Buffer(uint32_t size = 0x100);
     
     /** Destry a Buffer and release it's allocated memory
      */
@@ -122,5 +120,37 @@
     
 };
 
+template <class T>
+inline void Buffer<T>::put(T data)
+{
+    _buf[_wloc++] = data;
+    _wloc %= (_size-1);
+    
+    return;
+}
+
+template <class T>
+inline T Buffer<T>::get(void)
+{
+    T data_pos = _buf[_rloc++];
+    _rloc %= (_size-1);
+    
+    return data_pos;
+}
+
+template <class T>
+inline T *Buffer<T>::head(void)
+{
+    T *data_pos = &_buf[0];
+    
+    return data_pos;
+}
+
+template <class T>
+inline uint32_t Buffer<T>::available(void)
+{
+    return (_wloc == _rloc) ? 0 : 1;
+}
+
 #endif