1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#include "morse.hpp"
#include <windows.h>
const std::string Morse::codes[number_of_codes] = {
".-",//a
"-...",//b
"-.-.",//c
"-..",//and so on...
".",
"..-.",
"--.",
"....",
"..",
".---",
"-.-",
".-..",
"--",
"-.",
"---",
".--.",
"--.-",
".-.",
"...",
"-",
"..-",
"...-",
".--",
"-..-",
"-.--",
"--.."//z
};
Morse::Morse() : time_dot(200), time_dash(400) {
}
void Morse::beep(bool is_dot) {
const static int frequency = 440;
const int duration = (is_dot ? time_dot : time_dash);
::Beep(frequency, duration);
}
Morse& Morse::operator<<(std::string string) {
for (const auto& it : string) {
const int index = char(it - 'a');
std::string code = codes[index];
for (const auto& it : code) {
this->beep((it == '.'));
}
}
return *this;
}
|