mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-12-17 19:54:35 -05:00
Solving Compile error on gcc10 . Keeping same safety protection about the size of the array ,but with slightly different sintax.
This commit is contained in:
parent
848dba44d8
commit
f4db4e2b53
@ -27,7 +27,7 @@
|
|||||||
#include "event_m4.hpp"
|
#include "event_m4.hpp"
|
||||||
#include "portapack_shared_memory.hpp"
|
#include "portapack_shared_memory.hpp"
|
||||||
|
|
||||||
#include "event_m4.hpp"
|
/* #include "event_m4.hpp" that line is duplicated, we can delete it .*/
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
@ -105,24 +105,38 @@ void SpectrumCollector::post_message(const buffer_c16_t& data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
/* 3 types of Windowing time domain shapes declaration , but only used Hamming , shapes for FFT
|
||||||
|
GCC10 compile sintax error c/m (1/2),
|
||||||
|
The primary diff. between const and constexpr variables is that
|
||||||
|
the initialization of a const var can be deferred until run time.
|
||||||
|
A constexpr var. must be initialized at compile time. ...
|
||||||
|
A var. can be declared with constexpr , when it has a literal type and is initialized.
|
||||||
|
GCC compile sintax error c/m (2/2)
|
||||||
|
Static assert --> Tests a software assertion at compile time for debugging.
|
||||||
|
we keep the same safety compile protection , just changing slightly the sintax checking that the size of the called array is power of 2.
|
||||||
|
if the bool "constant expression" is TRUE (normal case) , the declaration has no effect.
|
||||||
|
if the bool "constant expression" is FALSE (abnormal array size) , it is aborted the compile with a msg error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T> // Although currently we are not using that Windowing shape, we apply the same GCC10 compile error c/m
|
||||||
static typename T::value_type spectrum_window_none(const T& s, const size_t i) {
|
static typename T::value_type spectrum_window_none(const T& s, const size_t i) {
|
||||||
static_assert(power_of_two(s.size()), "Array size must be power of 2");
|
static_assert(power_of_two(sizeof(s)), "Array size must be power of 2"); // c/m compile error GCC10 , OK for all GCC versions.
|
||||||
return s[i];
|
return s[i];
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T> // Currently we are calling and using that Window shape.
|
||||||
static typename T::value_type spectrum_window_hamming_3(const T& s, const size_t i) {
|
static typename T::value_type spectrum_window_hamming_3(const T& s, const size_t i) {
|
||||||
static_assert(power_of_two(s.size()), "Array size must be power of 2");
|
static_assert(power_of_two(sizeof(s)), "Array size must be power of 2"); // c/m compile error GCC10 , OK for all GCC versions.
|
||||||
constexpr size_t mask = s.size() - 1;
|
const size_t mask = s.size() - 1; // c/m compile error GCC10 , constexpr->const
|
||||||
// Three point Hamming window.
|
// Three point Hamming window.
|
||||||
return s[i] * 0.54f + (s[(i-1) & mask] + s[(i+1) & mask]) * -0.23f;
|
return s[i] * 0.54f + (s[(i-1) & mask] + s[(i+1) & mask]) * -0.23f;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T> // Although currently we are not using that Windowing shape, we apply the same GCC10 compile error c/m
|
||||||
static typename T::value_type spectrum_window_blackman_3(const T& s, const size_t i) {
|
static typename T::value_type spectrum_window_blackman_3(const T& s, const size_t i) {
|
||||||
static_assert(power_of_two(s.size()), "Array size must be power of 2");
|
static_assert(power_of_two(sizeof(s)), "Array size must be power of 2"); // c/m compile error GCC10 , OK for all GCC versions.
|
||||||
constexpr size_t mask = s.size() - 1;
|
const size_t mask = s.size() - 1; // c/m compile error GCC10 , constexpr->const
|
||||||
// Three term Blackman window.
|
// Three term Blackman window.
|
||||||
constexpr float alpha = 0.42f;
|
constexpr float alpha = 0.42f;
|
||||||
constexpr float beta = 0.5f * 0.5f;
|
constexpr float beta = 0.5f * 0.5f;
|
||||||
|
Loading…
Reference in New Issue
Block a user