libenigma
Enigma machine utility library
Loading...
Searching...
No Matches
enigma.h
Go to the documentation of this file.
1
8#ifndef ENIGMA_ENIGMA_H
9#define ENIGMA_ENIGMA_H
10
11#include "reflector.h"
12#include "rotor.h"
13
14#ifndef ENIGMA_VERSION
18#define ENIGMA_VERSION "unknown"
19#endif
20
34typedef struct {
35 const EnigmaRotor* rotors[4];
36 int rotor_indices[4];
40 char plugboard[27];
41} Enigma;
42
43char enigma_encode(Enigma*, int);
44int enigma_encode_string(Enigma*, const char*, char*, int);
45int enigma_init_rotors(Enigma*, const EnigmaRotor*, int);
48Enigma* enigma_new(void);
49const char* enigma_version(void);
50
51/* --- Enigma getters and setters --- */
52const char* enigma_get_plugboard(const Enigma*);
54const EnigmaRotor* enigma_get_rotor(const Enigma*, int);
57int enigma_get_rotor_index(const Enigma*, int);
58int enigma_set_plugboard(Enigma*, const char*);
60int enigma_set_rotor(Enigma*, int, int);
63int enigma_set_rotor_index(Enigma*, int, int);
64
65#endif
int enigma_set_rotor(Enigma *, int, int)
Set the rotor.
Definition: enigma.c:393
int enigma_init_default_config(Enigma *)
Load the default configuration for the Enigma machine.
Definition: enigma.c:139
int enigma_init_rotors(Enigma *, const EnigmaRotor *, int)
Initialize the rotors of the Enigma machine.
Definition: enigma.c:115
int enigma_set_rotor_count(Enigma *, int)
Set the number of rotors.
Definition: enigma.c:411
const EnigmaReflector * enigma_get_reflector(const Enigma *)
Get the reflector configuration.
Definition: enigma.c:265
int enigma_set_rotor_flag(Enigma *, int)
Set the rotor flag status.
Definition: enigma.c:428
int enigma_set_reflector(Enigma *, int)
Definition: enigma.c:375
char enigma_encode(Enigma *, int)
Encode a character using the Enigma machine.
Definition: enigma.c:43
int enigma_get_rotor_count(const Enigma *)
Get the number of rotors.
Definition: enigma.c:298
const EnigmaRotor * enigma_get_rotor(const Enigma *, int)
Get the rotor configuration.
Definition: enigma.c:282
int enigma_set_rotor_index(Enigma *, int, int)
Set the index of a rotor.
Definition: enigma.c:445
int enigma_set_plugboard(Enigma *, const char *)
Set the plugboard configuration.
Definition: enigma.c:348
int enigma_get_rotor_flag(const Enigma *)
Get the rotor flag.
Definition: enigma.c:313
int enigma_get_rotor_index(const Enigma *, int)
Get the index of a rotor.
Definition: enigma.c:329
Enigma * enigma_new(void)
Create a new Enigma machine.
Definition: enigma.c:226
int enigma_init_random_config(Enigma *)
Load a random configuration for the Enigma machine.
Definition: enigma.c:165
const char * enigma_get_plugboard(const Enigma *)
Get the plugboard configuration.
Definition: enigma.c:249
const char * enigma_version(void)
Get the version of the Enigma library.
Definition: enigma.c:239
int enigma_encode_string(Enigma *, const char *, char *, int)
Encode a string using the Enigma machine.
Definition: enigma.c:91
Represents a reflector configuration for the Enigma machine.
Definition: reflector.h:22
Represents a rotor configuration for the Enigma machine.
Definition: rotor.h:23
Represents the state and configuration of an Enigma machine.
Definition: enigma.h:34
const EnigmaReflector * reflector
Pointer to reflector configuration.
Definition: enigma.h:39
int rotor_flag
Flag indicating rotor behavior.
Definition: enigma.h:37
int rotor_count
Number of rotors in use.
Definition: enigma.h:38