fix up wscript/build issues in exportvis after merge with master
[ardour.git] / libs / pbd / pbd / ringbufferNPT.h
index fee2efce3d8c78c4900eb09d0cb08580bf04c456..65fe939597e942df4d41793a1552992e5d5e560e 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef ringbuffer_npt_h
 
 //#include <sys/mman.h>
 
+#include <cstring>
 #include <glib.h>
 
+#include "pbd/libpbd_visibility.h"
+
+namespace PBD {
+
 /* ringbuffer class where the element size is not required to be a power of two */
 
 template<class T>
-class RingBufferNPT
+class LIBPBD_API RingBufferNPT
 {
   public:
        RingBufferNPT (size_t sz) {
                size = sz;
                buf = new T[size];
                reset ();
-
-       };
+       }
        
-       virtual ~RingBufferNPT() {
+       virtual ~RingBufferNPT () {
                delete [] buf;
        }
 
@@ -55,7 +58,7 @@ class RingBufferNPT
        }
        
        size_t  read  (T *dest, size_t cnt);
-       size_t  write (T *src, size_t cnt);
+       size_t  write (const T *src, size_t cnt);
 
        struct rw_vector {
            T *buf[2];
@@ -117,7 +120,7 @@ class RingBufferNPT
        mutable gint read_ptr;
 };
 
-template<class T> size_t
+template<class T> LIBPBD_API size_t
 RingBufferNPT<T>::read (T *dest, size_t cnt)
 {
         size_t free_cnt;
@@ -156,8 +159,8 @@ RingBufferNPT<T>::read (T *dest, size_t cnt)
         return to_read;
 }
 
-template<class T> size_t
-RingBufferNPT<T>::write (T *src, size_t cnt)
+template<class T> LIBPBD_API size_t
+RingBufferNPT<T>::write (const T *src, size_t cnt)
 {
         size_t free_cnt;
         size_t cnt2;
@@ -195,7 +198,7 @@ RingBufferNPT<T>::write (T *src, size_t cnt)
         return to_write;
 }
 
-template<class T> void
+template<class T> LIBPBD_API void
 RingBufferNPT<T>::get_read_vector (RingBufferNPT<T>::rw_vector *vec)
 {
        size_t free_cnt;
@@ -230,11 +233,12 @@ RingBufferNPT<T>::get_read_vector (RingBufferNPT<T>::rw_vector *vec)
                
                vec->buf[0] = &buf[r];
                vec->len[0] = free_cnt;
+               vec->buf[1] = 0;
                vec->len[1] = 0;
        }
 }
 
-template<class T> void
+template<class T> LIBPBD_API void
 RingBufferNPT<T>::get_write_vector (RingBufferNPT<T>::rw_vector *vec)
 {
        size_t free_cnt;
@@ -272,4 +276,6 @@ RingBufferNPT<T>::get_write_vector (RingBufferNPT<T>::rw_vector *vec)
        }
 }
 
+} /* namespace */
+
 #endif /* __ringbuffer_npt_h__ */