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
RingBuffer.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_MEM_RINGBUFFER_HPP_
9#define GALAXY_MEM_RINGBUFFER_HPP_
10
11namespace galaxy
12{
13 namespace mem
14 {
19 {
20 public:
26 RingBuffer(const int capacity) noexcept;
27
31 ~RingBuffer() noexcept;
32
41 [[nodiscard]]
42 int write(float* data, const int count) noexcept;
43
52 [[nodiscard]]
53 int read(float* data, int count) noexcept;
54
62 [[nodiscard]]
63 float* direct_read_pointer(const int count) noexcept;
64
70 [[nodiscard]]
71 int available_bytes() const noexcept;
72
78 void set_volume(const float volume) noexcept;
79
85 [[nodiscard]]
86 float get_volume() const noexcept;
87
88 private:
92 RingBuffer() = delete;
93
97 RingBuffer(const RingBuffer&) = delete;
98
103
107 RingBuffer& operator=(const RingBuffer&) = delete;
108
113
114 private:
118 float* m_buffer;
119
124
129
134
138 float m_volume;
139 };
140 } // namespace mem
141} // namespace galaxy
142
143#endif
Memory manager in a ring buffer format.
float m_volume
Current volume of audio.
int read(float *data, int count) noexcept
Read data from buffer.
int m_write_index
Current index for writing to buffer.
RingBuffer(RingBuffer &&)=delete
Move constructor.
RingBuffer & operator=(const RingBuffer &)=delete
Copy assignment operator.
int write(float *data, const int count) noexcept
Write data to ring buffer.
int m_capacity
Amount of data buffer can hold in total.
void set_volume(const float volume) noexcept
Sets audio volume of the buffer.
float * m_buffer
Data buffer.
RingBuffer & operator=(RingBuffer &&)=delete
Move assignment operator.
int available_bytes() const noexcept
Available bytes left in the ring buffer.
RingBuffer()=delete
Constructor.
int m_read_index
Current index for reading from buffer.
float get_volume() const noexcept
Gets current buffer volume.
~RingBuffer() noexcept
Destructor.
RingBuffer(const RingBuffer &)=delete
Copy constructor.
float * direct_read_pointer(const int count) noexcept
Read the ring buffer.
Timer.hpp galaxy.
Definition Async.hpp:17