diff options
author | David Robillard <d@drobilla.net> | 2009-02-02 02:36:05 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-02-02 02:36:05 +0000 |
commit | 166ef64e3db4ab72b7b1e7455234e2b9ceddf6d8 (patch) | |
tree | 0f28067a301556c5c0a67091c691c82960db57c1 /libs/ardour/ardour/midi_ring_buffer.h | |
parent | ead5dd45689be089d79a4a5daad88da737ca4cd9 (diff) |
Make (MIDI) event time stamp type a template parameter.
git-svn-id: svn://localhost/ardour2/branches/3.0@4473 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_ring_buffer.h')
-rw-r--r-- | libs/ardour/ardour/midi_ring_buffer.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h index 7ffdcf3b8c..228479067f 100644 --- a/libs/ardour/ardour/midi_ring_buffer.h +++ b/libs/ardour/ardour/midi_ring_buffer.h @@ -37,16 +37,17 @@ class MidiBuffer; * * [timestamp][type][size][size bytes of raw MIDI][timestamp][type][size](etc...) */ -class MidiRingBuffer : public Evoral::EventRingBuffer { +template<typename T> +class MidiRingBuffer : public Evoral::EventRingBuffer<T> { public: /** @param size Size in bytes. */ MidiRingBuffer(size_t size) - : Evoral::EventRingBuffer(size) + : Evoral::EventRingBuffer<T>(size) , _channel_mask(0x0000FFFF) {} - inline bool read_prefix(Evoral::EventTime* time, Evoral::EventType* type, uint32_t* size); + inline bool read_prefix(T* time, Evoral::EventType* type, uint32_t* size); inline bool read_contents(uint32_t size, uint8_t* buf); size_t read(MidiBuffer& dst, nframes_t start, nframes_t end, nframes_t offset=0); @@ -86,14 +87,15 @@ private: /** Read the time and size of an event. This call MUST be immediately proceeded * by a call to read_contents (or the read pointer will be garbage). */ +template<typename T> inline bool -MidiRingBuffer::read_prefix(Evoral::EventTime* time, Evoral::EventType* type, uint32_t* size) +MidiRingBuffer<T>::read_prefix(T* time, Evoral::EventType* type, uint32_t* size) { - bool success = Evoral::EventRingBuffer::full_read(sizeof(Evoral::EventTime), (uint8_t*)time); + bool success = Evoral::EventRingBuffer<T>::full_read(sizeof(T), (uint8_t*)time); if (success) - success = Evoral::EventRingBuffer::full_read(sizeof(Evoral::EventType), (uint8_t*)type); + success = Evoral::EventRingBuffer<T>::full_read(sizeof(Evoral::EventType), (uint8_t*)type); if (success) - success = Evoral::EventRingBuffer::full_read(sizeof(uint32_t), (uint8_t*)size); + success = Evoral::EventRingBuffer<T>::full_read(sizeof(uint32_t), (uint8_t*)size); return success; } @@ -102,10 +104,11 @@ MidiRingBuffer::read_prefix(Evoral::EventTime* time, Evoral::EventType* type, ui /** Read the content of an event. This call MUST be immediately preceded * by a call to read_prefix (or the returned even will be garbage). */ +template<typename T> inline bool -MidiRingBuffer::read_contents(uint32_t size, uint8_t* buf) +MidiRingBuffer<T>::read_contents(uint32_t size, uint8_t* buf) { - return Evoral::EventRingBuffer::full_read(size, buf); + return Evoral::EventRingBuffer<T>::full_read(size, buf); } |