62 lines
946 B
C++
62 lines
946 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <array>
|
|
#include <vector>
|
|
|
|
|
|
namespace SELCAL {
|
|
|
|
constexpr int KEYS_PER_GROUP = 2;
|
|
constexpr char GROUP_SEPARATOR = '-';
|
|
|
|
enum class Key : char {
|
|
KEY_1 = '1',
|
|
KEY_2 = '2',
|
|
KEY_3 = '3',
|
|
KEY_4 = '4',
|
|
KEY_5 = '5',
|
|
KEY_6 = '6',
|
|
KEY_7 = '7',
|
|
KEY_8 = '8',
|
|
KEY_9 = '9',
|
|
KEY_A = 'A',
|
|
KEY_B = 'B',
|
|
KEY_C = 'C',
|
|
KEY_D = 'D',
|
|
KEY_E = 'E',
|
|
KEY_F = 'F',
|
|
KEY_G = 'G',
|
|
KEY_H = 'H',
|
|
KEY_J = 'J',
|
|
KEY_K = 'K',
|
|
KEY_L = 'L',
|
|
KEY_M = 'M',
|
|
KEY_P = 'P',
|
|
KEY_Q = 'Q',
|
|
KEY_R = 'R',
|
|
KEY_S = 'S',
|
|
KEY_T = 'T',
|
|
KEY_U = 'U',
|
|
KEY_V = 'V',
|
|
KEY_W = 'W',
|
|
KEY_X = 'X',
|
|
KEY_Y = 'Y',
|
|
KEY_Z = 'Z',
|
|
};
|
|
|
|
typedef std::array<Key, KEYS_PER_GROUP> Group;
|
|
|
|
class Code {
|
|
public:
|
|
Code(std::string s);
|
|
|
|
private:
|
|
bool isValid() const;
|
|
|
|
const std::string code;
|
|
const std::vector<Group> groups;
|
|
};
|
|
|
|
} // SELCAL
|