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 /****************************************************************************/
10 /// @file FareToken.h
11 /// @author Ricardo Euler
12 /// @date Thu, 17 August 2018
13 /// @version $Id$
14 ///
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
tokenToString(FareToken const & token)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
tokenToTicket(FareToken const & token)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
stringToToken(std::string str)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
207