Orbiter 2022
Combinatorial Objects
orbiter_command.cpp
Go to the documentation of this file.
1/*
2 * orbiter_command.cpp
3 *
4 * Created on: Jun 20, 2021
5 * Author: betten
6 */
7
8
9
10#include "orbiter.h"
11
12using namespace std;
13
14namespace orbiter {
15namespace layer5_applications {
16namespace user_interface {
17
18
19
20
21
23{
25
27 Algebra = NULL;
28
30 Coding_theory = NULL;
31
33 Combinatorics = NULL;
34
36 Cryptography = NULL;
37
39 Povray = NULL;
40
42 Projective = NULL;
43
45 Symbol_table = NULL;
46
48 Toolkit = NULL;
49}
50
52{
53}
54
55
56void orbiter_command::parse(orbiter_top_level_session *Orbiter_top_level_session,
57 int argc, std::string *Argv, int &i, int verbose_level)
58{
59
60 int f_v = (verbose_level >= 1);
61
62 if (f_v) {
63 cout << "orbiter_command::parse" << endl;
64 }
65
67
68 {
69
70 interface_symbol_table *Interface_symbol_table;
71
72 Interface_symbol_table = NEW_OBJECT(interface_symbol_table);
73 Interface_symbol_table->init(Orbiter_top_level_session, verbose_level);
74
75 if (Interface_symbol_table->recognize_keyword(argc, Argv, i, verbose_level)) {
76 if (f_v) {
77 cout << "orbiter_command::parse recognizing "
78 "keyword from Interface_symbol_table" << endl;
79 }
80 Interface_symbol_table->read_arguments(argc, Argv, i, verbose_level);
81 if (f_v) {
82 cout << "orbiter_command::parse after "
83 "Interface_symbol_table.read_arguments, i=" << i << endl;
84 }
85 //Interface_symbol_table.worker(verbose_level);
86
88 Symbol_table = Interface_symbol_table;
89 return;
90 }
91 else {
92 FREE_OBJECT(Interface_symbol_table);
93 }
94 }
95
96
97 if (f_v) {
98 cout << "orbiter_command::parse before Interface_algebra, "
99 "i = " << i << " " << Argv[i] << endl;
100 }
101 {
102
103 interface_algebra *Interface_algebra;
104 Interface_algebra = NEW_OBJECT(interface_algebra);
105 if (Interface_algebra->recognize_keyword(argc, Argv, i, verbose_level)) {
106 if (f_v) {
107 cout << "orbiter_command::parse recognizing "
108 "keyword from Interface_algebra" << endl;
109 }
110 Interface_algebra->read_arguments(argc, Argv, i, verbose_level);
111 i++;
112 //Interface_algebra.worker(verbose_level);
113 f_algebra = TRUE;
114 Algebra = Interface_algebra;
115 return;
116 }
117 else {
118 FREE_OBJECT(Interface_algebra);
119 }
120 }
121
122 if (f_v) {
123 cout << "orbiter_command::parse before Interface_cryptography, "
124 "i = " << i << " " << Argv[i] << endl;
125 }
126 {
127
128 interface_cryptography *Interface_cryptography;
129 Interface_cryptography = NEW_OBJECT(interface_cryptography);
130 if (Interface_cryptography->recognize_keyword(argc, Argv, i, verbose_level)) {
131 if (f_v) {
132 cout << "orbiter_command::parse recognizing keyword "
133 "from Interface_cryptography" << endl;
134 }
135 Interface_cryptography->read_arguments(argc, Argv, i, verbose_level);
136 i++;
137 //Interface_cryptography.worker(verbose_level);
139 Cryptography = Interface_cryptography;
140 return;
141 }
142 else {
143 FREE_OBJECT(Interface_cryptography);
144 }
145 }
146
147 if (f_v) {
148 cout << "orbiter_command::parse before Interface_combinatorics, "
149 "i = " << i << " " << Argv[i] << endl;
150 }
151 {
152
153 interface_combinatorics *Interface_combinatorics;
154 Interface_combinatorics = NEW_OBJECT(interface_combinatorics);
155 if (Interface_combinatorics->recognize_keyword(argc, Argv, i, verbose_level)) {
156 if (f_v) {
157 cout << "orbiter_command::parse recognizing keyword "
158 "from Interface_combinatorics" << endl;
159 }
160 Interface_combinatorics->read_arguments(argc, Argv, i, verbose_level);
161 i++;
162 //Interface_combinatorics.worker(verbose_level);
164 Combinatorics = Interface_combinatorics;
165 return;
166 }
167 else {
168 FREE_OBJECT(Interface_combinatorics);
169 }
170 }
171
172 if (f_v) {
173 cout << "orbiter_command::parse before Interface_coding_theory, "
174 "i = " << i << " " << Argv[i] << endl;
175 }
176 {
177
178 interface_coding_theory *Interface_coding_theory;
179 Interface_coding_theory = NEW_OBJECT(interface_coding_theory);
180 if (Interface_coding_theory->recognize_keyword(argc, Argv, i, verbose_level)) {
181 if (f_v) {
182 cout << "orbiter_command::parse recognizing keyword "
183 "from Interface_coding_theory" << endl;
184 }
185 Interface_coding_theory->read_arguments(argc, Argv, i, verbose_level);
186 i++;
187 //Interface_coding_theory.worker(verbose_level);
189 Coding_theory = Interface_coding_theory;
190 return;
191 }
192 else {
193 FREE_OBJECT(Interface_coding_theory);
194 }
195 }
196
197 if (f_v) {
198 cout << "orbiter_command::parse before Interface_povray, "
199 "i = " << i << " " << Argv[i] << endl;
200 }
201 {
202
203 interface_povray *Interface_povray;
204 Interface_povray = NEW_OBJECT(interface_povray);
205 if (Interface_povray->recognize_keyword(argc, Argv, i, verbose_level)) {
206 if (f_v) {
207 cout << "orbiter_command::parse recognizing "
208 "keyword from Interface_povray" << endl;
209 }
210 Interface_povray->read_arguments(argc, Argv, i, verbose_level);
211 i++;
212 //Interface_povray.worker(verbose_level);
213 f_povray = TRUE;
214 Povray = Interface_povray;
215 return;
216 }
217 else {
218 FREE_OBJECT(Interface_povray);
219 }
220 }
221
222 if (f_v) {
223 cout << "orbiter_command::parse before Interface_projective, "
224 "i = " << i << " " << Argv[i] << endl;
225 }
226 {
227
228 interface_projective *Interface_projective;
229 Interface_projective = NEW_OBJECT(interface_projective);
230 if (Interface_projective->recognize_keyword(argc, Argv, i, verbose_level)) {
231 Interface_projective->read_arguments(argc, Argv, i, verbose_level);
232 i++;
233 //Interface_projective.worker(verbose_level);
235 Projective = Interface_projective;
236 return;
237 }
238 else {
239 FREE_OBJECT(Interface_projective);
240 }
241 }
242
243 if (f_v) {
244 cout << "orbiter_command::parse before Interface_toolkit, "
245 "i = " << i << endl;
246 }
247 {
248
249 interface_toolkit *Interface_toolkit;
250 Interface_toolkit = NEW_OBJECT(interface_toolkit);
251 if (Interface_toolkit->recognize_keyword(argc, Argv, i, verbose_level)) {
252 Interface_toolkit->read_arguments(argc, Argv, i, verbose_level);
253 i++;
254 //Interface_toolkit.worker(verbose_level);
255 f_toolkit = TRUE;
256 Toolkit = Interface_toolkit;
257 return;
258 }
259 else {
260 FREE_OBJECT(Interface_toolkit);
261 }
262 }
263 cout << "orbiter_command::parse command " << Argv[i] << " at position "
264 << i << " is unrecognized" << endl;
265
266#if 0
267 for (int j = 0; j <= i; j++) {
268 cout << Argv[j] << endl;
269 }
270#endif
271 exit(1);
272
273}
274
275void orbiter_command::execute(int verbose_level)
276{
277 int f_v = (verbose_level >= 1);
278
279 if (f_v) {
280 cout << "orbiter_command::execute" << endl;
281 }
282
283 if (f_symbol_table) {
284 Symbol_table->worker(verbose_level);
285 }
286 else if (f_algebra) {
287 Algebra->worker(verbose_level);
288 }
289 else if (f_cryptography) {
290 Cryptography->worker(verbose_level);
291 }
292 else if (f_combinatorics) {
293 Combinatorics->worker(verbose_level);
294 }
295 else if (f_coding_theory) {
296 Coding_theory->worker(verbose_level);
297 }
298 else if (f_povray) {
299 Povray->worker(verbose_level);
300 }
301 else if (f_projective) {
302 Projective->worker(verbose_level);
303 }
304 else if (f_toolkit) {
305 Toolkit->worker(verbose_level);
306 }
307 else {
308 cout << "orbiter_command::execute unknown type" << endl;
309 exit(1);
310 }
311
312 if (f_v) {
313 cout << "orbiter_command::execute done" << endl;
314 }
315
316}
317
318
320{
321 if (f_symbol_table) {
323 }
324 else if (f_algebra) {
325 Algebra->print();
326 }
327 else if (f_cryptography) {
329 }
330 else if (f_combinatorics) {
332 }
333 else if (f_coding_theory) {
335 }
336 else if (f_povray) {
337 Povray->print();
338 }
339 else if (f_projective) {
340 Projective->print();
341 }
342 else if (f_toolkit) {
343 Toolkit->print();
344 }
345 else {
346 cout << "orbiter_command::print unknown type" << endl;
347 exit(1);
348 }
349
350}
351
352}}}
353
354
355
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
interface to the povray rendering module
Definition: interfaces.h:525
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
interface to the projective geometry module
Definition: interfaces.h:552
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
void init(orbiter_top_level_session *Orbiter_top_level_session, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void parse(orbiter_top_level_session *Orbiter_top_level_session, int argc, std::string *Argv, int &i, int verbose_level)
The top level orbiter session is responsible for the command line interface and the program execution...
Definition: interfaces.h:814
#define NEW_OBJECT(type)
Definition: foundations.h:638
#define FREE_OBJECT(p)
Definition: foundations.h:651
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects