Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/options/Option.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
14
/// @file Option.h
15
/// @author Daniel Krajzewicz
16
/// @author Michael Behrisch
17
/// @author Jakob Erdmann
18
/// @date Mon, 17 Dec 2001
19
///
20
// Classes representing a single program option (with different types)
21
/****************************************************************************/
22
#pragma once
23
#include <config.h>
24
25
#include <string>
26
#include <vector>
27
#include <exception>
28
#include <utils/common/UtilExceptions.h>
29
30
// ===========================================================================
31
// class definitions
32
// ===========================================================================
33
34
/**@typedef IntVector
35
* @brief Definition of a vector of ints
36
*/
37
typedef std::vector<int> IntVector;
38
39
/**@typedef StringVector
40
* @brief Definition of a vector of strings
41
*/
42
typedef std::vector<std::string> StringVector;
43
44
#define CLONEABLE(Type) virtual Type* clone() const { return new Type(*this); }
45
46
/* -------------------------------------------------------------------------
47
* Option
48
* ----------------------------------------------------------------------- */
49
/**
50
* @class Option
51
* @brief A class representing a single program option
52
*
53
* The base class for a single program option. All options which hold values
54
* are derived from this class as the type of stored values may differ.
55
*
56
* Most of the getter-methods throw exceptions because this base class is not meant
57
* to hold any values by itself. Instead, the derived classes implement the
58
* appropriate method (Option_Integer implements getInt, f.e.). So, when one
59
* tries to retrieve a value which is not of the type of the option, an
60
* exception will be thrown. This behaviour is meant to be valid, because
61
* errors like this one only occur when building and testing the application.
62
*
63
* Due to described behaviour, this class has no public constructors. Only
64
* construction of derived, value and type holding, classes is allowed.
65
*
66
* At the begin (after being constructed) an Option either has a default value or not.
67
* In dependence to this, myHaveTheDefaultValue is set. Also, myAmSet is set to
68
* true if a default value was supported. myAmWritable is set to true,
69
* indicating that a new value may be set.
70
*
71
* Each option may have a description about its purpose stored. Furthermore, it
72
* stores a man-readable type name for this option.
73
*/
74
class Option {
75
76
public:
77
/// @brief destructor
78
virtual ~Option();
79
80
/** @brief returns the information whether this options holds a valid value
81
* @return Whether a value has been set
82
*/
83
bool isSet() const;
84
85
/** @brief Returns the stored double value
86
*
87
* Option_Float returns the stored real number in this method's reimplementation.
88
* All other option classes do not override this method which throws an InvalidArgument-exception.
89
*
90
* @return Returns the stored real number if being an instance of Option_Float
91
* @exception InvalidArgument If the class is not an instance of Option_Float
92
*/
93
virtual double getFloat() const;
94
95
/** @brief Returns the stored integer value
96
*
97
* Option_Integer returns the stored integer number in this method's reimplementation.
98
* All other option classesdo not override this method which throws an InvalidArgument-exception.
99
*
100
* @return Returns the stored integer number if being an instance of Option_Integer
101
* @exception InvalidArgument If the class is not an instance of Option_Integer
102
*/
103
virtual int getInt() const;
104
105
/** @brief Returns the stored string value
106
*
107
* Option_String returns the stored string in this method's reimplementation.
108
* Option_FileName's reimplementation is only to be used for single filename string-vector options.
109
* All other option classes do not override this method which throws an InvalidArgument-exception.
110
*
111
* @return Returns the stored string if being an instance of Option_String or Option_FileName
112
* @exception InvalidArgument If the class is not an instance of Option_String or Option_FileName
113
*/
114
virtual std::string getString() const;
115
116
/** @brief Returns the stored boolean value
117
*
118
* Option_Bool returns the stored boolean in this method's reimplementation.
119
* All other option classes do not override this method which throws an InvalidArgument-exception.
120
*
121
* @return Returns the stored boolean if being an instance of Option_Bool
122
* @exception InvalidArgument If the class is not an instance of Option_Bool
123
*/
124
virtual bool getBool() const;
125
126
/** @brief Returns the stored integer vector
127
*
128
* Option_IntVector returns the stored integer vector in this method's reimplementation.
129
* All other option classes do not override this method which throws an InvalidArgument-exception.
130
*
131
* @return Returns the stored integer vector if being an instance of Option_IntVector
132
* @exception InvalidArgument If the class is not an instance of Option_IntVector
133
*/
134
virtual const IntVector& getIntVector() const;
135
136
/** @brief Returns the stored string vector
137
*
138
* Option_StringVector returns the stored string vector in this method's reimplementation.
139
* All other option classes do not override this method which throws an InvalidArgument-exception.
140
*
141
* @return Returns the stored string vector if being an instance of Option_StringVector
142
* @exception InvalidArgument If the class is not an instance of Option_StringVector
143
*/
144
virtual const StringVector& getStringVector() const;
145
146
/** @brief Stores the given value
147
*
148
* This method is overriden by all option classes.
149
* The value is converted into the proper type and stored in "myValue".
150
* Then, "markSet" is called in order to know that a value has been set.
151
*
152
* The method returns whether the value could be set (the return value from
153
* "markSet").
154
*
155
* If the string could not be converted into the type, an InvalidArgument
156
* is thrown.
157
*
158
* @return Whether the new value could be set
159
* @exception InvalidArgument If the value could not be converted
160
*/
161
virtual bool set(const std::string& v, const std::string& orig, const bool append) = 0;
162
163
/** @brief Returns the string-representation of the value
164
*
165
* The stored value is encoded into a string and returned.
166
*
167
* @return The stored value encoded into a string-
168
*/
169
const std::string& getValueString() const;
170
171
/** @brief Returns the information whether the option holds the default value
172
*
173
* @return true if the option was not set from command line / configuration, false otherwise
174
*/
175
virtual bool isDefault() const;
176
177
/** @brief Returns the information whether the option is a int option
178
*
179
* Returns false. Only Option_Integer overrides this method returning true.
180
*
181
* @return true if the Option is an Option_Integer, false otherwise
182
*/
183
virtual bool isInteger() const;
184
185
/** @brief Returns the information whether the option is a float option
186
*
187
* Returns false. Only Option_Float overrides this method returning true.
188
*
189
* @return true if the Option is an Option_Float, false otherwise
190
*/
191
virtual bool isFloat() const;
192
193
/** @brief Returns the information whether the option is a bool option
194
*
195
* Returns false. Only Option_Bool overrides this method returning true.
196
*
197
* @return true if the Option is an Option_Bool, false otherwise
198
*/
199
virtual bool isBool() const;
200
201
/** @brief Returns the information whether this option is a file name
202
*
203
* Returns false. Only Option_FileName overrides this method returning true.
204
*
205
* @return true if the Option is an Option_FileName, false otherwise
206
*/
207
virtual bool isFileName() const;
208
209
/** @brief Returns the information whether this option is a network file
210
*
211
* Returns false. Only Option_Network overrides this method returning true.
212
*
213
* @return true if the Option is an Option_Network, false otherwise
214
*/
215
virtual bool isNetwork() const;
216
217
/** @brief Returns the information whether this option is an additional file
218
*
219
* Returns false. Only Option_Additional overrides this method returning true.
220
*
221
* @return true if the Option is an Option_Additional, false otherwise
222
*/
223
virtual bool isAdditional() const;
224
225
/** @brief Returns the information whether this option is a route file
226
*
227
* Returns false. Only Option_Route overrides this method returning true.
228
*
229
* @return true if the Option is an Option_Route, false otherwise
230
*/
231
virtual bool isRoute() const;
232
233
/** @brief Returns the information whether this option is a data file
234
*
235
* Returns false. Only Option_Data overrides this method returning true.
236
*
237
* @return true if the Option is an Option_Data, false otherwise
238
*/
239
virtual bool isData() const;
240
241
/** @brief Returns the information whether this option is a sumo config file
242
*
243
* Returns false. Only Option_SumoConfig overrides this method returning true.
244
*
245
* @return true if the Option is an Option_SumoConfig, false otherwise
246
*/
247
virtual bool isSumoConfig() const;
248
249
/** @brief Returns the information whether this option is an edge
250
*
251
* Returns false. Only Option_Edge overrides this method returning true.
252
*
253
* @return true if the Option is an Option_Edge, false otherwise
254
*/
255
virtual bool isEdge() const;
256
257
/** @brief Returns the information whether this option is a vector of edges
258
*
259
* Returns false. Only Option_EdgeVector overrides this method returning true.
260
*
261
* @return true if the Option is an Option_EdgeVector, false otherwise
262
*/
263
virtual bool isEdgeVector() const;
264
265
/** @brief Returns the information whether the option may be set a further time
266
*
267
* This method returns whether the option was not already set using command line
268
* options / configuration. This is done by returning the value of myAmWritable.
269
*
270
* @return Whether the option may be set from the command line / configuration
271
*/
272
bool isWriteable() const;
273
274
/** @brief Resets the option to be writeable
275
*
276
* An option is writable after initialisation, but as soon as it gets set,
277
* it is no longer writeable. This method resets the writable-flag.
278
*/
279
void resetWritable();
280
281
/** @brief Resets the option to be on its default value
282
*
283
* An option is on its default after initialisation with a value, but as soon as it gets set,
284
* it is no longer. This method resets the default-flag.
285
*/
286
void resetDefault();
287
288
/** @brief Returns the description of what this option does
289
*
290
* The description stored in myDescription is returned.
291
*
292
* @return The description of this option's purpose
293
*/
294
const std::string& getDescription() const;
295
296
/** @brief Sets the description of what this option does
297
*
298
* The description stored in myDescription is returned.
299
*
300
* @return The description of this option's purpose
301
*/
302
void setDescription(const std::string& desc);
303
304
/// @brief check if option is required
305
bool isRequired() const;
306
307
/// @brief mark option as required
308
void setRequired();
309
310
/// @brief check if option is positional
311
bool isPositional() const;
312
313
/// @brief mark option as positional
314
void setPositional();
315
316
/// @brief retrieve list separator
317
const std::string& getListSeparator() const;
318
319
/// @brief set list separator
320
void setListSeparator(const std::string& listSep);
321
322
/// @brief Returns the subtopic to which this option belongs
323
const std::string& getSubTopic() const;
324
325
/// @brief Sets the subtopic to which this option belongs
326
void setSubtopic(const std::string& subtopic);
327
328
/** @brief Returns the mml-type name of this option
329
*
330
* The type name stored in myTypeName is returned.
331
*
332
* @return The man-readable type name
333
*/
334
virtual const std::string& getTypeName() const;
335
336
/** @brief Returns a copy of this option
337
*
338
* @return The option copy
339
*/
340
virtual Option* clone() const = 0;
341
342
protected:
343
/** @brief Marks the information as set
344
*
345
* Sets the "myAmSet" - information. Returns whether the option was writeable before.
346
*
347
* @return Whether the option was not set before.
348
*/
349
bool markSet(const std::string& orig);
350
351
/** @brief Constructor
352
*
353
* This constructor should be used by derived classes.
354
* The boolean value indicates whether a default value was supplied or not.
355
*
356
* @param[in] set A default value was supplied
357
*/
358
Option(bool set = false);
359
360
/// @brief A type name for this option (has presets, but may be overwritten)
361
std::string myTypeName;
362
363
/// @brief The original set string
364
std::string myValueString;
365
366
private:
367
/// @brief information whether the value is set
368
bool myAmSet;
369
370
/// @brief information whether the value is the default value (is then set)
371
bool myHaveTheDefaultValue = true;
372
373
/// @brief information whether the value may be changed
374
bool myAmWritable = true;
375
376
/// @brief The description what this option does
377
std::string myDescription;
378
379
/// @brief this option is required (needed for python tools)
380
bool myRequired = false;
381
382
/// @brief this option is positional (needed for python tools)
383
bool myPositional = false;
384
385
/// @brief the list separator for this option (needed for python tools)
386
std::string myListSeparator = "";
387
388
/// @brief The subtopic to which this option belongs
389
std::string mySubTopic;
390
};
391
392
// -------------------------------------------------------------------------
393
// Option_Integer
394
// -------------------------------------------------------------------------
395
396
class Option_Integer : public Option {
397
398
public:
399
/** @brief Constructor for an option with a default value
400
*
401
* Calls Option(true)
402
*
403
* @param[in] value This option's default value
404
*/
405
Option_Integer(int value);
406
407
/** @brief Returns the stored integer value
408
* @see Option::getInt()
409
* @return Returns the stored integer number
410
*/
411
int getInt() const;
412
413
/** @brief Stores the given value after parsing it into an integer
414
*
415
* The value is converted into an integer and stored in "myValue".
416
* Then, "markSet" is called in order to know that a value has been set.
417
*
418
* The method returns whether the value could be set (the return value from
419
* "markSet").
420
*
421
* If the string could not be converted into an integer, an InvalidArgument
422
* is thrown.
423
*
424
* @see bool Option::set(std::string v)
425
* @return Whether the new value could be set
426
* @exception InvalidArgument If the value could not be converted into an integer
427
*/
428
bool set(const std::string& v, const std::string& orig, const bool append);
429
430
/** @brief Returns the information whether the option is a int option
431
*
432
* Returns false. Only Option_Integer overrides this method returning true.
433
*
434
* @return true if the Option is an Option_Integer, false otherwise
435
*/
436
bool isInteger() const;
437
438
CLONEABLE(Option_Integer)
439
440
private:
441
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
442
int myValue;
443
};
444
445
// -------------------------------------------------------------------------
446
// Option_String
447
// -------------------------------------------------------------------------
448
449
class Option_String : public Option {
450
451
public:
452
/** @brief Constructor for an option with no default value
453
*
454
* Calls Option(false)
455
*/
456
Option_String();
457
458
/** @brief Constructor for an option with a default value
459
*
460
* Calls Option(true)
461
*
462
* @param[in] value This option's default value
463
*/
464
Option_String(const std::string& value, std::string typeName = "STR");
465
466
/** @brief Returns the stored string value
467
* @see std::string Option::getString()
468
* @return Returns the stored string
469
*/
470
std::string getString() const;
471
472
/** @brief Stores the given value
473
*
474
* The value is stored in "myValue".
475
* Then, "markSet" is called in order to know that a value has been set.
476
*
477
* The method returns whether the value could be set (the return value from
478
* "markSet").
479
*
480
* @see bool Option::set(std::string v)
481
* @return Whether the new value could be set
482
*/
483
bool set(const std::string& v, const std::string& orig, const bool append);
484
485
CLONEABLE(Option_String)
486
487
protected:
488
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
489
std::string myValue;
490
};
491
492
// -------------------------------------------------------------------------
493
// Option_Float
494
// -------------------------------------------------------------------------
495
496
class Option_Float : public Option {
497
498
public:
499
/** @brief Constructor for an option with a default value
500
*
501
* Calls Option(true)
502
*
503
* @param[in] value This option's default value
504
*/
505
Option_Float(double value);
506
507
/** @brief Returns the stored double value
508
* @see double Option::getFloat()
509
* @return Returns the stored real number
510
*/
511
double getFloat() const;
512
513
/** @brief Stores the given value after parsing it into a double
514
*
515
* The value is converted into a double and stored in "myValue".
516
* Then, "markSet" is called in order to know that a value has been set.
517
*
518
* The method returns whether the value could be set (the return value from
519
* "markSet").
520
*
521
* If the string could not be converted into a double, an InvalidArgument
522
* is thrown.
523
*
524
* @see bool Option::set(std::string v)
525
* @return Whether the new value could be set
526
* @exception InvalidArgument If the value could not be converted into a double
527
*/
528
bool set(const std::string& v, const std::string& orig, const bool append);
529
530
/** @brief Returns the information whether the option is a float option
531
*
532
* Returns false. Only Option_Float overrides this method returning true.
533
*
534
* @return true if the Option is an Option_Float, false otherwise
535
*/
536
bool isFloat() const;
537
538
CLONEABLE(Option_Float)
539
540
private:
541
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
542
double myValue;
543
};
544
545
// -------------------------------------------------------------------------
546
// Option_Bool
547
// -------------------------------------------------------------------------
548
549
class Option_Bool : public Option {
550
551
public:
552
/** @brief Constructor for an option with a default value
553
*
554
* Calls Option(true)
555
*
556
* @param[in] value This option's default value
557
*/
558
Option_Bool(bool value);
559
560
/** @brief Returns the stored boolean value
561
* @see bool Option::getBool()
562
* @return Returns the stored boolean
563
*/
564
bool getBool() const;
565
566
/// @brief sets the given value (converts it to bool)
567
bool set(const std::string& v, const std::string& orig, const bool append);
568
569
/** @brief Returns true, the information whether the option is a bool option
570
*
571
* Returns true.
572
*
573
* @see bool Option::isBool()
574
* @return true
575
*/
576
bool isBool() const;
577
578
CLONEABLE(Option_Bool)
579
580
protected:
581
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
582
bool myValue;
583
};
584
585
// -------------------------------------------------------------------------
586
// Option_BoolExtended
587
// -------------------------------------------------------------------------
588
589
class Option_BoolExtended : public Option_Bool {
590
591
public:
592
/** @brief Constructor for an option that can be used without an argument
593
* like Option_BoolExtended but which also handles value strings
594
*
595
* Calls Option(true)
596
*
597
* @param[in] value This option's default value
598
*/
599
Option_BoolExtended(bool value);
600
601
/// @brief sets the given value (converts it to bool)
602
bool set(const std::string& v, const std::string& orig, const bool append);
603
604
CLONEABLE(Option_BoolExtended)
605
};
606
607
// -------------------------------------------------------------------------
608
// Option_IntVector
609
// -------------------------------------------------------------------------
610
611
class Option_IntVector : public Option {
612
613
public:
614
/// @brief Constructor for an option with no default value
615
Option_IntVector();
616
617
/** @brief Constructor for an option with a default value
618
*
619
* @param[in] value This option's default value
620
*/
621
Option_IntVector(const IntVector& value);
622
623
/** @brief Returns the stored integer vector
624
* @see const IntVector &Option::getIntVector()
625
* @return Returns the stored integer vector
626
*/
627
const IntVector& getIntVector() const;
628
629
/** @brief Stores the given value after parsing it into a vector of integers
630
*
631
* The value is converted into a vector of integers and stored in "myValue".
632
* Then, "markSet" is called in order to know that a value has been set.
633
*
634
* The method returns whether the value could be set (the return value from
635
* "markSet").
636
*
637
* If the string could not be converted into a vector of integers, an InvalidArgument
638
* is thrown.
639
*
640
* @see bool Option::set(std::string v)
641
* @return Whether the new value could be set
642
* @exception InvalidArgument If the value could not be converted into a vector of integers
643
*/
644
bool set(const std::string& v, const std::string& orig, const bool append);
645
646
CLONEABLE(Option_IntVector)
647
648
private:
649
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
650
IntVector myValue;
651
};
652
653
// -------------------------------------------------------------------------
654
// Option_StringVector
655
// -------------------------------------------------------------------------
656
657
class Option_StringVector : public Option {
658
659
public:
660
/// @brief Constructor for an option with no default value
661
Option_StringVector();
662
663
/** @brief Constructor for an option with a default value
664
*
665
* @param[in] value This option's default value
666
*/
667
Option_StringVector(const StringVector& value);
668
669
/** @brief Returns the stored string vector
670
* @see const StringVector &Option::getStringVector()
671
* @return Returns the stored string vector
672
*/
673
const StringVector& getStringVector() const;
674
675
/** @brief Stores the given value after parsing it into a vector of strings
676
*
677
* The value is converted into a vector of strings and stored in "myValue".
678
* Then, "markSet" is called in order to know that a value has been set.
679
*
680
* The method returns whether the value could be set (the return value from
681
* "markSet").
682
*
683
* If the string could not be converted into a vector of strings, an
684
* InvalidArgument is thrown.
685
*
686
* @see bool Option::set(std::string v)
687
* @return Whether the new value could be set
688
* @exception InvalidArgument If the value could not be converted into a
689
* vector of strings
690
*/
691
bool set(const std::string& v, const std::string& orig, const bool append);
692
693
CLONEABLE(Option_StringVector)
694
695
private:
696
/// @brief the value, valid only when the base-classes "myAmSet"-member is true
697
StringVector myValue;
698
};
699
700
// -------------------------------------------------------------------------
701
// Option_FileName
702
// -------------------------------------------------------------------------
703
704
class Option_FileName : public Option_StringVector {
705
706
public:
707
/// @brief Constructor for an option with no default value
708
Option_FileName();
709
710
/** @brief Constructor for an option with a default value
711
*
712
* @param[in] value This option's default value
713
*/
714
Option_FileName(const StringVector& value);
715
716
/** @brief Returns true, the information whether this option is a file name
717
*
718
* Returns true.
719
*
720
* @return true
721
*/
722
bool isFileName() const;
723
724
/** @brief Legacy method that returns the stored filenames as a comma-separated string.
725
*
726
* @see std::string Option::getString()
727
* @see std::string StringVector::getValueString()
728
* @return Returns comma-separated string of the stored filenames
729
* @deprecated Legacy method used when Option_FileName was still derived from Option_String;
730
* not in line with code style of the Options sub-system.
731
*/
732
std::string getString() const;
733
734
CLONEABLE(Option_FileName)
735
};
736
737
// -------------------------------------------------------------------------
738
// Option_Network
739
// -------------------------------------------------------------------------
740
741
class Option_Network : public Option_String {
742
743
public:
744
/** @brief Constructor for an option with a default value
745
*
746
* @param[in] value This option's default value
747
*/
748
Option_Network(const std::string& value);
749
750
/** @brief Returns true, the information whether this option is a file name
751
*
752
* Returns true.
753
*
754
* @return true
755
*/
756
bool isNetwork() const;
757
758
CLONEABLE(Option_Network)
759
};
760
761
// -------------------------------------------------------------------------
762
// Option_Additional
763
// -------------------------------------------------------------------------
764
765
class Option_Additional : public Option_String {
766
767
public:
768
/** @brief Constructor for an option with a default value
769
*
770
* @param[in] value This option's default value
771
*/
772
Option_Additional(const std::string& value);
773
774
/** @brief Returns true, the information whether this option is a file name
775
*
776
* Returns true.
777
*
778
* @return true
779
*/
780
bool isAdditional() const;
781
782
CLONEABLE(Option_Additional)
783
};
784
785
// -------------------------------------------------------------------------
786
// Option_Route
787
// -------------------------------------------------------------------------
788
789
class Option_Route : public Option_String {
790
791
public:
792
/** @brief Constructor for an option with a default value
793
*
794
* @param[in] value This option's default value
795
*/
796
Option_Route(const std::string& value);
797
798
/** @brief Returns true, the information whether this option is a file name
799
*
800
* Returns true.
801
*
802
* @return true
803
*/
804
bool isRoute() const;
805
806
CLONEABLE(Option_Route)
807
};
808
809
// -------------------------------------------------------------------------
810
// Option_Data
811
// -------------------------------------------------------------------------
812
813
class Option_Data : public Option_String {
814
815
public:
816
/** @brief Constructor for an option with a default value
817
*
818
* @param[in] value This option's default value
819
*/
820
Option_Data(const std::string& value);
821
822
/** @brief Returns true, the information whether this option is a data file
823
*
824
* Returns true.
825
*
826
* @return true
827
*/
828
bool isData() const;
829
830
CLONEABLE(Option_Data)
831
};
832
833
// -------------------------------------------------------------------------
834
// Option_SumoConfig
835
// -------------------------------------------------------------------------
836
837
class Option_SumoConfig : public Option_String {
838
839
public:
840
/** @brief Constructor for an option with a default value
841
*
842
* @param[in] value This option's default value
843
*/
844
Option_SumoConfig(const std::string& value);
845
846
/** @brief Returns true, the information whether this option is a sumo config name
847
*
848
* Returns true.
849
*
850
* @return true
851
*/
852
bool isSumoConfig() const;
853
854
CLONEABLE(Option_SumoConfig)
855
};
856
857
// -------------------------------------------------------------------------
858
// Option_Edge
859
// -------------------------------------------------------------------------
860
861
class Option_Edge : public Option_String {
862
863
public:
864
/** @brief Constructor for an option with a default value
865
*
866
* @param[in] value This option's default value
867
*/
868
Option_Edge(const std::string& value);
869
870
/** @brief Returns true, the information whether this option is a list of edges
871
*
872
* Returns true.
873
*
874
* @return true
875
*/
876
bool isEdge() const;
877
878
CLONEABLE(Option_Edge)
879
};
880
881
// -------------------------------------------------------------------------
882
// Option_EdgeVector
883
// -------------------------------------------------------------------------
884
885
class Option_EdgeVector : public Option_String {
886
887
public:
888
/** @brief Constructor for an option with a default value
889
*
890
* @param[in] value This option's default value
891
*/
892
Option_EdgeVector(const std::string& value);
893
894
/** @brief Returns true, the information whether this option is a list of edges
895
*
896
* Returns true.
897
*
898
* @return true
899
*/
900
bool isEdgeVector() const;
901
902
CLONEABLE(Option_EdgeVector)
903
};
904
905