arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
CoreAudio
AudioBasic
Collections
PriorityQueue.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
16
template
<
class
T>
17
class
PriorityQueue
{
18
public
:
19
PriorityQueue
(
int
(*compare)(
T
&
v1
,
T
&
v2
)) {
compare_cb
= compare; };
20
21
bool
enqueue
(
T
&&data) {
22
for
(
auto
it =
l
.begin(); it !=
l
.end(); ++it) {
23
if
(
compare_cb
(*it, data) > 0) {
24
l
.insert(it, data);
25
return
true
;
26
}
27
}
28
return
l
.push_back(data);
29
}
30
31
bool
peek
(
T
&data) {
32
if
(
l
.end()->prior ==
nullptr
)
return
false
;
33
data = *(
l
.end()->prior);
34
return
true
;
35
}
36
37
bool
dequeue
(
T
&data) {
return
l
.pop_front(data); }
38
39
size_t
size
() {
return
l
.size(); }
40
41
bool
clear
() {
return
l
.clear(); }
42
43
bool
empty
() {
return
l
.empty(); }
44
45
void
setAllocator
(
Allocator
&allocator) {
l
.setAllocator(allocator); }
46
47
protected
:
48
List<T>
l
;
49
int
(*
compare_cb
)(
T
&
v1
,
T
&
v2
);
50
};
51
52
}
// namespace audio_tools
List.h
audio_tools::Allocator
Memory allocateator which uses malloc.
Definition
Allocator.h:23
audio_tools::List
Double linked list.
Definition
List.h:18
audio_tools::PriorityQueue
Priority Queue which is based on a List. The order of the elements is defined by a compare function w...
Definition
PriorityQueue.h:17
audio_tools::PriorityQueue::size
size_t size()
Definition
PriorityQueue.h:39
audio_tools::PriorityQueue::enqueue
bool enqueue(T &&data)
Definition
PriorityQueue.h:21
audio_tools::PriorityQueue::empty
bool empty()
Definition
PriorityQueue.h:43
audio_tools::PriorityQueue::peek
bool peek(T &data)
Definition
PriorityQueue.h:31
audio_tools::PriorityQueue::dequeue
bool dequeue(T &data)
Definition
PriorityQueue.h:37
audio_tools::PriorityQueue::PriorityQueue
PriorityQueue(int(*compare)(T &v1, T &v2))
Definition
PriorityQueue.h:19
audio_tools::PriorityQueue::clear
bool clear()
Definition
PriorityQueue.h:41
audio_tools::PriorityQueue::compare_cb
int(* compare_cb)(T &v1, T &v2)
Definition
PriorityQueue.h:49
audio_tools::PriorityQueue::setAllocator
void setAllocator(Allocator &allocator)
Definition
PriorityQueue.h:45
audio_tools::PriorityQueue::l
List< T > l
Definition
PriorityQueue.h:48
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