41 lines
1.3 KiB
C++

#ifndef SIGNALSMITH_DSP_COMMON_H
#define SIGNALSMITH_DSP_COMMON_H
#ifndef M_PI
#define M_PI 3.14159265358979323846264338327950288
#endif
namespace signalsmith {
/** @defgroup Common Common
@brief Definitions and helper classes used by the rest of the library
@{
@file
*/
#define SIGNALSMITH_DSP_VERSION_MAJOR 1
#define SIGNALSMITH_DSP_VERSION_MINOR 3
#define SIGNALSMITH_DSP_VERSION_PATCH 3
#define SIGNALSMITH_DSP_VERSION_STRING "1.3.3"
/** Version compatability check.
\code{.cpp}
static_assert(signalsmith::version(1, 0, 0), "version check");
\endcode
... or use the equivalent `SIGNALSMITH_DSP_VERSION_CHECK`.
Major versions are not compatible with each other. Minor and patch versions are backwards-compatible.
*/
constexpr bool versionCheck(int major, int minor, int patch=0) {
return major == SIGNALSMITH_DSP_VERSION_MAJOR
&& (SIGNALSMITH_DSP_VERSION_MINOR > minor
|| (SIGNALSMITH_DSP_VERSION_MINOR == minor && SIGNALSMITH_DSP_VERSION_PATCH >= patch));
}
/// Check the library version is compatible (semver).
#define SIGNALSMITH_DSP_VERSION_CHECK(major, minor, patch) \
static_assert(::signalsmith::versionCheck(major, minor, patch), "signalsmith library version is " SIGNALSMITH_DSP_VERSION_STRING);
/** @} */
} // signalsmith::
#endif // include guard