Eclipse SUMO - Simulation of Urban MObility
StdDefs.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3// Copyright (C) 2005-2022 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/****************************************************************************/
21//
22/****************************************************************************/
23#pragma once
24#include <config.h>
25#include <string>
26#include <cmath>
27#include <limits>
28
29/* avoiding compiler warning unreferenced parameter */
30#define UNUSED_PARAMETER(x) ((void)(x))
31
32#ifdef _MSC_VER
33#define FALLTHROUGH /* do nothing */
34#elif __GNUC__ < 7
35#define FALLTHROUGH /* do nothing */
36#else
37#define FALLTHROUGH __attribute__((fallthrough))
38#endif
39
41#define SUMO_MAX_CONNECTIONS 256
42
43class RGBColor;
44
45/* -------------------------------------------------------------------------
46 * some constant defaults used by SUMO
47 * ----------------------------------------------------------------------- */
48const double SUMO_const_laneWidth = 3.2;
51const double SUMO_const_laneMarkWidth = 0.1;
56
58const double SUMO_const_haltingSpeed = (double) 0.1;
59
60const double INVALID_DOUBLE = std::numeric_limits<double>::max();
61
63const double NETWORK_VERSION = 1.9;
64
65
66/* -------------------------------------------------------------------------
67 * templates for mathematical functions missing in some c++-implementations
68 * ----------------------------------------------------------------------- */
69template<typename T>
70inline T
71MIN2(T a, T b) {
72 return a < b ? a : b;
73}
74
75template<typename T>
76inline T
77MAX2(T a, T b) {
78 return a > b ? a : b;
79}
80
81
82template<typename T>
83inline T
84MIN3(T a, T b, T c) {
85 return MIN2(c, a < b ? a : b);
86}
87
88
89template<typename T>
90inline T
91MAX3(T a, T b, T c) {
92 return MAX2(c, a > b ? a : b);
93}
94
95
96template<typename T>
97inline T
98MIN4(T a, T b, T c, T d) {
99 return MIN2(MIN2(a, b), MIN2(c, d));
100}
101
102
103template<typename T>
104inline T
105MAX4(T a, T b, T c, T d) {
106 return MAX2(MAX2(a, b), MAX2(c, d));
107}
108
109
110template<typename T>
111inline T
112ISNAN(T a) {
113 volatile T d = a;
114 return d != d;
115}
116
117
119extern int gPrecision;
120extern int gPrecisionGeo; // for lon,lat
121extern int gPrecisionRandom; // for randomized values (i.e. speedFactor)
122extern bool gHumanReadableTime;
123extern bool gSimulation; // whether the current application is sumo or sumo-gui (as opposed to a router)
124extern double gWeightsRandomFactor; // randomization for edge weights
125extern double gWeightsWalkOppositeFactor; // factor for walking against flow of traffic
126
127
129extern bool gDebugFlag1;
130extern bool gDebugFlag2;
131extern bool gDebugFlag3;
132extern bool gDebugFlag4;
133extern bool gDebugFlag5;
134extern bool gDebugFlag6;
135
136// synchronized output to stdout with << (i.e. DEBUGOUT(SIMTIME << " var=" << var << "\n")
137#define DEBUGOUT(msg) {std::ostringstream oss; oss << msg; std::cout << oss.str();}
138
140double truncate(double x, int fractionBits);
141
143double roundBits(double x, int fractionBits);
144
146double roundDecimal(double x, int precision);
147
153int getScalingQuota(double frac, int loaded);
T MIN4(T a, T b, T c, T d)
Definition: StdDefs.h:98
const double INVALID_DOUBLE
Definition: StdDefs.h:60
int getScalingQuota(double frac, int loaded)
Returns the number of instances of the current object that shall be emitted given the number of loade...
Definition: StdDefs.cpp:57
const double SUMO_const_laneWidth
Definition: StdDefs.h:48
const double SUMO_const_quarterLaneWidth
Definition: StdDefs.h:50
double truncate(double x, int fractionBits)
discrds mantissa bits beyond the given number
Definition: StdDefs.cpp:40
const double SUMO_const_waitingPersonDepth
Definition: StdDefs.h:53
int gPrecision
the precision for floating point outputs
Definition: StdDefs.cpp:25
T MIN3(T a, T b, T c)
Definition: StdDefs.h:84
T MIN2(T a, T b)
Definition: StdDefs.h:71
bool gDebugFlag3
Definition: StdDefs.cpp:35
T ISNAN(T a)
Definition: StdDefs.h:112
double gWeightsRandomFactor
Definition: StdDefs.cpp:30
double roundBits(double x, int fractionBits)
round to the given number of mantissa bits beyond the given number
Definition: StdDefs.cpp:44
double gWeightsWalkOppositeFactor
Definition: StdDefs.cpp:31
int gPrecisionRandom
Definition: StdDefs.cpp:27
bool gDebugFlag5
Definition: StdDefs.cpp:37
const double SUMO_const_laneMarkWidth
Definition: StdDefs.h:51
const double SUMO_const_haltingSpeed
the speed threshold at which vehicles are considered as halting
Definition: StdDefs.h:58
const double NETWORK_VERSION
version for written networks and default version for loading
Definition: StdDefs.h:63
T MAX2(T a, T b)
Definition: StdDefs.h:77
const double SUMO_const_halfLaneWidth
Definition: StdDefs.h:49
bool gSimulation
Definition: StdDefs.cpp:29
T MAX4(T a, T b, T c, T d)
Definition: StdDefs.h:105
bool gDebugFlag2
Definition: StdDefs.cpp:34
bool gHumanReadableTime
Definition: StdDefs.cpp:28
T MAX3(T a, T b, T c)
Definition: StdDefs.h:91
const double SUMO_const_waitingContainerWidth
Definition: StdDefs.h:54
bool gDebugFlag6
Definition: StdDefs.cpp:38
double roundDecimal(double x, int precision)
round to the given number of decimal digits
Definition: StdDefs.cpp:50
const double SUMO_const_waitingPersonWidth
Definition: StdDefs.h:52
bool gDebugFlag4
Definition: StdDefs.cpp:36
bool gDebugFlag1
global utility flags for debugging
Definition: StdDefs.cpp:33
const double SUMO_const_waitingContainerDepth
Definition: StdDefs.h:55
int gPrecisionGeo
Definition: StdDefs.cpp:26