16 #ifndef SUMO_FAREMODUL_H
17 #define SUMO_FAREMODUL_H
45 if (zoneNumber == 0) {
63 inline int bitcount(
long long int intVal)
const {
65 long long int counter = intVal;
67 while (counter != 0) {
68 counter = counter & (counter - 1);
94 myCounter(std::numeric_limits<int>::max()),
144 std::vector<double>
zonePrices = std::vector<double> {1.9, 3.4, 4.9, 6.2, 7.7, 9.2};
169 void init(
const std::vector<std::string>& edges)
override {
181 double getEffort(
const int numericalID)
const override {
187 effort = std::numeric_limits<double>::max();
193 void update(
const int edge,
const int prev,
const double length)
override {
195 std::string
const& edgeType =
myEdges[edge];
207 if (edgeType.c_str()[0] !=
'!') {
209 }
else if (edgeType ==
"!stop") {
211 }
else if (edgeType ==
"!ped") {
213 }
else if (edgeType ==
"!access") {
276 case FareToken ::KLZ:
277 case FareToken ::KLU:
280 case FareToken ::KHU:
281 case FareToken ::KHZ:
283 case FareToken::Free:
285 case FareToken ::START:
288 case FareToken::None:
292 return std::numeric_limits<double>::max();
297 std::string
output(
const int edge)
const override {
300 std::stringstream msg;
331 if (collectedToken == FareToken::None) {
332 std::cout <<
"Progagating fare state for stop w/o a price!" << std::endl;
340 stateAtE = currentFareState;
347 case FareToken ::Free:
362 if (collectedToken == FareToken::Z) {
367 if (collectedToken == FareToken::H) {
373 if (collectedToken == FareToken::Z) {
379 if (collectedToken == FareToken::Z) {
385 if (collectedToken == FareToken::U) {
388 if (collectedToken == FareToken::Z) {
392 if (collectedToken == FareToken::H) {
395 if (collectedToken == FareToken::Z) {
398 if (collectedToken == FareToken::U) {
405 if (collectedToken == FareToken::U) {
408 if (collectedToken == FareToken::Z) {
415 if (collectedToken == FareToken::Z) {
418 if (collectedToken == FareToken::U) {
425 if (collectedToken == FareToken::U) {
428 if (collectedToken == FareToken::Z) {
433 case FareToken::KHU :
434 case FareToken::KLU :
436 if (collectedToken == FareToken::U) {
445 if (collectedToken == FareToken::Z) {
452 if (collectedToken == FareToken::U) {
460 std::cout <<
"Reached invalid position in fareToken selection!" << std::endl;
471 stateAtE = currentFareState;
483 if (currentFareState.
myFareToken == FareToken::None) {
489 stateAtE = currentFareState;
495 if (currentFareState.
myFareToken == FareToken::None) {
501 stateAtE = currentFareState;
515 stateAtE = currentFareState;
524 case FareToken::Free :
539 case FareToken::KLU :
545 case FareToken::KLZ :
560 #endif //SUMO_FAREMODUL_H