Eclipse SUMO - Simulation of Urban MObility
NIFrame.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Sets and checks options for netimport
18 /****************************************************************************/
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <config.h>
25 
26 #include <string>
27 #include <iostream>
28 #include <fstream>
29 #include <utils/options/Option.h>
33 #include <utils/common/ToString.h>
37 #include <netbuild/NBNetBuilder.h>
38 #include <netwrite/NWFrame.h>
40 #include "NIImporter_DlrNavteq.h"
41 #include "NIFrame.h"
42 
43 
44 // ===========================================================================
45 // method definitions
46 // ===========================================================================
47 void
48 NIFrame::fillOptions(bool forNetedit) {
50  // register input formats
51  oc.doRegister("sumo-net-file", 's', new Option_FileName());
52  oc.addSynonyme("sumo-net-file", "sumo-net", true);
53  oc.addDescription("sumo-net-file", "Input", "Read SUMO-net from FILE");
54  oc.addXMLDefault("sumo-net-file", "net");
55 
56  oc.doRegister("node-files", 'n', new Option_FileName());
57  oc.addSynonyme("node-files", "xml-node-files", true);
58  oc.addSynonyme("node-files", "xml-nodes", true);
59  oc.addSynonyme("node-files", "nodes");
60  oc.addDescription("node-files", "Input", "Read XML-node defs from FILE");
61 
62  oc.doRegister("edge-files", 'e', new Option_FileName());
63  oc.addSynonyme("edge-files", "xml-edge-files", true);
64  oc.addSynonyme("edge-files", "xml-edges", true);
65  oc.addSynonyme("edge-files", "edges");
66  oc.addDescription("edge-files", "Input", "Read XML-edge defs from FILE");
67 
68  oc.doRegister("connection-files", 'x', new Option_FileName());
69  oc.addSynonyme("connection-files", "xml-connection-files", true);
70  oc.addSynonyme("connection-files", "xml-connections", true);
71  oc.addSynonyme("connection-files", "connections");
72  oc.addDescription("connection-files", "Input", "Read XML-connection defs from FILE");
73 
74  oc.doRegister("tllogic-files", 'i', new Option_FileName());
75  oc.addDescription("tllogic-files", "Input", "Read XML-traffic light defs from FILE");
76 
77  oc.doRegister("type-files", 't', new Option_FileName());
78  oc.addSynonyme("type-files", "xml-type-files", true);
79  oc.addSynonyme("type-files", "xml-types", true);
80  oc.addSynonyme("type-files", "types");
81  oc.addDescription("type-files", "Input", "Read XML-type defs from FILE");
82 
83  if (!forNetedit) {
84  // would cause confusion because netedit loads stops and shapes using option --additional-files
85  oc.doRegister("ptstop-files", new Option_FileName());
86  oc.addDescription("ptstop-files", "Input", "Reads public transport stops from FILE");
87  oc.doRegister("ptline-files", new Option_FileName());
88  oc.addDescription("ptline-files", "Input", "Reads public transport lines from FILE");
89  oc.doRegister("polygon-files", new Option_FileName());
90  oc.addDescription("polygon-files", "Input", "Reads polygons from FILE for embedding in network where applicable");
91  }
92 
93  oc.doRegister("shapefile-prefix", new Option_FileName());
94  oc.addSynonyme("shapefile-prefix", "shapefile");
95  oc.addSynonyme("shapefile-prefix", "arcview", true);
96  oc.addSynonyme("shapefile-prefix", "tiger", true);
97  oc.addDescription("shapefile-prefix", "Input", "Read shapefiles (ArcView, Tiger, ...) from files starting with 'FILE'");
98 
99  oc.doRegister("dlr-navteq-prefix", new Option_FileName());
100  oc.addSynonyme("dlr-navteq-prefix", "dlr-navteq");
101  oc.addSynonyme("dlr-navteq-prefix", "elmar2", true);
102  oc.addDescription("dlr-navteq-prefix", "Input", "Read converted Navteq GDF data (unsplitted Elmar-network) from path 'FILE'");
103 
104  oc.doRegister("osm-files", new Option_FileName());
105  oc.addSynonyme("osm-files", "osm");
106  oc.addDescription("osm-files", "Input", "Read OSM-network from path 'FILE(s)'");
107 
108  oc.doRegister("opendrive-files", new Option_FileName());
109  oc.addSynonyme("opendrive-files", "opendrive");
110  oc.addDescription("opendrive-files", "Input", "Read OpenDRIVE-network from FILE");
111 
112  oc.doRegister("visum-file", new Option_FileName());
113  oc.addSynonyme("visum-file", "visum");
114  oc.addDescription("visum-file", "Input", "Read VISUM-net from FILE");
115 
116  oc.doRegister("vissim-file", new Option_FileName());
117  oc.addSynonyme("vissim-file", "vissim");
118  oc.addDescription("vissim-file", "Input", "Read VISSIM-net from FILE");
119 
120  oc.doRegister("robocup-dir", new Option_FileName());
121  oc.addSynonyme("robocup-dir", "robocup-net", true);
122  oc.addSynonyme("robocup-dir", "robocup");
123  oc.addDescription("robocup-dir", "Input", "Read RoboCup-net from DIR");
124 
125  oc.doRegister("matsim-files", new Option_FileName());
126  oc.addSynonyme("matsim-files", "matsim");
127  oc.addDescription("matsim-files", "Input", "Read MATsim-net from FILE");
128 
129  oc.doRegister("itsumo-files", new Option_FileName());
130  oc.addSynonyme("itsumo-files", "itsumo");
131  oc.addDescription("itsumo-files", "Input", "Read ITSUMO-net from FILE");
132 
133  oc.doRegister("heightmap.shapefiles", new Option_FileName());
134  oc.addDescription("heightmap.shapefiles", "Input", "Read heightmap from ArcGIS shapefile");
135 
136  oc.doRegister("heightmap.geotiff", new Option_FileName());
137  oc.addDescription("heightmap.geotiff", "Input", "Read heightmap from GeoTIFF");
138 
139  // register basic processing options
140  oc.doRegister("ignore-errors", new Option_Bool(false));
141  oc.addSynonyme("ignore-errors", "dismiss-loading-errors", true);
142  oc.addDescription("ignore-errors", "Report", "Continue on broken input");
143 
144  oc.doRegister("ignore-errors.connections", new Option_Bool(false));
145  oc.addDescription("ignore-errors.connections", "Report", "Continue on invalid connections");
146 
147  oc.doRegister("show-errors.connections-first-try", new Option_Bool(false));
148  oc.addDescription("show-errors.connections-first-try", "Report", "Show errors in connections at parsing");
149 
150  oc.doRegister("ignore-errors.edge-type", new Option_Bool(false));
151  oc.addDescription("ignore-errors.edge-type", "Report", "Continue on unknown edge types");
152 
153  oc.doRegister("speed-in-kmh", new Option_Bool(false));
154  oc.addDescription("speed-in-kmh", "Processing", "vmax is parsed as given in km/h (some)");
155 
156  oc.doRegister("construction-date", new Option_String());
157  oc.addDescription("construction-date", "Processing", "Use YYYY-MM-DD date to determine the readiness of features under construction");
158 
159  oc.doRegister("flatten", new Option_Bool(false));
160  oc.addDescription("flatten", "Processing", "Remove all z-data");
161 
162  // register xml options
163  oc.doRegister("plain.extend-edge-shape", new Option_Bool(false));
164  oc.addSynonyme("plain.extend-edge-shape", "xml.keep-shape", true);
165  oc.addDescription("plain.extend-edge-shape", "Processing", "If edge shapes do not end at the node positions, extend them");
166 
167  // register osm options
168  oc.doRegister("osm.skip-duplicates-check", new Option_Bool(false));
169  oc.addDescription("osm.skip-duplicates-check", "Formats", "Skips the check for duplicate nodes and edges");
170 
171  oc.doRegister("osm.elevation", new Option_Bool(false));
172  oc.addDescription("osm.elevation", "Formats", "Imports elevation data");
173 
174  oc.doRegister("osm.layer-elevation", new Option_Float(0));
175  oc.addDescription("osm.layer-elevation", "Formats", "Reconstruct (relative) elevation based on layer data. Each layer is raised by FLOAT m");
176 
177  oc.doRegister("osm.layer-elevation.max-grade", new Option_Float(10));
178  oc.addDescription("osm.layer-elevation.max-grade", "Formats", "Maximum grade threshold in % at 50km/h when reconstrucing elevation based on layer data. The value is scaled according to road speed.");
179 
180  oc.doRegister("osm.oneway-spread-right", new Option_Bool(false));
181  oc.addDescription("osm.oneway-spread-right", "Formats", "Whether one-way roads should be spread to the side instead of centered");
182 
183  oc.doRegister("osm.stop-output.length", new Option_Float(25));
184  oc.addDescription("osm.stop-output.length", "Formats", "The default length of a public transport stop in FLOAT m");
185  oc.doRegister("osm.stop-output.length.bus", new Option_Float(15));
186  oc.addDescription("osm.stop-output.length.bus", "Formats", "The default length of a bus stop in FLOAT m");
187  oc.doRegister("osm.stop-output.length.tram", new Option_Float(25));
188  oc.addDescription("osm.stop-output.length.tram", "Formats", "The default length of a tram stop in FLOAT m");
189  oc.doRegister("osm.stop-output.length.train", new Option_Float(200));
190  oc.addDescription("osm.stop-output.length.train", "Formats", "The default length of a train stop in FLOAT m");
191 
192  oc.doRegister("osm.all-attributes", new Option_Bool(false));
193  oc.addDescription("osm.all-attributes", "Formats", "Whether additional attributes shall be imported");
194 
195 
196  // register matsim options
197  oc.doRegister("matsim.keep-length", new Option_Bool(false));
198  oc.addDescription("matsim.keep-length", "Formats", "The edge lengths given in the MATSIM-file will be kept");
199 
200  oc.doRegister("matsim.lanes-from-capacity", new Option_Bool(false));
201  oc.addDescription("matsim.lanes-from-capacity", "Formats", "The lane number will be computed from the capacity");
202 
203 
204  // register shapefile options
205  oc.doRegister("shapefile.street-id", new Option_String());
206  oc.addSynonyme("shapefile.street-id", "arcview.street-id", true);
207  oc.addDescription("shapefile.street-id", "Formats", "Read edge ids from column STR");
208 
209  oc.doRegister("shapefile.from-id", new Option_String());
210  oc.addSynonyme("shapefile.from-id", "arcview.from-id", true);
211  oc.addDescription("shapefile.from-id", "Formats", "Read from-node ids from column STR");
212 
213  oc.doRegister("shapefile.to-id", new Option_String());
214  oc.addSynonyme("shapefile.to-id", "arcview.to-id", true);
215  oc.addDescription("shapefile.to-id", "Formats", "Read to-node ids from column STR");
216 
217  oc.doRegister("shapefile.type-id", new Option_String());
218  oc.addSynonyme("shapefile.type-id", "arcview.type-id", true);
219  oc.addDescription("shapefile.type-id", "Formats", "Read type ids from column STR");
220 
221  oc.doRegister("shapefile.laneNumber", new Option_String());
222  oc.addDescription("shapefile.laneNumber", "Formats", "Read lane number from column STR");
223 
224  oc.doRegister("shapefile.speed", new Option_String());
225  oc.addDescription("shapefile.speed", "Formats", "Read speed from column STR");
226 
227  oc.doRegister("shapefile.name", new Option_String());
228  oc.addDescription("shapefile.name", "Formats", "Read (non-unique) name from column STR");
229 
230  oc.doRegister("shapefile.node-join-dist", new Option_Float(0));
231  oc.addDescription("shapefile.node-join-dist", "Formats", "Distance threshold for determining whether distinct shapes are connected (used when from-id and to-id are not available)");
232 
233  oc.doRegister("shapefile.add-params", new Option_StringVector());
234  oc.addDescription("shapefile.add-params", "Formats", "Add the list of field names as edge params");
235 
236  oc.doRegister("shapefile.use-defaults-on-failure", new Option_Bool(false));
237  oc.addSynonyme("shapefile.use-defaults-on-failure", "arcview.use-defaults-on-failure", true);
238  oc.addDescription("shapefile.use-defaults-on-failure", "Formats", "Uses edge type defaults on problems");
239 
240  oc.doRegister("shapefile.all-bidirectional", new Option_Bool(false));
241  oc.addSynonyme("shapefile.all-bidirectional", "shapefile.all-bidi");
242  oc.addSynonyme("shapefile.all-bidirectional", "arcview.all-bidi", true);
243  oc.addDescription("shapefile.all-bidirectional", "Formats", "Insert edges in both directions");
244 
245  oc.doRegister("shapefile.guess-projection", new Option_Bool(false));
246  oc.addSynonyme("shapefile.guess-projection", "arcview.guess-projection", true);
247  oc.addDescription("shapefile.guess-projection", "Formats", "Guess the proper projection");
248 
249 
250  // register vissim options
251  oc.doRegister("vissim.join-distance", new Option_Float(5.0f));
252  oc.addSynonyme("vissim.join-distance", "vissim.offset", true);
253  oc.addDescription("vissim.join-distance", "Formats", "Structure join offset");
254 
255  oc.doRegister("vissim.default-speed", new Option_Float(50.0f));
256  oc.addDescription("vissim.default-speed", "Formats", "Use FLOAT as default speed");
257 
258  oc.doRegister("vissim.speed-norm", new Option_Float(1.0f));
259  oc.addDescription("vissim.speed-norm", "Formats", "Factor for edge velocity");
260 
261  oc.doRegister("vissim.report-unset-speeds", new Option_Bool(false));
262  oc.addDescription("vissim.report-unset-speeds", "Formats", "Writes lanes without an explicit speed set");
263 
264 
265  // register visum options
266  oc.doRegister("visum.language-file", new Option_FileName());
267  oc.addDescription("visum.language-file", "Formats", "Load language mappings from FILE");
268 
269  oc.doRegister("visum.use-type-priority", new Option_Bool(false));
270  oc.addDescription("visum.use-type-priority", "Formats", "Uses priorities from types");
271 
272  oc.doRegister("visum.use-type-laneno", new Option_Bool(false));
273  oc.addDescription("visum.use-type-laneno", "Formats", "Uses lane numbers from types");
274 
275  oc.doRegister("visum.use-type-speed", new Option_Bool(false));
276  oc.addDescription("visum.use-type-speed", "Formats", "Uses speeds from types");
277 
278  oc.doRegister("visum.connector-speeds", new Option_Float(100.));
279  oc.addDescription("visum.connector-speeds", "Formats", "Sets connector speed");
280 
281  oc.doRegister("visum.connectors-lane-number", new Option_Integer(3));
282  oc.addSynonyme("visum.connectors-lane-number", "visum.connector-laneno", true);
283  oc.addDescription("visum.connectors-lane-number", "Formats", "Sets connector lane number");
284 
285  oc.doRegister("visum.no-connectors", new Option_Bool(true));
286  oc.addDescription("visum.no-connectors", "Formats", "Excludes connectors");
287 
288  oc.doRegister("visum.recompute-lane-number", new Option_Bool(false));
289  oc.addSynonyme("visum.recompute-lane-number", "visum.recompute-laneno", true);
290  oc.addDescription("visum.recompute-lane-number", "Formats", "Computes the number of lanes from the edges' capacities");
291 
292  oc.doRegister("visum.verbose-warnings", new Option_Bool(false));
293  oc.addDescription("visum.verbose-warnings", "Formats", "Prints all warnings, some of which are due to VISUM misbehaviour");
294 
295  oc.doRegister("visum.lanes-from-capacity.norm", new Option_Float((double) 1800));
296  oc.addSynonyme("visum.lanes-from-capacity.norm", "capacity-norm", true);
297  oc.addSynonyme("visum.lanes-from-capacity.norm", "lanes-from-capacity.norm");
298  oc.addDescription("visum.lanes-from-capacity.norm", "Formats", "The factor for flow to no. lanes conversion");
299 
300 
301  // register opendrive options
302  oc.doRegister("opendrive.import-all-lanes", new Option_Bool(false));
303  oc.addDescription("opendrive.import-all-lanes", "Formats", "Imports all lane types");
304  oc.doRegister("opendrive.ignore-widths", new Option_Bool(false));
305  oc.addDescription("opendrive.ignore-widths", "Formats", "Whether lane widths shall be ignored.");
306  oc.doRegister("opendrive.curve-resolution", new Option_Float(2.0));
307  oc.addDescription("opendrive.curve-resolution", "Formats", "The geometry resolution in m when importing curved geometries as line segments.");
308  oc.doRegister("opendrive.advance-stopline", new Option_Float(0.0));
309  oc.addDescription("opendrive.advance-stopline", "Formats", "Allow stop lines to be built beyond the start of the junction if the geometries allow so");
310  oc.doRegister("opendrive.min-width", new Option_Float(1.8));
311  oc.addDescription("opendrive.min-width", "Formats", "The minimum lane width for determining start or end of variable-width lanes");
312  oc.doRegister("opendrive.internal-shapes", new Option_Bool(false));
313  oc.addDescription("opendrive.internal-shapes", "Formats", "Import internal lane shapes");
314 
315  // register some additional options
316  oc.doRegister("tls.discard-loaded", new Option_Bool(false));
317  oc.addDescription("tls.discard-loaded", "TLS Building", "Does not instatiate traffic lights loaded from other formats than plain-XML");
318 
319  oc.doRegister("tls.discard-simple", new Option_Bool(false));
320  oc.addDescription("tls.discard-simple", "TLS Building", "Does not instatiate traffic lights at geometry-like nodes loaded from other formats than plain-XML");
321 
322  // register railway options
323  oc.doRegister("railway.signals.discard", new Option_Bool(false));
324  oc.addDescription("railway.signals.discard", "Railway", "Discard all railway signal information loaded from other formats than plain-xml");
325 }
326 
327 
328 bool
331  bool ok = oc.checkDependingSuboptions("shapefile", "shapefile.");
332  ok &= oc.checkDependingSuboptions("visum-file", "visum.");
333  ok &= oc.checkDependingSuboptions("vissim-file", "vissim.");
334 #ifdef PROJ_API_FILE
335  int numProjections = oc.getBool("simple-projection") + oc.getBool("proj.utm") + oc.getBool("proj.dhdn") + (oc.getString("proj").length() > 1);
336  if ((oc.isSet("osm-files") || oc.isSet("dlr-navteq-prefix") || oc.isSet("shapefile-prefix")) && numProjections == 0) {
337  if (oc.isDefault("proj")) {
338  oc.set("proj.utm", "true");
339  }
340  }
341  if (oc.isSet("dlr-navteq-prefix") && oc.isDefault("proj.scale")) {
342  oc.set("proj.scale", NIImporter_DlrNavteq::GEO_SCALE);
343  }
344 #else
345  if ((oc.isSet("osm-files") || oc.isSet("dlr-navteq-prefix") || oc.isSet("shapefile-prefix")) && !oc.getBool("simple-projection")) {
346  WRITE_ERROR("Cannot import network data without PROJ-Library. Please install packages proj before building sumo");
347  ok = false;
348  }
349 #endif
350  if (oc.isSet("sumo-net-file")) {
351  if (oc.isWriteable("no-turnarounds")) {
352  // changed default since turnarounds are loaded from the net file.
353  oc.set("no-turnarounds", "true");
354  }
355  if (oc.isWriteable("offset.disable-normalization")) {
356  // changed default since we wish to preserve the network as far as possible
357  oc.set("offset.disable-normalization", "true");
358  }
359  if (oc.isWriteable("geometry.max-grade.fix")) {
360  // changed default since we wish to preserve the network as far as possible
361  oc.set("geometry.max-grade.fix", "false");
362  }
363  if (oc.isWriteable("geometry.min-radius.fix.railways")) {
364  // changed default since we wish to preserve the network as far as possible
365  oc.set("geometry.min-radius.fix.railways", "false");
366  }
367  }
368  if (!oc.isSet("type-files")) {
369  const char* sumoPath = std::getenv("SUMO_HOME");
370  if (sumoPath == nullptr) {
371  WRITE_WARNING("Environment variable SUMO_HOME is not set, using built in type maps.");
372  } else {
373  const std::string path = sumoPath + std::string("/data/typemap/");
374  if (oc.isSet("osm-files")) {
375  oc.setDefault("type-files", path + "osmNetconvert.typ.xml");
376  }
377  if (oc.isSet("opendrive-files")) {
378  oc.setDefault("type-files", path + "opendriveNetconvert.typ.xml");
379  }
380  }
381  }
382  if (oc.isSet("opendrive-files")) {
383  if (oc.isDefault("tls.left-green.time")) {
384  // legacy behavior. see #2114
385  oc.set("tls.left-green.time", "0");
386  }
387  if (oc.isDefault("rectangular-lane-cut")) {
388  // a better interpretation of imported geometries
389  oc.set("rectangular-lane-cut", "true");
390  }
391  if (oc.isDefault("geometry.max-grade.fix")) {
392  // a better interpretation of imported geometries
393  oc.set("geometry.max-grade.fix", "false");
394  }
395  }
396  return ok;
397 }
398 
399 
400 
401 /****************************************************************************/
402 
OptionsCont::isSet
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
Definition: OptionsCont.cpp:135
ToString.h
NWFrame.h
OptionsCont::checkDependingSuboptions
bool checkDependingSuboptions(const std::string &name, const std::string &prefix) const
Checks whether an option is set, which has options with a prefix depending on it.
Definition: OptionsCont.cpp:385
WRITE_WARNING
#define WRITE_WARNING(msg)
Definition: MsgHandler.h:275
Option_Bool
Definition: Option.h:538
NIImporter_DlrNavteq.h
OptionsCont.h
OptionsCont::set
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
Definition: OptionsCont.cpp:241
MsgHandler.h
OptionsCont::getString
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
Definition: OptionsCont.cpp:201
FileHelpers.h
OptionsCont::getBool
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
Definition: OptionsCont.cpp:222
OptionsCont::getOptions
static OptionsCont & getOptions()
Retrieves the options.
Definition: OptionsCont.cpp:57
NIFrame::checkOptions
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
Definition: NIFrame.cpp:329
OptionsCont::addDescription
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
Definition: OptionsCont.cpp:469
SystemFrame.h
OptionsCont::addSynonyme
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
Definition: OptionsCont.cpp:95
NIFrame::fillOptions
static void fillOptions(bool forNetedit=false)
Inserts options used by the network importer and network building modules.
Definition: NIFrame.cpp:48
NBNetBuilder.h
OptionsCont::doRegister
void doRegister(const std::string &name, Option *v)
Adds an option under the given name.
Definition: OptionsCont.cpp:74
Option_String
Definition: Option.h:399
UtilExceptions.h
OptionsCont
A storage for options typed value containers)
Definition: OptionsCont.h:89
NIImporter_DlrNavteq::GEO_SCALE
static const std::string GEO_SCALE
scaling factor for geo coordinates (DLRNavteq format uses this to increase floating point precisions)
Definition: NIImporter_DlrNavteq.h:70
OptionsCont::addXMLDefault
void addXMLDefault(const std::string &name, const std::string &xmlRoot="")
Adds an XML root element to handle by default. The special root "" denotes the default handler.
Definition: OptionsCont.cpp:123
OptionsCont::isDefault
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
Definition: OptionsCont.cpp:163
Option_StringVector
Definition: Option.h:720
Option.h
Option_Float
Definition: Option.h:470
config.h
Option_FileName
Definition: Option.h:783
RandHelper.h
NIFrame.h
OptionsCont::isWriteable
bool isWriteable(const std::string &name)
Returns the information whether the named option may be set.
Definition: OptionsCont.cpp:449
Option_Integer
An integer-option.
Definition: Option.h:331
WRITE_ERROR
#define WRITE_ERROR(msg)
Definition: MsgHandler.h:283
OptionsIO.h
OptionsCont::setDefault
bool setDefault(const std::string &name, const std::string &value)
Sets the given value for the named option as new default value.
Definition: OptionsCont.cpp:260