Simulateur Ferroviaire
Reconstruction et visualisation d'un réseau ferroviaire à partir de données GeoJSON — Win32 / WebView2 / Leaflet
Chargement...
Recherche...
Aucune correspondance
Référence de la classe PCCNodeabstract

Nœud abstrait du graphe PCC. Plus de détails...

#include <PCCNode.h>

Graphe d'héritage de PCCNode:
Graphe de collaboration de PCCNode:

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.
 
PCCNodeoperator= (const PCCNode &)=delete
 
 PCCNode (PCCNode &&)=default
 Déplacement autorisé — requis par unique_ptr et vector.
 
PCCNodeoperator= (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.
 
ShuntingElementgetSource () const
 Retourne le pointeur non-propriétaire vers le bloc source.
 
const PCCPositiongetPosition () 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
 
ShuntingElementm_source = nullptr
 
PCCPosition m_position
 
std::vector< PCCEdge * > m_edges
 
Loggerm_logger
 

Attributs privés

bool m_isCrossover = false
 

Description détaillée

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 :

  • Copie interdite — slicing et aliasing du pointeur source.
  • Déplacement autorisé — requis par unique_ptr et vector.

Documentation des constructeurs et destructeur

◆ PCCNode() [1/3]

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.

Paramètres
sourceIdIdentifiant du bloc source (ex. "s/0", "sw/3").
sourcePointeur non-propriétaire vers le bloc source. Doit rester valide pendant toute la durée de vie du nœud.
loggerRéférence au logger HMI fourni par PCCGraph.
Exceptions
std::invalid_argumentSi source est nullptr.

◆ PCCNode() [2/3]

PCCNode::PCCNode ( const PCCNode )
delete

Interdit la copie — slicing et aliasing du pointeur source.

◆ PCCNode() [3/3]

PCCNode::PCCNode ( PCCNode &&  )
default

Déplacement autorisé — requis par unique_ptr et vector.

◆ ~PCCNode()

virtual PCCNode::~PCCNode ( )
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.

Documentation des fonctions membres

◆ addEdge()

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.

Paramètres
edgePointeur non-propriétaire vers l'arête à enregistrer.

◆ getEdges()

const std::vector< PCCEdge * > & PCCNode::getEdges ( ) const
inline

Retourne la liste des arêtes adjacentes (non-propriétaires).

Peuplée par PCCGraphBuilder via addEdge. L'ordre n'est pas garanti.

Renvoie
Référence constante à la liste de pointeurs d'arêtes.

◆ getNodeType()

virtual PCCNodeType PCCNode::getNodeType ( ) const
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.

Renvoie
PCCNodeType::STRAIGHT ou PCCNodeType::SWITCH.

Implémenté dans PCCStraightNode, et PCCSwitchNode.

◆ getPosition()

const PCCPosition & PCCNode::getPosition ( ) const
inline

Retourne la position logique du nœud dans le schéma PCC.

Renvoie
PCCPosition {x, y}. Non significative avant l'exécution de PCCLayout.

◆ getSource()

ShuntingElement * PCCNode::getSource ( ) const
inline

Retourne le pointeur non-propriétaire vers le bloc source.

Permet à TCORenderer d'interroger ShuntingState sans couplage au type concret.

Renvoie
Pointeur vers ShuntingElement. Jamais nullptr.

◆ getSourceId()

const std::string & PCCNode::getSourceId ( ) const
inline

Retourne l'identifiant du bloc source.

Renvoie
Référence constante à l'ID source (ex. "s/0", "sw/3"). Référence stable tant que le nœud est en vie.

◆ isCrossover()

bool PCCNode::isCrossover ( ) const
inline

◆ operator=() [1/2]

PCCNode & PCCNode::operator= ( const PCCNode )
delete

◆ operator=() [2/2]

PCCNode & PCCNode::operator= ( PCCNode &&  )
default

◆ setCrossover()

void PCCNode::setCrossover ( bool  v)
inline

◆ setPosition()

void PCCNode::setPosition ( PCCPosition  position)
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.

Paramètres
positionCoordonnées logiques (x = profondeur BFS, y = rang vertical).

Documentation des données membres

◆ m_edges

std::vector<PCCEdge*> PCCNode::m_edges
protected

Arêtes adjacentes — pointeurs non-propriétaires. Les arêtes sont possédées par PCCGraph via unique_ptr.

◆ m_isCrossover

bool PCCNode::m_isCrossover = false
private

◆ m_logger

Logger& PCCNode::m_logger
protected

Logger de la class

◆ m_position

PCCPosition PCCNode::m_position
protected

Position logique dans le schéma PCC. Calculée par PCCLayout — non significative avant son exécution.

◆ m_source

ShuntingElement* PCCNode::m_source = nullptr
protected

Pointeur non-propriétaire vers le bloc source. Propriété de TopologyRepository — ne pas delete.

◆ m_sourceId

std::string PCCNode::m_sourceId
protected

Identifiant du bloc source (ex. "s/0", "sw/3").


La documentation de cette classe a été générée à partir des fichiers suivants :