annotate enigma/enigma_utils.h @ 16:280facb82b80

Add the ability to change ring settings at the machine level.
author Brian Neal <bgneal@gmail.com>
date Sat, 07 Jul 2012 11:42:31 -0500
parents 424111a36ed7
children
rev   line source
bgneal@1 1 #ifndef CPP_ENIGMA_ENIGMA_UTILS_H
bgneal@1 2 #define CPP_ENIGMA_ENIGMA_UTILS_H
bgneal@1 3 // Copyright (C) 2012 by Brian Neal.
bgneal@1 4 // This file is part of Cpp-Enigma, the Enigma Machine simulation.
bgneal@1 5 // Cpp-Enigma is released under the MIT License (see License.txt).
bgneal@1 6 //
bgneal@1 7 // enigma_utils.h - This file contains common functions used throughout Cpp-Enigma.
bgneal@1 8
bgneal@4 9 #include <string>
bgneal@4 10
bgneal@1 11 namespace enigma
bgneal@1 12 {
bgneal@1 13 // This version of mod acts like Python's with respect to negative dividends.
bgneal@1 14 inline int alpha_mod(int dividend)
bgneal@1 15 {
bgneal@1 16 if (dividend < 0)
bgneal@1 17 {
bgneal@1 18 dividend += 26;
bgneal@1 19 }
bgneal@1 20 return dividend % 26;
bgneal@1 21 }
bgneal@4 22
bgneal@4 23 // Removes spaces from a string and returns the resulting string:
bgneal@4 24 std::string remove_spaces(const std::string& s);
bgneal@12 25
bgneal@12 26 // Removes spaces & converts to signal numbers:
bgneal@12 27 std::string preprocess_ciphertext(const std::string& s);
bgneal@1 28 }
bgneal@1 29
bgneal@1 30 #endif