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