arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
CoreAudio
AudioBasic
Collections
QueueFromVector.h
Go to the documentation of this file.
1
#pragma once
2
#include "
AudioTools/CoreAudio/AudioBasic/Collections/List.h
"
3
4
namespace
audio_tools
{
5
13
template
<
class
T>
14
class
QueueFromVector
{
15
public
:
16
QueueFromVector
(
size_t
size
,
T
empty
) {
17
null_value
=
empty
;
18
resize
(
size
);
19
};
20
21
bool
enqueue
(
T
& data){
22
if
(
is_full
())
23
return
false
;
24
vector
[
_end_pos
++] = data;
25
return
true
;
26
}
27
28
bool
peek
(
T
& data){
29
if
(
_end_pos
<= 0 ) {
30
data =
null_value
;
31
_end_pos
= 0;
32
return
false
;
33
}
34
data =
vector
[0];
35
return
true
;
36
}
37
38
bool
dequeue
(
T
& data){
39
if
(
_end_pos
<= 0 ) {
40
data =
null_value
;
41
_end_pos
= 0;
42
return
false
;
43
}
44
// provide data at haed
45
data =
vector
[0];
46
// shift all data to the left by 1 position
47
memmove
(&
vector
[0], &
vector
[1], (
_end_pos
-1)*
sizeof
(
T
));
48
vector
[--
_end_pos
] =
null_value
;
49
return
true
;
50
}
51
52
size_t
size
() {
53
return
_end_pos
< 0 ? 0 :
_end_pos
;
54
}
55
56
bool
resize
(
size_t
size
) {
57
if
(!
vector
.resize(
size
)){
58
return
false
;
59
}
60
return
clear
();
61
}
62
63
bool
clear
() {
64
for
(
int
j
=0;
j
<
vector
.size();
j
++){
65
vector
[
j
] =
null_value
;
66
}
67
_end_pos
= 0;
68
return
true
;
69
}
70
71
bool
empty
() {
72
return
_end_pos
== 0;
73
}
74
75
bool
is_full
() {
76
return
_end_pos
>=
vector
.size();
77
}
78
79
size_t
capacity
() {
return
vector
.capacity(); }
80
81
void
setAllocator
(
Allocator
&allocator){
82
vector
.setAllocator(allocator);
83
}
84
85
Vector<T>
&
toVector
() {
86
return
vector
;
87
}
88
89
protected
:
90
Vector<T>
vector
;
91
int32_t
_end_pos
= 0;
92
int
empty_pos
= 0;
93
T
null_value
;
94
};
95
96
}
List.h
audio_tools::Allocator
Memory allocateator which uses malloc.
Definition
Allocator.h:23
audio_tools::QueueFromVector
FIFO Queue which is based on a Vector.
Definition
QueueFromVector.h:14
audio_tools::QueueFromVector::size
size_t size()
Definition
QueueFromVector.h:52
audio_tools::QueueFromVector::toVector
Vector< T > & toVector()
Definition
QueueFromVector.h:85
audio_tools::QueueFromVector::QueueFromVector
QueueFromVector(size_t size, T empty)
Definition
QueueFromVector.h:16
audio_tools::QueueFromVector::empty_pos
int empty_pos
Definition
QueueFromVector.h:92
audio_tools::QueueFromVector::empty
bool empty()
Definition
QueueFromVector.h:71
audio_tools::QueueFromVector::peek
bool peek(T &data)
Definition
QueueFromVector.h:28
audio_tools::QueueFromVector::dequeue
bool dequeue(T &data)
Definition
QueueFromVector.h:38
audio_tools::QueueFromVector::null_value
T null_value
Definition
QueueFromVector.h:93
audio_tools::QueueFromVector::clear
bool clear()
Definition
QueueFromVector.h:63
audio_tools::QueueFromVector::vector
Vector< T > vector
Definition
QueueFromVector.h:90
audio_tools::QueueFromVector::is_full
bool is_full()
Definition
QueueFromVector.h:75
audio_tools::QueueFromVector::enqueue
bool enqueue(T &data)
Definition
QueueFromVector.h:21
audio_tools::QueueFromVector::setAllocator
void setAllocator(Allocator &allocator)
Definition
QueueFromVector.h:81
audio_tools::QueueFromVector::resize
bool resize(size_t size)
Definition
QueueFromVector.h:56
audio_tools::QueueFromVector::_end_pos
int32_t _end_pos
Definition
QueueFromVector.h:91
audio_tools::QueueFromVector::capacity
size_t capacity()
Definition
QueueFromVector.h:79
audio_tools::Vector
Vector implementation which provides the most important methods as defined by std::vector....
Definition
Vector.h:21
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
AudioCodecsBase.h:10
audio_tools::writeData
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition
AudioTypes.h:512
Generated by
1.9.8