Path: blob/main/src/foreign/PHEMlight/V5/cpp/Helpers.cpp
169687 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2016-2025 German Aerospace Center (DLR) and others.3// PHEMlight module4// Copyright (C) 2016-2023 Technische Universitaet Graz, https://www.tugraz.at/5// This program and the accompanying materials are made available under the6// terms of the Eclipse Public License 2.0 which is available at7// https://www.eclipse.org/legal/epl-2.0/8// This Source Code may also be made available under the following Secondary9// Licenses when the conditions for such availability set forth in the Eclipse10// Public License 2.0 are satisfied: GNU General Public License, version 211// or later which is available at12// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html13// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later14/****************************************************************************/15/// @file Helpers.cpp16/// @author Martin Dippold17/// @author Michael Behrisch18/// @date July 201619///20//21/****************************************************************************/22#include <config.h>2324#include "Helpers.h"25#include "Constants.h"262728namespace PHEMlightdllV5 {2930const std::string& Helpers::getvClass() const {31return _vClass;32}3334void Helpers::setvClass(const std::string& value) {35_vClass = value;36}3738const std::string& Helpers::geteClass() const {39return _eClass;40}4142void Helpers::seteClass(const std::string& value) {43_eClass = value;44}4546const std::string& Helpers::getpClass() const {47return _pClass;48}4950void Helpers::setpClass(const std::string& value) {51_pClass = value;52}5354const std::string& Helpers::getsClass() const {55return _sClass;56}5758void Helpers::setsClass(const std::string& value) {59_sClass = value;60}6162const std::string& Helpers::getgClass() const {63return _Class;64}6566void Helpers::setgClass(const std::string& value) {67_Class = value;68}6970const std::string& Helpers::getuClass() const {71return _uClass;72}7374void Helpers::setuClass(const std::string& value) {75_uClass = value;76}7778const std::string& Helpers::getErrMsg() const {79return _ErrMsg;80}8182void Helpers::setErrMsg(const std::string& value) {83_ErrMsg = value;84}8586const std::string& Helpers::getCommentPrefix() const {87return _commentPrefix;88}8990void Helpers::setCommentPrefix(const std::string& value) {91_commentPrefix = value;92}9394const std::string& Helpers::getPHEMDataV() const {95return _PHEMDataV;96}9798void Helpers::setPHEMDataV(const std::string& value) {99_PHEMDataV = value;100}101102bool Helpers::getvclass(const std::string& VEH) {103// Set the drive train efficency104Constants::setDRIVE_TRAIN_EFFICIENCY(Constants::DRIVE_TRAIN_EFFICIENCY_All);105106//Get the vehicle class107if (VEH.find(Constants::strPKW) != std::string::npos) {108_vClass = Constants::strPKW;109return true;110}111else if (VEH.find(Constants::strLNF) != std::string::npos) {112_vClass = Constants::strLNF;113return true;114}115else if (VEH.find(Constants::strLKW) != std::string::npos) {116_vClass = Constants::strLKW;117return true;118}119else if (VEH.find(Constants::strLSZ) != std::string::npos) {120_vClass = Constants::strLSZ;121return true;122}123else if (VEH.find(Constants::strRB) != std::string::npos) {124_vClass = Constants::strRB;125return true;126}127else if (VEH.find(Constants::strLB) != std::string::npos) {128_vClass = Constants::strLB;129Constants::setDRIVE_TRAIN_EFFICIENCY(Constants::DRIVE_TRAIN_EFFICIENCY_CB);130return true;131}132else if (VEH.find(Constants::strMR2) != std::string::npos) {133_vClass = Constants::strMR2;134return true;135}136else if (VEH.find(Constants::strMR4) != std::string::npos) {137_vClass = Constants::strMR4;138return true;139}140else if (VEH.find(Constants::strMR) != std::string::npos) {141_vClass = Constants::strMR;142return true;143}144else if (VEH.find(Constants::strKKR) != std::string::npos) {145_vClass = Constants::strKKR;146return true;147}148//Should never happens149_ErrMsg = std::string("Vehicle class not defined! (") + VEH + std::string(")");150return false;151}152153bool Helpers::getpclass(const std::string& VEH) {154if ((int)VEH.find(std::string("_") + Constants::strBEV) > 0) {155_pClass = Constants::strBEV;156return true;157}158else if ((int)VEH.find(std::string("_") + Constants::strDiesel) > 0) {159_pClass = Constants::strDiesel;160return true;161}162else if ((int)VEH.find(std::string("_") + Constants::strGasoline) > 0) {163_pClass = Constants::strGasoline;164return true;165}166else if ((int)VEH.find(std::string("_") + Constants::strCNG) > 0) {167_pClass = Constants::strCNG;168return true;169}170else if ((int)VEH.find(std::string("_") + Constants::strLPG) > 0) {171_pClass = Constants::strLPG;172return true;173}174//Should never happens175_ErrMsg = std::string("Fuel class not defined! (") + VEH + std::string(")");176return false;177}178179bool Helpers::getsclass(const std::string& VEH) {180if (VEH.find(Constants::strLKW) != std::string::npos) {181if ((int)VEH.find(std::string("_") + Constants::strSII) > 0) {182_sClass = Constants::strSII;183return true;184}185else if ((int)VEH.find(std::string("_") + Constants::strSI) > 0) {186_sClass = Constants::strSI;187return true;188}189else {190//Should never happen191_ErrMsg = std::string("Size class not defined! (") + VEH + std::string(")");192return false;193}194}195else if (VEH.find(Constants::strLNF) != std::string::npos) {196if ((int)VEH.find(std::string("_") + Constants::strSIII) > 0) {197_sClass = Constants::strSIII;198return true;199}200else if ((int)VEH.find(std::string("_") + Constants::strSII) > 0) {201_sClass = Constants::strSII;202return true;203}204else if ((int)VEH.find(std::string("_") + Constants::strSI) > 0) {205_sClass = Constants::strSI;206return true;207}208else {209_ErrMsg = std::string("Size class not defined! (") + VEH.substr((int)VEH.rfind("\\"), VEH.length() - (int)VEH.rfind("\\")) + std::string(")");210return false;211}212}213else if (VEH.find(Constants::strLB) != std::string::npos) {214if ((int)VEH.find(std::string("_") + Constants::strMidi) > 0) {215_sClass = Constants::strMidi;216return true;217}218else if ((int)VEH.find(std::string("_") + Constants::strHeavy) > 0) {219_sClass = Constants::strHeavy;220return true;221}222else {223_sClass = "";224return true;225}226}227else {228_sClass = "";229return true;230}231}232233bool Helpers::geteclass(const std::string& VEH) {234if ((int)VEH.find(std::string("_") + Constants::strEU) > 0) {235if ((int)VEH.find("_", (int)VEH.find(std::string("_") + Constants::strEU) + 1) > 0) {236_eClass = Constants::strEU + VEH.substr((int)VEH.find(std::string("_") + Constants::strEU) + 3, (int)VEH.find("_", (int)VEH.find(std::string("_") + Constants::strEU) + 1) - ((int)VEH.find(std::string("_") + Constants::strEU) + 3));237return true;238}239else if ((int)VEH.find(".", (int)VEH.find(std::string("_") + Constants::strEU) + 1) > 0) {240_eClass = Constants::strEU + VEH.substr((int)VEH.find(std::string("_") + Constants::strEU) + 3, (int)VEH.find(".", (int)VEH.find(std::string("_") + Constants::strEU) + 1) - ((int)VEH.find(std::string("_") + Constants::strEU) + 3));241return true;242}243else {244_eClass = Constants::strEU + VEH.substr((int)VEH.find(std::string("_") + Constants::strEU) + 3, VEH.length() - ((int)VEH.find(std::string("_") + Constants::strEU) + 3));245return true;246}247}248else if ((int)VEH.find(std::string("_") + Constants::strBEV) > 0) {249_eClass = "";250return true;251}252//Should never happens253_ErrMsg = std::string("Euro class not defined! (") + VEH + std::string(")");254return false;255}256257bool Helpers::getuclass(const std::string& VEH) {258if ((int)VEH.find(std::string("_") + Constants::strHybrid) > 0) {259_uClass = Constants::strHybrid;260return true;261}262else if ((int)VEH.find(std::string("_") + Constants::strSU) > 0) {263_uClass = Constants::strSU;264return true;265}266else {267_uClass = "";268return true;269}270}271272bool Helpers::setclass(const std::string& VEH) {273//Get the classes274if (!getvclass(VEH)) {275return false;276}277if (!geteclass(VEH)) {278return false;279}280if (!getpclass(VEH)) {281return false;282}283if (!getsclass(VEH)) {284return false;285}286if (!getuclass(VEH)) {287return false;288}289290if ((int)VEH.rfind("\\") <= 0) {291_Class = VEH;292}293else {294std::string vehstr = VEH.substr((int)VEH.rfind("\\") + 1, VEH.length() - (int)VEH.rfind("\\") - 1);295_Class = vehstr.substr(0, (int)vehstr.find("."));296}297return true;298}299}300301302