Arduino MIDI Library  Version 4.3.1
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 35 of file midi_RingBuffer.h.

Constructor & Destructor Documentation

§ RingBuffer()

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

Definition at line 33 of file midi_RingBuffer.hpp.

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

§ ~RingBuffer()

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

Definition at line 41 of file midi_RingBuffer.hpp.

42 {
43 }

Member Function Documentation

§ clear()

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

Definition at line 92 of file midi_RingBuffer.hpp.

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

§ getLength()

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

Definition at line 48 of file midi_RingBuffer.hpp.

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

§ isEmpty()

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

Definition at line 65 of file midi_RingBuffer.hpp.

66 {
67  return mReadHead == mWriteHead;
68 }

§ read() [1/2]

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

Definition at line 102 of file midi_RingBuffer.hpp.

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

§ read() [2/2]

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

Definition at line 113 of file midi_RingBuffer.hpp.

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

§ write() [1/2]

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

Definition at line 73 of file midi_RingBuffer.hpp.

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

§ write() [2/2]

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

Definition at line 83 of file midi_RingBuffer.hpp.

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

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