arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Slice.h
1#pragma once
2#include <stddef.h>
3#include <stdint.h>
4
5namespace audio_tools {
6
15template <class T>
16class Slice {
17 public:
18 Slice(T* start, size_t len) {
19 this->start = start;
20 this->len = len;
21 }
22
24 T* data() { return start; }
25
27 size_t size() { return len; }
28
30 size_t slices(int sliceSize){
31 int result = len / sliceSize;
32 return len % sliceSize == 0 ? result : result+1;
33 }
34
36 operator bool() { return len > 0 && start!=nullptr; }
37
39 Slice slice(int sliceSize, int idx) {
40 int start_pos = idx * sliceSize;
41 int end_pos = start_pos + sliceSize;
42 if (end_pos > len) {
43 end_pos = len;
44 }
45
46 if (start_pos < len) {
47 assert(start!=nullptr);
48 return Slice(start + start_pos, end_pos - start_pos);
49 } else {
50 return Slice(nullptr, 0);
51 }
52 }
53
54 protected:
55 T* start = nullptr;
56 size_t len = 0;
57};
58
59} // namespace audio_tools
Helps to split up a big memory array into smaller slices. There are no additinal heap allocations!...
Definition Slice.h:16
size_t size()
Returns the (result) data size is number of entries.
Definition Slice.h:27
size_t slices(int sliceSize)
Returns the number of slices of the indicated size.
Definition Slice.h:30
Slice slice(int sliceSize, int idx)
Returns the slice at the indicated index for the indicated slize size;.
Definition Slice.h:39
T * data()
Returns the data.
Definition Slice.h:24
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10