EnigmaMachineCore 0.1.0
A modular Enigma Machine simulation in C++20
Loading...
Searching...
No Matches
Reflector.cpp
Go to the documentation of this file.
1
6#include "Reflector.hpp"
7#include <iostream>
8#include <stdexcept>
9#include <vector>
10
13
14 copyTransformRow(0, config.wiring);
15
16 // Initialize reverse transformation vector to -1.
17 // Reflectors are typically symmetric, but the Transformer base class supports separate reverse path.
18 // For a reflector, the return path is usually implicit in the map itself if symmetric.
19 // However, keeping consistent with the old code:
20 fillTransformRow(1, -1);
21}
22
25
26 copyTransformRow(0, config.wiring);
27
28 fillTransformRow(1, -1);
29}
30
36AlphabetIndex Reflector::transform(AlphabetIndex position, bool reverse) const {
37 return reverse ? transformReverse(position) : transformForward(position);
38}
39
44AlphabetIndex Reflector::transformForward(AlphabetIndex position) const { return getTransformValue(0, position); }
45
50AlphabetIndex Reflector::transformReverse(AlphabetIndex position) const { return getTransformValue(1, position); }
Header file for the Reflector class.
AlphabetIndex transformReverse(AlphabetIndex position) const override
Transforms the given position in reverse.
Definition Reflector.cpp:50
AlphabetIndex transformForward(AlphabetIndex position) const override
Transforms the given position forward.
Definition Reflector.cpp:44
AlphabetIndex transform(AlphabetIndex position, bool reverse=false) const override
Transforms the given position using the reflector's transformation lookup table (LUT).
Definition Reflector.cpp:36
Reflector(const ReflectorConfig &config)
Constructor for the Reflector class. Initializes the reflector with a configuration....
Definition Reflector.cpp:11
TransformerType type
AlphabetIndex getTransformValue(int row, int col) const
Gets a value from the transformation lookup table.
void copyTransformRow(int row, const std::array< AlphabetIndex, TRANSFORMER_SIZE > &values)
Copies a whole array into a row of the transformation lookup table.
void fillTransformRow(int row, AlphabetIndex value)
Fills a row of the transformation lookup table with a specific value.
Configuration structure for a Reflector.
std::array< AlphabetIndex, TRANSFORMER_SIZE > wiring
The internal wiring permutation array (reflection map). Must be of size TRANSFORMER_SIZE.