LCOV - code coverage report
Current view: top level - src/utils/common - SystemFrame.cpp (source / functions) Hit Total Coverage
Test: lcov.info Lines: 86 86 100.0 %
Date: 2024-05-02 15:31:40 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /****************************************************************************/
       2             : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3             : // Copyright (C) 2001-2024 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    SystemFrame.cpp
      15             : /// @author  Daniel Krajzewicz
      16             : /// @author  Jakob Erdmann
      17             : /// @author  Michael Behrisch
      18             : /// @date    Mon, 23.06.2003
      19             : ///
      20             : // A set of actions common to all applications
      21             : /****************************************************************************/
      22             : #include <config.h>
      23             : 
      24             : #include <string>
      25             : #include <utils/xml/XMLSubSys.h>
      26             : #include <utils/common/StdDefs.h>
      27             : #include <utils/common/MsgHandler.h>
      28             : #include <utils/options/OptionsCont.h>
      29             : #include <utils/iodevices/OutputDevice.h>
      30             : #include "RandHelper.h"
      31             : #include "SystemFrame.h"
      32             : 
      33             : 
      34             : // ===========================================================================
      35             : // method definitions
      36             : // ===========================================================================
      37             : void
      38       48454 : SystemFrame::addConfigurationOptions(OptionsCont& oc) {
      39       48454 :     oc.addOptionSubTopic("Configuration");
      40             : 
      41       96908 :     oc.doRegister("configuration-file", 'c', new Option_FileName());
      42       96908 :     oc.addSynonyme("configuration-file", "configuration");
      43       96908 :     oc.addDescription("configuration-file", "Configuration", TL("Loads the named config on startup"));
      44       96908 :     oc.addXMLDefault("configuration-file");
      45             : 
      46       96908 :     oc.doRegister("save-configuration", 'C', new Option_FileName());
      47       96908 :     oc.addSynonyme("save-config", "save-configuration");
      48       96908 :     oc.addDescription("save-configuration", "Configuration", TL("Saves current configuration into FILE"));
      49             : 
      50       48454 :     oc.doRegister("save-configuration.relative", new Option_Bool(false));
      51       96908 :     oc.addSynonyme("save-config.relative", "save-configuration.relative");
      52       96908 :     oc.addDescription("save-configuration.relative", "Configuration", TL("Enforce relative paths when saving the configuration"));
      53             : 
      54       96908 :     oc.doRegister("save-template", new Option_FileName());
      55       96908 :     oc.addDescription("save-template", "Configuration", TL("Saves a configuration template (empty) into FILE"));
      56             : 
      57       96908 :     oc.doRegister("save-schema", new Option_FileName());
      58       96908 :     oc.addDescription("save-schema", "Configuration", TL("Saves the configuration schema into FILE"));
      59             : 
      60       48454 :     oc.doRegister("save-commented", new Option_Bool(false));
      61       96908 :     oc.addSynonyme("save-commented", "save-template.commented");
      62       96908 :     oc.addDescription("save-commented", "Configuration", TL("Adds comments to saved template, configuration, or schema"));
      63       48454 : }
      64             : 
      65             : 
      66             : void
      67       48454 : SystemFrame::addReportOptions(OptionsCont& oc) {
      68       48454 :     oc.addOptionSubTopic("Report");
      69             : 
      70       48454 :     oc.doRegister("verbose", 'v', new Option_Bool(false));
      71       96908 :     oc.addDescription("verbose", "Report", TL("Switches to verbose output"));
      72             : 
      73       48454 :     oc.doRegister("print-options", new Option_Bool(false));
      74       96908 :     oc.addDescription("print-options", "Report", TL("Prints option values before processing"));
      75             : 
      76       48454 :     oc.doRegister("help", '?', new Option_BoolExtended(false));
      77       96908 :     oc.addDescription("help", "Report", TL("Prints this screen or selected topics"));
      78             : 
      79       48454 :     oc.doRegister("version", 'V', new Option_Bool(false));
      80       96908 :     oc.addDescription("version", "Report", TL("Prints the current version"));
      81             : 
      82       96908 :     oc.doRegister("xml-validation", 'X', new Option_String("local"));
      83       96908 :     oc.addDescription("xml-validation", "Report", "Set schema validation scheme of XML inputs (\"never\", \"local\", \"auto\" or \"always\")");
      84             : 
      85       96908 :     if (oc.exists("net-file")) {
      86       88566 :         oc.doRegister("xml-validation.net", new Option_String("never"));
      87      132849 :         oc.addDescription("xml-validation.net", "Report", "Set schema validation scheme of SUMO network inputs (\"never\", \"local\", \"auto\" or \"always\")");
      88             :     }
      89             : 
      90       96908 :     if (oc.exists("route-files")) {
      91       82456 :         oc.doRegister("xml-validation.routes", new Option_String("local"));
      92      123684 :         oc.addDescription("xml-validation.routes", "Report", "Set schema validation scheme of SUMO route inputs (\"never\", \"local\", \"auto\" or \"always\")");
      93             :     }
      94             : 
      95       48454 :     oc.doRegister("no-warnings", 'W', new Option_Bool(false));
      96       96908 :     oc.addSynonyme("no-warnings", "suppress-warnings", true);
      97       96908 :     oc.addDescription("no-warnings", "Report", TL("Disables output of warnings"));
      98             : 
      99       48454 :     oc.doRegister("aggregate-warnings", new Option_Integer(-1));
     100       96908 :     oc.addDescription("aggregate-warnings", "Report", TL("Aggregate warnings of the same type whenever more than INT occur"));
     101             : 
     102       96908 :     oc.doRegister("log", 'l', new Option_FileName());
     103       96908 :     oc.addSynonyme("log", "log-file");
     104       96908 :     oc.addDescription("log", "Report", TL("Writes all messages to FILE (implies verbose)"));
     105             : 
     106       96908 :     oc.doRegister("message-log", new Option_FileName());
     107       96908 :     oc.addDescription("message-log", "Report", TL("Writes all non-error messages to FILE (implies verbose)"));
     108             : 
     109       96908 :     oc.doRegister("error-log", new Option_FileName());
     110       96908 :     oc.addDescription("error-log", "Report", TL("Writes all warnings and errors to FILE"));
     111             : 
     112       48454 :     oc.doRegister("log.timestamps", new Option_Bool(false));
     113       96908 :     oc.addDescription("log.timestamps", "Report", TL("Writes timestamps in front of all messages"));
     114             : 
     115       48454 :     oc.doRegister("log.processid", new Option_Bool(false));
     116       96908 :     oc.addDescription("log.processid", "Report", TL("Writes process ID in front of all messages"));
     117             : 
     118       96908 :     oc.doRegister("language", new Option_String(gLanguage));
     119       96908 :     oc.addDescription("language", "Report", TL("Language to use in messages"));
     120             : 
     121       48454 :     oc.doRegister("write-license", new Option_Bool(false));
     122       96908 :     oc.addDescription("write-license", "Output", TL("Include license info into every output file"));
     123             : 
     124       96908 :     oc.doRegister("output-prefix", new Option_String());
     125       96908 :     oc.addDescription("output-prefix", "Output", TL("Prefix which is applied to all output files. The special string 'TIME' is replaced by the current time."));
     126             : 
     127       48454 :     oc.doRegister("precision", new Option_Integer(2));
     128       96908 :     oc.addDescription("precision", "Output", TL("Defines the number of digits after the comma for floating point output"));
     129             : 
     130       48454 :     oc.doRegister("precision.geo", new Option_Integer(6));
     131       96908 :     oc.addDescription("precision.geo", "Output", TL("Defines the number of digits after the comma for lon,lat output"));
     132             : 
     133       48454 :     oc.doRegister("human-readable-time", 'H', new Option_Bool(false));
     134       96908 :     oc.addDescription("human-readable-time", "Output", TL("Write time values as hour:minute:second or day:hour:minute:second rather than seconds"));
     135       48454 : }
     136             : 
     137             : 
     138             : bool
     139       71986 : SystemFrame::checkOptions(OptionsCont& oc) {
     140       71986 :     gPrecision = oc.getInt("precision");
     141       71986 :     gPrecisionGeo = oc.getInt("precision.geo");
     142       71986 :     gHumanReadableTime = oc.getBool("human-readable-time");
     143      143972 :     if (oc.exists("weights.random-factor")) {
     144      135938 :         gWeightsRandomFactor = oc.getFloat("weights.random-factor");
     145             :     }
     146      143972 :     if (oc.exists("persontrip.walk-opposite-factor")) {
     147      135938 :         gWeightsWalkOppositeFactor = oc.getFloat("persontrip.walk-opposite-factor");
     148             :     }
     149      307114 :     if (oc.exists("xml-validation.routes") && oc.isDefault("xml-validation.routes") && !oc.isDefault("xml-validation")) {
     150       85994 :         oc.setDefault("xml-validation.routes", oc.getString("xml-validation"));
     151             :     }
     152       71986 :     std::cout << std::setprecision(gPrecision);
     153       71986 :     return true;
     154             : }
     155             : 
     156             : 
     157             : void
     158       48907 : SystemFrame::close() {
     159             :     // flush aggregated warnings
     160       48907 :     MsgHandler::getWarningInstance()->clear();
     161             :     // close all output devices
     162       48907 :     OutputDevice::closeAll();
     163             :     // close the xml-subsystem
     164       48907 :     XMLSubSys::close();
     165             :     // delete build program options
     166       48907 :     OptionsCont::getOptions().clear();
     167             :     // delete messages
     168       48907 :     MsgHandler::cleanupOnEnd();
     169       48907 : }
     170             : 
     171             : 
     172             : /****************************************************************************/

Generated by: LCOV version 1.14