selcal/src/code.h

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