Maze Builder Docs 6.7.5
Loading...
Searching...
No Matches
enums.h
Go to the documentation of this file.
1#ifndef ENUMS
2#define ENUMS
3
4#include <cstdint>
5#include <string>
6#include <stdexcept>
7
10
11namespace mazes {
12
14 static constexpr auto BARRIER1 = '|';
15 static constexpr auto BARRIER2 = '-';
16 static constexpr auto CORNER = '+';
17
19 enum class output : unsigned int {
20 PLAIN_TEXT = 0,
21 JSON = 1,
22 WAVEFRONT_OBJECT_FILE = 2,
23 PNG = 3,
24 JPEG = 4,
25 STDOUT = 5,
26 TOTAL = 6
27 };
28
32 static std::string to_string_from_outputs(output o) {
33 switch (o) {
34 case output::PLAIN_TEXT:
35 return "txt";
36 case output::JSON:
37 return "json";
38 case output::WAVEFRONT_OBJECT_FILE:
39 return "obj";
40 case output::PNG:
41 return "png";
42 case output::JPEG:
43 return "jpeg";
44 case output::STDOUT:
45 return "stdout";
46 default:
47 throw std::invalid_argument("Invalid output: " + std::to_string(static_cast<unsigned int>(o)));
48 }
49 };
50
54 static output to_output_from_string(const std::string& o) {
55 if (o.compare("txt") == 0) {
56 return output::PLAIN_TEXT;
57 } else if (o.compare("text") == 0) {
58 return output::PLAIN_TEXT;
59 } else if (o.compare("json") == 0) {
60 return output::JSON;
61 } else if (o.compare("obj") == 0) {
62 return output::WAVEFRONT_OBJECT_FILE;
63 } else if (o.compare("object") == 0) {
64 return output::WAVEFRONT_OBJECT_FILE;
65 } else if (o.compare("png") == 0) {
66 return output::PNG;
67 } else if (o.compare("jpeg") == 0) {
68 return output::JPEG;
69 } else if (o.compare("jpg") == 0) {
70 return output::JPEG;
71 } else if (o.compare("stdout") == 0) {
72 return output::STDOUT;
73 } else {
74 throw std::invalid_argument("Invalid output: " + o);
75 }
76 };
77
79 enum class algo : unsigned int {
80 BINARY_TREE = 0,
81 SIDEWINDER = 1,
82 DFS = 2,
83 TOTAL = 3
84 };
85
89 static std::string to_string_from_algo(algo a) {
90 switch (a) {
91 case algo::BINARY_TREE:
92 return "binary_tree";
93 case algo::SIDEWINDER:
94 return "sidewinder";
95 case algo::DFS:
96 return "dfs";
97 default:
98 throw std::invalid_argument("Invalid algo: " + std::to_string(static_cast<unsigned int>(a)));
99 }
100 };
101
105 static algo to_algo_from_string(const std::string& a) {
106 if (a.compare("binary_tree") == 0) {
107 return algo::BINARY_TREE;
108 } else if (a.compare("sidewinder") == 0) {
109 return algo::SIDEWINDER;
110 } else if (a.compare("dfs") == 0) {
111 return algo::DFS;
112 } else {
113 throw std::invalid_argument("Invalid algo: " + a);
114 }
115 };
116
118 enum class Direction : std::uint8_t {
119 NORTH = 0,
120 SOUTH = 1,
121 EAST = 2,
122 WEST = 3,
123 COUNT
124 };
125} // namespace
126
127#endif // ENUMS
Namespace for the maze builder.
Definition algo_interface.h:9
output
Enum class for output types.
Definition enums.h:19
Direction
Directional neighbors for grid topology.
Definition enums.h:118
algo
Enum class for maze types by the generating algorithm.
Definition enums.h:79