galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
galaxy::mem::RingBuffer Class Reference

Memory manager in a ring buffer format. More...

#include <RingBuffer.hpp>

+ Collaboration diagram for galaxy::mem::RingBuffer:

Public Member Functions

 RingBuffer (const int capacity) noexcept
 Constructor.
 
 ~RingBuffer () noexcept
 Destructor.
 
int write (float *data, const int count) noexcept
 Write data to ring buffer.
 
int read (float *data, int count) noexcept
 Read data from buffer.
 
float * direct_read_pointer (const int count) noexcept
 Read the ring buffer.
 
int available_bytes () const noexcept
 Available bytes left in the ring buffer.
 
void set_volume (const float volume) noexcept
 Sets audio volume of the buffer.
 
float get_volume () const noexcept
 Gets current buffer volume.
 

Private Member Functions

 RingBuffer ()=delete
 Constructor.
 
 RingBuffer (const RingBuffer &)=delete
 Copy constructor.
 
 RingBuffer (RingBuffer &&)=delete
 Move constructor.
 
RingBufferoperator= (const RingBuffer &)=delete
 Copy assignment operator.
 
RingBufferoperator= (RingBuffer &&)=delete
 Move assignment operator.
 

Private Attributes

float * m_buffer
 Data buffer.
 
int m_read_index
 Current index for reading from buffer.
 
int m_write_index
 Current index for writing to buffer.
 
int m_capacity
 Amount of data buffer can hold in total.
 
float m_volume
 Current volume of audio.
 

Detailed Description

Memory manager in a ring buffer format.

Definition at line 18 of file RingBuffer.hpp.

Constructor & Destructor Documentation

◆ RingBuffer() [1/4]

galaxy::mem::RingBuffer::RingBuffer ( const int capacity)
noexcept

Constructor.

Parameters
capacityUsually you want 1 second of audio reserved.

Definition at line 26 of file RingBuffer.cpp.

◆ ~RingBuffer()

galaxy::mem::RingBuffer::~RingBuffer ( )
noexcept

Destructor.

Definition at line 35 of file RingBuffer.cpp.

◆ RingBuffer() [2/4]

galaxy::mem::RingBuffer::RingBuffer ( )
privatedelete

Constructor.

◆ RingBuffer() [3/4]

galaxy::mem::RingBuffer::RingBuffer ( const RingBuffer & )
privatedelete

Copy constructor.

◆ RingBuffer() [4/4]

galaxy::mem::RingBuffer::RingBuffer ( RingBuffer && )
privatedelete

Move constructor.

Member Function Documentation

◆ write()

int galaxy::mem::RingBuffer::write ( float * data,
const int count )
nodiscardnoexcept

Write data to ring buffer.

Parameters
dataPointer to beginning of section to write from.
countAmount of data to write.
Returns
Updated write index.

Definition at line 41 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ read()

int galaxy::mem::RingBuffer::read ( float * data,
int count )
nodiscardnoexcept

Read data from buffer.

Parameters
dataBuffer to read into.
countAmount of data to write.
Returns
Updated read index.

Definition at line 54 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ direct_read_pointer()

float * galaxy::mem::RingBuffer::direct_read_pointer ( const int count)
nodiscardnoexcept

Read the ring buffer.

Parameters
countAmount of data to read from internal buffer.
Returns
Section of data read.

Definition at line 67 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ available_bytes()

int galaxy::mem::RingBuffer::available_bytes ( ) const
nodiscardnoexcept

Available bytes left in the ring buffer.

Returns
Amount of space left in bytes.

Definition at line 74 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ set_volume()

void galaxy::mem::RingBuffer::set_volume ( const float volume)
noexcept

Sets audio volume of the buffer.

Parameters
volumeBetween 0 and 1.

Definition at line 79 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ get_volume()

float galaxy::mem::RingBuffer::get_volume ( ) const
nodiscardnoexcept

Gets current buffer volume.

Returns
Float from 0 to 1.

Definition at line 87 of file RingBuffer.cpp.

+ Here is the caller graph for this function:

◆ operator=() [1/2]

RingBuffer & galaxy::mem::RingBuffer::operator= ( const RingBuffer & )
privatedelete

Copy assignment operator.

◆ operator=() [2/2]

RingBuffer & galaxy::mem::RingBuffer::operator= ( RingBuffer && )
privatedelete

Move assignment operator.

Member Data Documentation

◆ m_buffer

float* galaxy::mem::RingBuffer::m_buffer
private

Data buffer.

Definition at line 118 of file RingBuffer.hpp.

◆ m_read_index

int galaxy::mem::RingBuffer::m_read_index
private

Current index for reading from buffer.

Definition at line 123 of file RingBuffer.hpp.

◆ m_write_index

int galaxy::mem::RingBuffer::m_write_index
private

Current index for writing to buffer.

Definition at line 128 of file RingBuffer.hpp.

◆ m_capacity

int galaxy::mem::RingBuffer::m_capacity
private

Amount of data buffer can hold in total.

Definition at line 133 of file RingBuffer.hpp.

◆ m_volume

float galaxy::mem::RingBuffer::m_volume
private

Current volume of audio.

Definition at line 138 of file RingBuffer.hpp.


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