|
Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
|
Nœud abstrait du graphe PCC. Plus de détails...
#include <PCCNode.h>
Fonctions membres publiques | |
| PCCNode (std::string sourceId, ShuntingElement *source, Logger &logger) | |
| Construit un nœud PCC à partir d'un bloc source. | |
| PCCNode (const PCCNode &)=delete | |
| Interdit la copie — slicing et aliasing du pointeur source. | |
| PCCNode & | operator= (const PCCNode &)=delete |
| PCCNode (PCCNode &&)=default | |
| Déplacement autorisé — requis par unique_ptr et vector. | |
| PCCNode & | operator= (PCCNode &&)=default |
| virtual | ~PCCNode ()=default |
| Destructeur virtuel — obligatoire pour le delete via pointeur de base. | |
| virtual PCCNodeType | getNodeType () const =0 |
| Retourne le type du nœud. | |
| const std::string & | getSourceId () const |
| Retourne l'identifiant du bloc source. | |
| ShuntingElement * | getSource () const |
| Retourne le pointeur non-propriétaire vers le bloc source. | |
| const PCCPosition & | getPosition () const |
| Retourne la position logique du nœud dans le schéma PCC. | |
| const std::vector< PCCEdge * > & | getEdges () const |
| Retourne la liste des arêtes adjacentes (non-propriétaires). | |
| void | setPosition (PCCPosition position) |
| Assigne la position logique calculée par PCCLayout. | |
| void | addEdge (PCCEdge *edge) |
| Enregistre une arête adjacente (pointeur non-propriétaire). | |
| bool | isCrossover () const |
| void | setCrossover (bool v) |
Attributs protégés | |
| std::string | m_sourceId |
| ShuntingElement * | m_source = nullptr |
| PCCPosition | m_position |
| std::vector< PCCEdge * > | m_edges |
| Logger & | m_logger |
Attributs privés | |
| bool | m_isCrossover = false |
Nœud abstrait du graphe PCC.
Sous-classé en PCCStraightNode et PCCSwitchNode pour exposer les accesseurs spécifiques à chaque type sans cast dynamique à l'appelant.
Règles de copie / déplacement :
| PCCNode::PCCNode | ( | std::string | sourceId, |
| ShuntingElement * | source, | ||
| Logger & | logger | ||
| ) |
Construit un nœud PCC à partir d'un bloc source.
sourceId est passé par valeur et déplacé dans m_sourceId via std::move — O(1) au lieu de O(n) si l'appelant passe une rvalue.
| sourceId | Identifiant du bloc source (ex. "s/0", "sw/3"). |
| source | Pointeur non-propriétaire vers le bloc source. Doit rester valide pendant toute la durée de vie du nœud. |
| logger | Référence au logger HMI fourni par PCCGraph. |
| std::invalid_argument | Si source est nullptr. |
|
delete |
Interdit la copie — slicing et aliasing du pointeur source.
|
default |
Déplacement autorisé — requis par unique_ptr et vector.
|
virtualdefault |
Destructeur virtuel — obligatoire pour le delete via pointeur de base.
PCCGraph stocke des unique_ptr<PCCNode> pointant sur des PCCStraightNode / PCCSwitchNode. Sans virtual, le destructeur de la sous-classe ne serait pas appelé → undefined behavior.
| void PCCNode::addEdge | ( | PCCEdge * | edge | ) |
Enregistre une arête adjacente (pointeur non-propriétaire).
Appelé par PCCGraphBuilder après création de l'arête dans PCCGraph. Ne prend pas ownership. Ignore silencieusement les nullptr.
| edge | Pointeur non-propriétaire vers l'arête à enregistrer. |
|
inline |
Retourne la liste des arêtes adjacentes (non-propriétaires).
Peuplée par PCCGraphBuilder via addEdge. L'ordre n'est pas garanti.
|
pure virtual |
Retourne le type du nœud.
Méthode virtuelle pure : rend PCCNode abstraite (non instanciable). Chaque sous-classe concrète doit l'implémenter.
Implémenté dans PCCStraightNode, et PCCSwitchNode.
|
inline |
Retourne la position logique du nœud dans le schéma PCC.
|
inline |
Retourne le pointeur non-propriétaire vers le bloc source.
Permet à TCORenderer d'interroger ShuntingState sans couplage au type concret.
|
inline |
Retourne l'identifiant du bloc source.
|
inline |
|
inline |
|
inline |
Assigne la position logique calculée par PCCLayout.
position est passé par valeur — PCCPosition est un POD de 2 entiers, la copie est équivalente ou meilleure qu'une référence.
| position | Coordonnées logiques (x = profondeur BFS, y = rang vertical). |
|
protected |
Arêtes adjacentes — pointeurs non-propriétaires. Les arêtes sont possédées par PCCGraph via unique_ptr.
|
private |
|
protected |
Position logique dans le schéma PCC. Calculée par PCCLayout — non significative avant son exécution.
|
protected |
Pointeur non-propriétaire vers le bloc source. Propriété de TopologyRepository — ne pas delete.
|
protected |
Identifiant du bloc source (ex. "s/0", "sw/3").