Control Surface  1.1.1
MIDI Control Surface library for Arduino
Frequency.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
5 
6 #include <AH/Settings/NamespaceSettings.hpp>
7 
9 
11 class Frequency {
12  public:
13  explicit constexpr Frequency(unsigned long hertz) : hertz(hertz) {}
14  constexpr operator unsigned long() const { return hertz; }
15 
16  private:
17  unsigned long hertz;
18 };
19 constexpr Frequency operator"" _Hz(unsigned long long hz) {
20  return Frequency{(unsigned long)hz};
21 }
22 constexpr Frequency operator"" _kHz(long double khz) {
23  return Frequency{(unsigned long)(khz * 1E3)};
24 }
25 constexpr Frequency operator"" _kHz(unsigned long long khz) {
26  return Frequency{(unsigned long)(khz * 1E3)};
27 }
28 constexpr Frequency operator"" _MHz(long double mhz) {
29  return Frequency{(unsigned long)(mhz * 1E6)};
30 }
31 constexpr Frequency operator"" _MHz(unsigned long long mhz) {
32  return Frequency{(unsigned long)(mhz * 1E6)};
33 }
34 
36 
Warnings.hpp
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:17
AH::Frequency::Frequency
constexpr Frequency(unsigned long hertz)
Definition: Frequency.hpp:13
AH::Frequency
Type-safe class for frequency values.
Definition: Frequency.hpp:11
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:16
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
AH::Frequency::hertz
unsigned long hertz
Definition: Frequency.hpp:17