add channel+pitch indexing for notes in a Sequence
[ardour.git] / libs / evoral / evoral / EventRingBuffer.hpp
index 92d366387f50687f5dd5e32d118429edc983b58b..714d8d6f4c5da0d4037db34cfe99d822c55319cc 100644 (file)
@@ -1,15 +1,15 @@
 /* This file is part of Evoral.
  * Copyright (C) 2008 Dave Robillard <http://drobilla.net>
- * 
+ *
  * Evoral is free software; you can redistribute it and/or modify it under the
  * terms of the GNU General Public License as published by the Free Software
  * Foundation; either version 2 of the License, or (at your option) any later
  * version.
- * 
+ *
  * Evoral is distributed in the hope that it will be useful, but WITHOUT ANY
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for details.
- * 
+ *
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
@@ -34,8 +34,8 @@ namespace Evoral {
  * This packs a timestamp, size, and size bytes of data flat into the buffer.
  * Useful for MIDI events, OSC messages, etc.
  */
-template<typename T>
-class EventRingBuffer : public Evoral::RingBuffer<uint8_t>, public Evoral::EventSink<T> {
+template<typename Time>
+class EventRingBuffer : public Evoral::RingBuffer<uint8_t>, public Evoral::EventSink<Time> {
 public:
 
        /** @param capacity Ringbuffer capacity in bytes.
@@ -44,47 +44,47 @@ public:
        {}
 
        size_t capacity() const { return _size; }
-       
-       bool peek_time(T* time);
 
-       uint32_t write(T  time, EventType  type, uint32_t  size, const uint8_t* buf);
-       bool     read (T* time, EventType* type, uint32_t* size,       uint8_t* buf);
+       bool peek_time(Time* time);
+
+       uint32_t write(Time  time, EventType  type, uint32_t  size, const uint8_t* buf);
+       bool     read (Time* time, EventType* type, uint32_t* size,       uint8_t* buf);
 };
 
 
-template<typename T>
+template<typename Time>
 inline bool
-EventRingBuffer<T>::peek_time(T* time)
+EventRingBuffer<Time>::peek_time(Time* time)
 {
-       bool success = RingBuffer<uint8_t>::full_peek(sizeof(T), (uint8_t*)time);
+       bool success = RingBuffer<uint8_t>::full_peek(sizeof(Time), (uint8_t*)time);
        return success;
 }
 
 
-template<typename T>
+template<typename Time>
 inline bool
-EventRingBuffer<T>::read(T* time, EventType* type, uint32_t* size, uint8_t* buf)
+EventRingBuffer<Time>::read(Time* time, EventType* type, uint32_t* size, uint8_t* buf)
 {
-       bool success = RingBuffer<uint8_t>::full_read(sizeof(T), (uint8_t*)time);
+       bool success = RingBuffer<uint8_t>::full_read(sizeof(Time), (uint8_t*)time);
        if (success)
                success = RingBuffer<uint8_t>::full_read(sizeof(EventType), (uint8_t*)type);
        if (success)
                success = RingBuffer<uint8_t>::full_read(sizeof(uint32_t), (uint8_t*)size);
        if (success)
                success = RingBuffer<uint8_t>::full_read(*size, buf);
-       
+
        return success;
 }
 
 
-template<typename T>
+template<typename Time>
 inline uint32_t
-EventRingBuffer<T>::write(T time, EventType type, uint32_t size, const uint8_t* buf)
+EventRingBuffer<Time>::write(Time time, EventType type, uint32_t size, const uint8_t* buf)
 {
-       if (write_space() < (sizeof(T) + sizeof(EventType) + sizeof(uint32_t) + size)) {
+       if (write_space() < (sizeof(Time) + sizeof(EventType) + sizeof(uint32_t) + size)) {
                return 0;
        } else {
-               RingBuffer<uint8_t>::write(sizeof(T), (uint8_t*)&time);
+               RingBuffer<uint8_t>::write(sizeof(Time), (uint8_t*)&time);
                RingBuffer<uint8_t>::write(sizeof(EventType), (uint8_t*)&type);
                RingBuffer<uint8_t>::write(sizeof(uint32_t), (uint8_t*)&size);
                RingBuffer<uint8_t>::write(size, buf);