sequencer
beats_per_minute.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <ostream>
4 
5 namespace sequencer
6 {
7 
9  {
10  public:
11  using rep = double;
12 
13  constexpr explicit beats_per_minute( rep beats_per_minute ) noexcept
14  : beats_per_minute_( beats_per_minute )
15  {
16  }
17 
18  constexpr rep to_double() const noexcept
19  {
20  return beats_per_minute_;
21  }
22 
23  private:
24  rep beats_per_minute_;
25  };
26 
27  constexpr beats_per_minute operator"" _bpm( long double value ) noexcept
28  {
29  return beats_per_minute( value );
30  }
31 
32  constexpr beats_per_minute operator"" _bpm( unsigned long long int value ) noexcept
33  {
34  return beats_per_minute( value );
35  }
36 
37  inline std::ostream& operator<<( std::ostream& os, beats_per_minute bpm )
38  {
39  return os << bpm.to_double() << "bpm";
40  }
41 
42  static_assert( ( 120.0_bpm ).to_double() == 120.0 );
43 
44 } // namespace sequencer
constexpr rep to_double() const noexcept
Definition: beats_per_minute.hpp:18
Definition: beats_per_minute.hpp:8
double rep
Definition: beats_per_minute.hpp:11
constexpr beats_per_minute(rep beats_per_minute) noexcept
Definition: beats_per_minute.hpp:13
std::ostream & operator<<(std::ostream &os, beat_duration beats)
Definition: beat_duration.hpp:86