Add a bunch of APNs

Fork of C027_Support by Xinlei Cao

Revision:
5:5362073f2689
Parent:
2:b6012cd91657
Child:
7:9aa830f5811e
--- a/Pipe.h	Fri Oct 25 17:50:17 2013 +0000
+++ b/Pipe.h	Sat Nov 02 16:08:20 2013 +0000
@@ -12,17 +12,18 @@
         return i;
     }
 public:
-    Pipe(int n)
+    Pipe(int n, T* p = NULL)
     {
+        a = p ? NULL : new T[n];
         r = 0;
         w = 0;
-        n ++; // we add one more element to be able to identify empty from full
-        b = new T[n];
+        b = p ? p : a;
         s = n;
     }    
     virtual ~Pipe()
     {
-        delete [] b;
+        if (a) 
+            delete [] a;
     }
     // writing thread
     bool writeable(void) // = not full
@@ -123,6 +124,7 @@
 private:
     // buffer
     T*            b; //!< buffer
+    T*            a; //!< allocated buffer
     int           s; //!< size of buffer (s - 1) elements can be stored
     volatile int  w; //! write index 
     volatile int  r; //! read index