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