diff enigma/rotor_data.h @ 1:1459e74fda3f

Finished creating rotor class and factories.
author Brian Neal <bgneal@gmail.com>
date Fri, 22 Jun 2012 20:15:11 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/enigma/rotor_data.h	Fri Jun 22 20:15:11 2012 -0500
@@ -0,0 +1,47 @@
+#ifndef CPP_ENIGMA_ROTOR_DATA_H
+#define CPP_ENIGMA_ROTOR_DATA_H
+// Copyright (C) 2012 by Brian Neal.
+// This file is part of Cpp-Enigma, the Enigma Machine simulation.
+// Cpp-Enigma is released under the MIT License (see License.txt).
+//
+// rotor_data.h - This file contains standard rotor & reflector data.
+
+#include <map>
+#include <string>
+
+namespace enigma
+{
+   struct rotor_data
+   {
+      const char* wiring;
+      const char* stepping;
+   };
+
+   typedef std::map<std::string, rotor_data> rotor_data_map;
+
+   const rotor_data_map simulated_rotors
+   {
+      { "I",      { "EKMFLGDQVZNTOWYHXUSPAIBRCJ", "Q" } },
+      { "II",     { "AJDKSIRUXBLHWTMCQGZNPYFVOE", "E" } },
+      { "III",    { "BDFHJLCPRTXVZNYEIWGAKMUSQO", "V" } },
+      { "IV",     { "ESOVPZJAYQUIRHXLNFTGKDCMWB", "J" } },
+      { "V",      { "VZBRGITYUPSDNHLXAWMJQOFECK", "Z" } },
+      { "VI",     { "JPGVOUMFYQBENHZRDKASXLICTW", "ZM"} },
+      { "VII",    { "NZJHGRCXMYSWBOUFAIVLPEKQDT", "ZM"} },
+      { "VIII",   { "FKQHTLXOCBJSPDZRAMEWNIUYGV", "ZM" } },
+      { "Beta",   { "LEYJVCNIXWPBQMDRTAKZGFUHOS", nullptr } },
+      { "Gamma",  { "FSOKANUERHMBTIYCWLQPZXVGJD", nullptr } },
+    };
+
+   typedef std::map<std::string, const char*> reflector_data_map;
+
+   const reflector_data_map simulated_reflectors
+   {
+      { "B",      "YRUHQSLDPXNGOKMIEBFZCWVJAT" },
+      { "C",      "FVPJIAOYEDRZXWGCTKUQSBNMHL" },
+      { "B-Thin", "ENKQAUYWJICOPBLMDXZVFTHRGS" },
+      { "C-Thin", "RDOBJNTKVEHMLFCWZAXGYIPSUQ" },
+   };
+}
+
+#endif