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