aboutsummaryrefslogtreecommitdiffstats
path: root/al/filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'al/filter.h')
-rw-r--r--al/filter.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/al/filter.h b/al/filter.h
index b87e7f03..20d5e012 100644
--- a/al/filter.h
+++ b/al/filter.h
@@ -1,6 +1,8 @@
#ifndef AL_FILTER_H
#define AL_FILTER_H
+#include <array>
+#include <cstdint>
#include <string_view>
#include <variant>
@@ -9,6 +11,7 @@
#include "AL/alext.h"
#include "almalloc.h"
+#include "alnumeric.h"
#define LOWPASSFREQREF 5000.0f
#define HIGHPASSFREQREF 250.0f
@@ -54,4 +57,19 @@ struct ALfilter {
DISABLE_ALLOC
};
+struct FilterSubList {
+ uint64_t FreeMask{~0_u64};
+ gsl::owner<std::array<ALfilter,64>*> Filters{nullptr};
+
+ FilterSubList() noexcept = default;
+ FilterSubList(const FilterSubList&) = delete;
+ FilterSubList(FilterSubList&& rhs) noexcept : FreeMask{rhs.FreeMask}, Filters{rhs.Filters}
+ { rhs.FreeMask = ~0_u64; rhs.Filters = nullptr; }
+ ~FilterSubList();
+
+ FilterSubList& operator=(const FilterSubList&) = delete;
+ FilterSubList& operator=(FilterSubList&& rhs) noexcept
+ { std::swap(FreeMask, rhs.FreeMask); std::swap(Filters, rhs.Filters); return *this; }
+};
+
#endif