Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
PCCNode.h
Aller à la documentation de ce fichier.
1
24#pragma once
25
26#include <string>
27#include <vector>
28
29#include "PCCEdge.h"
31
33
40enum class PCCNodeType { STRAIGHT, SWITCH };
41
53{
54 int x = 0; // Initialisation en place (C++11) — défaut valide sans constructeur explicite
55 int y = 0;
56};
57
70{
71public:
72
73 // =========================================================================
74 // Construction / Destruction
75 // =========================================================================
76
90 PCCNode(std::string sourceId, ShuntingElement* source, Logger& logger);
91
93 PCCNode(const PCCNode&) = delete;
94 PCCNode& operator=(const PCCNode&) = delete;
95
97 PCCNode(PCCNode&&) = default;
98 PCCNode& operator=(PCCNode&&) = default;
99
107 virtual ~PCCNode() = default;
108
109 // =========================================================================
110 // Interface virtuelle pure
111 // =========================================================================
112
121 [[nodiscard]] virtual PCCNodeType getNodeType() const = 0;
122
123 // =========================================================================
124 // Accesseurs communs
125 // =========================================================================
126
133 [[nodiscard]] const std::string& getSourceId() const { return m_sourceId; }
134
143 [[nodiscard]] ShuntingElement* getSource() const { return m_source; }
144
151 [[nodiscard]] const PCCPosition& getPosition() const { return m_position; }
152
161 [[nodiscard]] const std::vector<PCCEdge*>& getEdges() const { return m_edges; }
162
163 // =========================================================================
164 // Mutations
165 // =========================================================================
166
175 void setPosition(PCCPosition position) { m_position = position; }
176
185 void addEdge(PCCEdge* edge);
186
187 bool isCrossover() const { return m_isCrossover; }
188 void setCrossover(bool v) { m_isCrossover = v; }
189
190protected:
191
193 std::string m_sourceId;
194
200
206
211 std::vector<PCCEdge*> m_edges;
212
215
216private:
217 bool m_isCrossover = false;
218};
Système de journalisation à 5 niveaux de trace, un fichier par moteur.
Connexion orientée entre deux nœuds du graphe PCC.
PCCNodeType
Type d'un nœud PCC — miroir de ElementType.
Definition PCCNode.h:40
Interface abstraite pour tous les éléments de shuntage ferroviaire.
Journaliseur associé à un moteur nommé.
Definition Logger.h:99
Connexion orientée entre deux PCCNode du PCCGraph.
Definition PCCEdge.h:50
Nœud abstrait du graphe PCC.
Definition PCCNode.h:70
PCCNode & operator=(PCCNode &&)=default
PCCNode(PCCNode &&)=default
Déplacement autorisé — requis par unique_ptr et vector.
std::vector< PCCEdge * > m_edges
Definition PCCNode.h:211
PCCNode(const PCCNode &)=delete
Interdit la copie — slicing et aliasing du pointeur source.
PCCNode & operator=(const PCCNode &)=delete
ShuntingElement * m_source
Definition PCCNode.h:199
const std::string & getSourceId() const
Retourne l'identifiant du bloc source.
Definition PCCNode.h:133
bool isCrossover() const
Definition PCCNode.h:187
const PCCPosition & getPosition() const
Retourne la position logique du nœud dans le schéma PCC.
Definition PCCNode.h:151
bool m_isCrossover
Definition PCCNode.h:217
const std::vector< PCCEdge * > & getEdges() const
Retourne la liste des arêtes adjacentes (non-propriétaires).
Definition PCCNode.h:161
virtual PCCNodeType getNodeType() const =0
Retourne le type du nœud.
Logger & m_logger
Definition PCCNode.h:214
void setPosition(PCCPosition position)
Assigne la position logique calculée par PCCLayout.
Definition PCCNode.h:175
virtual ~PCCNode()=default
Destructeur virtuel — obligatoire pour le delete via pointeur de base.
ShuntingElement * getSource() const
Retourne le pointeur non-propriétaire vers le bloc source.
Definition PCCNode.h:143
PCCPosition m_position
Definition PCCNode.h:205
std::string m_sourceId
Definition PCCNode.h:193
void setCrossover(bool v)
Definition PCCNode.h:188
void addEdge(PCCEdge *edge)
Enregistre une arête adjacente (pointeur non-propriétaire).
Definition PCCNode.cpp:22
Interface abstraite pour tous les éléments de shuntage ferroviaire.
Definition ShuntingElement.h:39
Position logique d'un nœud dans le schéma PCC.
Definition PCCNode.h:53
int x
Definition PCCNode.h:54
int y
Definition PCCNode.h:55