Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/router/FareToken.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2002-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 FareToken.h
15
/// @author Ricardo Euler
16
/// @date Thu, 17 August 2018
17
///
18
// Fare Modul for calculating prices during intermodal routing
19
/****************************************************************************/
20
21
#pragma once
22
#include <config.h>
23
enum class FareToken : int {
24
None = 0,
25
Free = 1, // walking and other things can be free
26
H = 2,
27
L = 3,
28
T1 = 4,
29
T2 = 5,
30
T3 = 6,
31
Z = 7,
32
M = 8,
33
U = 9,
34
KL = 10,
35
KH = 11,
36
K = 12,
37
KHU = 13,
38
KLU = 14,
39
KHZ = 15,
40
KLZ = 16,
41
ZU = 17, //Artificial state for after leaving short trip khu or klu since a pedestrian edge does not allow us
42
//to distinguish between z or u zones
43
START = 18
44
45
};
46
47
namespace FareUtil {
48
49
inline std::string tokenToString(FareToken const& token) {
50
switch (token) {
51
case FareToken::H:
52
return "H";
53
case FareToken::L:
54
return "L";
55
case FareToken::T1:
56
return "T1";
57
case FareToken::T2:
58
return "T2";
59
case FareToken::T3:
60
return "T3";
61
case FareToken::U:
62
return "U";
63
case FareToken::Z:
64
return "Z";
65
case FareToken::M:
66
return "M";
67
case FareToken::K:
68
return "K";
69
case FareToken::KL:
70
return "KL";
71
case FareToken::KH:
72
return "KH";
73
case FareToken::ZU:
74
return "ZU";
75
case FareToken::None:
76
return "None";
77
case FareToken::Free:
78
return "Free";
79
case FareToken::KHU:
80
return "KHU";
81
case FareToken::KLU:
82
return "KLU";
83
case FareToken ::KHZ:
84
return "KHZ";
85
case FareToken ::KLZ:
86
return "KLZ";
87
default:
88
return "";
89
}
90
}
91
92
93
inline std::string tokenToTicket(FareToken const& token) {
94
switch (token) {
95
case FareToken::H:
96
return "Einzelticket Halle";
97
case FareToken::L:
98
return "Einzelticket Leipzig";
99
case FareToken::T1:
100
return "Einzelticket Stadtverkehr 1";
101
case FareToken::T2:
102
return "Einzelticket Stadtverkehr 2";
103
case FareToken::T3:
104
return "Einzelticket Stadtverkehr 3";
105
case FareToken::U:
106
return "Einzelticket";
107
case FareToken::Z:
108
return "Einzelticket";
109
case FareToken::M:
110
return "Einzelticket Verbundpreis";
111
case FareToken::K:
112
return "Kurzstreckenticket";
113
case FareToken::KL:
114
return "Kurzstreckenticket Leipzig";
115
case FareToken::KH:
116
return "Kurzstreckenticket Halle";
117
case FareToken::ZU:
118
return "None";
119
case FareToken::None:
120
return "None";
121
case FareToken::Free:
122
return "Free";
123
case FareToken::KHU:
124
return "Kurzstreckenticket Halle";
125
case FareToken::KLU:
126
return "Kurzstreckenticket Leipzig";
127
case FareToken ::KHZ:
128
return "Kurzstreckenticket Halle";
129
case FareToken ::KLZ:
130
return "Kurzstreckenticket Leipzig";
131
case FareToken ::START:
132
return "forbidden START";
133
}
134
return ""; //surpress compiler warning
135
}
136
137
inline FareToken stringToToken(std::string str) {
138
if (str == "H") {
139
return FareToken::H;
140
}
141
if (str == "L") {
142
return FareToken::L;
143
}
144
if (str == "T1") {
145
return FareToken::T1;
146
}
147
if (str == "T2") {
148
return FareToken::T2;
149
}
150
if (str == "T3") {
151
return FareToken::T3;
152
}
153
if (str == "1") {
154
return FareToken::T1;
155
}
156
if (str == "2") {
157
return FareToken::T2;
158
}
159
if (str == "3") {
160
return FareToken::T3;
161
}
162
if (str == "U") {
163
return FareToken::U;
164
}
165
if (str == "Z") {
166
return FareToken::Z;
167
}
168
if (str == "M") {
169
return FareToken::M;
170
}
171
if (str == "K") {
172
return FareToken::K;
173
}
174
if (str == "KL") {
175
return FareToken::KL;
176
}
177
if (str == "KH") {
178
return FareToken::KH;
179
}
180
if (str == "ZU") {
181
return FareToken::ZU;
182
}
183
if (str == "None") {
184
return FareToken::None;
185
}
186
if (str == "Free") {
187
return FareToken::Free;
188
}
189
if (str == "KHU") {
190
return FareToken::KHU;
191
}
192
if (str == "KLU") {
193
return FareToken::KLU;
194
}
195
if (str == "KHZ") {
196
return FareToken::KHZ;
197
}
198
if (str == "KLZ") {
199
return FareToken::KLZ;
200
}
201
if (str == "NOTFOUND") {
202
return FareToken::None;
203
}
204
assert(false);
205
return FareToken::None;
206
}
207
208
}
209
210