Arduino MIDI Library  Version 4.3
RingBuffer< DataType, Size > Class Template Reference

#include <midi_RingBuffer.h>

Public Member Functions

 RingBuffer ()
 
 ~RingBuffer ()
 
int getLength () const
 
bool isEmpty () const
 
void write (DataType inData)
 
void write (const DataType *inData, int inSize)
 
void clear ()
 
DataType read ()
 
void read (DataType *outData, int inSize)
 

Detailed Description

template<typename DataType, int Size>
class RingBuffer< DataType, Size >

Definition at line 36 of file midi_RingBuffer.h.

Constructor & Destructor Documentation

§ RingBuffer()

template<typename DataType , int Size>
BEGIN_MIDI_NAMESPACE RingBuffer< DataType, Size >::RingBuffer ( )

Definition at line 34 of file midi_RingBuffer.hpp.

35  : mWriteHead(mData)
36  , mReadHead(mData)
37 {
38  memset(mData, DataType(0), Size * sizeof(DataType));
39 }

§ ~RingBuffer()

template<typename DataType , int Size>
RingBuffer< DataType, Size >::~RingBuffer ( )

Definition at line 42 of file midi_RingBuffer.hpp.

43 {
44 }

Member Function Documentation

§ clear()

template<typename DataType , int Size>
void RingBuffer< DataType, Size >::clear ( )

Definition at line 93 of file midi_RingBuffer.hpp.

94 {
95  memset(mData, DataType(0), Size * sizeof(DataType));
96  mReadHead = mData;
97  mWriteHead = mData;
98 }

§ getLength()

template<typename DataType , int Size>
int RingBuffer< DataType, Size >::getLength ( ) const

Definition at line 49 of file midi_RingBuffer.hpp.

50 {
51  if (mReadHead == mWriteHead)
52  {
53  return 0;
54  }
55  else if (mWriteHead > mReadHead)
56  {
57  return int(mWriteHead - mReadHead);
58  }
59  else
60  {
61  return int(mWriteHead - mData) + Size - int(mReadHead - mData);
62  }
63 }

§ isEmpty()

template<typename DataType , int Size>
bool RingBuffer< DataType, Size >::isEmpty ( ) const

Definition at line 66 of file midi_RingBuffer.hpp.

67 {
68  return mReadHead == mWriteHead;
69 }

§ read() [1/2]

template<typename DataType , int Size>
DataType RingBuffer< DataType, Size >::read ( )

Definition at line 103 of file midi_RingBuffer.hpp.

104 {
105  const DataType data = *mReadHead++;
106  if (mReadHead >= mData + Size)
107  {
108  mReadHead = mData;
109  }
110  return data;
111 }

§ read() [2/2]

template<typename DataType, int Size>
void RingBuffer< DataType, Size >::read ( DataType *  outData,
int  inSize 
)

Definition at line 114 of file midi_RingBuffer.hpp.

115 {
116  for (int i = 0; i < inSize; ++i)
117  {
118  outData[i] = read();
119  }
120 }
DataType read()

§ write() [1/2]

template<typename DataType, int Size>
void RingBuffer< DataType, Size >::write ( DataType  inData)

Definition at line 74 of file midi_RingBuffer.hpp.

75 {
76  *mWriteHead++ = inData;
77  if (mWriteHead >= mData + Size)
78  {
79  mWriteHead = mData;
80  }
81 }

§ write() [2/2]

template<typename DataType, int Size>
void RingBuffer< DataType, Size >::write ( const DataType *  inData,
int  inSize 
)

Definition at line 84 of file midi_RingBuffer.hpp.

85 {
86  for (int i = 0; i < inSize; ++i)
87  {
88  write(inData[i]);
89  }
90 }
void write(DataType inData)

The documentation for this class was generated from the following files: