/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file MSInternalJunction.h14/// @author Christian Roessel15/// @author Daniel Krajzewicz16/// @author Michael Behrisch17/// @date Wed, 12 Dez 200118///19// junction.20/****************************************************************************/21#pragma once22#include <config.h>2324#include <utils/common/StdDefs.h>25#include "MSLogicJunction.h"26#include <bitset>27#include <vector>28#include <string>293031// ===========================================================================32// class declarations33// ===========================================================================34class MSLane;35class MSJunctionLogic;36class MSLink;373839// ===========================================================================40// class definitions41// ===========================================================================42/**43* @class MSInternalJunction44* A class which realises junctions that do regard any kind of a right-of-way.45* The rules for the right-of-way themselves are stored within the associated46* "MSJunctionLogic" - structure.47*/48class MSInternalJunction : public MSLogicJunction {49public:50/** @brief Constructor51* @param[in] id The id of the junction52* @param[in] position The position of the junction53* @param[in] shape The shape of the junction54* @param[in] incoming The incoming lanes55* @param[in] internal The internal lanes56*/57MSInternalJunction(const std::string& id, SumoXMLNodeType type, const Position& position,58const PositionVector& shape,59std::vector<MSLane*> incoming, std::vector<MSLane*> internal);6061/// Destructor.62virtual ~MSInternalJunction();636465void postloadInit();6667const std::vector<MSLink*>& getFoeLinks(const MSLink* const srcLink) const {68UNUSED_PARAMETER(srcLink);69return myInternalLinkFoes;70}7172const std::vector<MSLane*>& getFoeInternalLanes(const MSLink* const srcLink) const {73UNUSED_PARAMETER(srcLink);74return myInternalLaneFoes;75}7677private:7879bool indirectBicycleTurn(const MSLane* specialLane, const MSLink* thisLink, const MSLane* foeFirstPart, const MSLink* foeLink) const;8081std::vector<MSLink*> myInternalLinkFoes;82std::vector<MSLane*> myInternalLaneFoes;8384/// @brief Invalidated copy constructor.85MSInternalJunction(const MSInternalJunction&);8687/// @brief Invalidated assignment operator.88MSInternalJunction& operator=(const MSInternalJunction&);8990};919293