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 PCCGraph

Conteneur propriétaire du graphe PCC — nœuds, arêtes et index. Plus de détails...

#include <PCCGraph.h>

Graphe de collaboration de PCCGraph:

Fonctions membres publiques

 PCCGraph ()
 
 ~PCCGraph ()=default
 
 PCCGraph (const PCCGraph &)=delete
 Interdit la copie — unique_ptr non copiable.
 
PCCGraphoperator= (const PCCGraph &)=delete
 
 PCCGraph (PCCGraph &&)=default
 Déplacement autorisé.
 
PCCGraphoperator= (PCCGraph &&)=default
 
LoggergetLogger ()
 Retourne une référence au logger PCC pour les classes consommatrices.
 
PCCNodeaddStraightNode (StraightBlock *source)
 Crée un nœud voie droite, l'indexe et le stocke.
 
PCCNodeaddSwitchNode (SwitchBlock *source)
 Crée un nœud aiguillage, l'indexe et le stocke.
 
PCCEdgeaddEdge (PCCNode *from, PCCNode *to, PCCEdgeRole role)
 Crée une arête orientée entre deux nœuds et la câble sur les deux.
 
PCCNodefindNode (const std::string &sourceId) const
 Recherche un nœud par l'identifiant de son bloc source.
 
const std::vector< std::unique_ptr< PCCNode > > & getNodes () const
 Retourne la collection de nœuds (lecture seule).
 
const std::vector< std::unique_ptr< PCCEdge > > & getEdges () const
 Retourne la collection d'arêtes (lecture seule).
 
std::size_t nodeCount () const
 Retourne le nombre de nœuds dans le graphe.
 
std::size_t edgeCount () const
 Retourne le nombre d'arêtes dans le graphe.
 
bool isEmpty () const
 Indique si le graphe est vide.
 
void clear ()
 Vide le graphe — nœuds, arêtes et index.
 

Attributs privés

Logger m_logger { "PCC" }
 
std::vector< std::unique_ptr< PCCNode > > m_nodes
 
std::vector< std::unique_ptr< PCCEdge > > m_edges
 
std::unordered_map< std::string, PCCNode * > m_index
 

Description détaillée

Conteneur propriétaire du graphe PCC — nœuds, arêtes et index.

Règles de copie / déplacement :

  • Copie interdite — les unique_ptr ne sont pas copiables.
  • Déplacement autorisé — transfert d'ownership possible si nécessaire.

Documentation des constructeurs et destructeur

◆ PCCGraph() [1/3]

PCCGraph::PCCGraph ( )
explicit

◆ ~PCCGraph()

PCCGraph::~PCCGraph ( )
default

◆ PCCGraph() [2/3]

PCCGraph::PCCGraph ( const PCCGraph )
delete

Interdit la copie — unique_ptr non copiable.

◆ PCCGraph() [3/3]

PCCGraph::PCCGraph ( PCCGraph &&  )
default

Déplacement autorisé.

Documentation des fonctions membres

◆ addEdge()

PCCEdge * PCCGraph::addEdge ( PCCNode from,
PCCNode to,
PCCEdgeRole  role 
)

Crée une arête orientée entre deux nœuds et la câble sur les deux.

Crée une PCCEdge (from → to, rôle role), la stocke dans m_edges (ownership exclusif), puis appelle PCCNode::addEdge sur from et sur to pour enregistrer l'arête dans les deux sens.

Si role est PCCEdgeRole::ROOT, NORMAL ou DEVIATION et que from est un PCCSwitchNode, l'arête correspondante est également enregistrée via setRootEdge / setNormalEdge / setDeviationEdge.

Paramètres
fromNœud source. Ne doit pas être nullptr.
toNœud cible. Ne doit pas être nullptr.
roleRôle sémantique de la connexion.
Renvoie
Pointeur non-propriétaire vers l'arête créée.
Exceptions
std::invalid_argumentSi from ou to est nullptr (propagé depuis PCCEdge).

◆ addStraightNode()

PCCNode * PCCGraph::addStraightNode ( StraightBlock source)

Crée un nœud voie droite, l'indexe et le stocke.

Crée un PCCStraightNode depuis source, le stocke dans m_nodes (ownership exclusif), l'indexe dans m_index, et retourne un pointeur non-propriétaire vers le nœud créé.

Le pointeur retourné reste valide tant que ce PCCGraph est en vie et que clear() n'a pas été appelé.

Paramètres
sourcePointeur non-propriétaire vers le StraightBlock source. Ne doit pas être nullptr.
Renvoie
Pointeur non-propriétaire vers le nœud créé. Jamais nullptr si source est valide.
Exceptions
std::invalid_argumentSi source est nullptr (propagé depuis PCCStraightNode).

◆ addSwitchNode()

PCCNode * PCCGraph::addSwitchNode ( SwitchBlock source)

Crée un nœud aiguillage, l'indexe et le stocke.

Crée un PCCSwitchNode depuis source, le stocke dans m_nodes (ownership exclusif), l'indexe dans m_index, et retourne un pointeur non-propriétaire vers le nœud créé.

Paramètres
sourcePointeur non-propriétaire vers le SwitchBlock source. Ne doit pas être nullptr.
Renvoie
Pointeur non-propriétaire vers le nœud créé. Jamais nullptr si source est valide.
Exceptions
std::invalid_argumentSi source est nullptr (propagé depuis PCCSwitchNode).

◆ clear()

void PCCGraph::clear ( )

Vide le graphe — nœuds, arêtes et index.

Libère tous les nœuds et arêtes (les unique_ptr sont détruits), vide l'index et remet le graphe dans son état initial.

À appeler depuis PCCPanel avant chaque reconstruction via PCCGraphBuilder, typiquement en réponse à WM_PARSING_SUCCESS.

Note
Tous les raw pointers précédemment retournés par addStraightNode, addSwitchNode et addEdge sont invalidés après cet appel.

◆ edgeCount()

std::size_t PCCGraph::edgeCount ( ) const
inline

Retourne le nombre d'arêtes dans le graphe.

Renvoie
Nombre d'arêtes.

◆ findNode()

PCCNode * PCCGraph::findNode ( const std::string &  sourceId) const

Recherche un nœud par l'identifiant de son bloc source.

Lookup O(1) amorti dans m_index. Utilise find() et non operator[] pour éviter l'insertion implicite d'une entrée vide si la clé est absente.

Paramètres
sourceIdIdentifiant du bloc source (ex. "s/0", "sw/3").
Renvoie
Pointeur non-propriétaire vers le nœud correspondant, ou nullptr si aucun nœud ne correspond à sourceId.

◆ getEdges()

const std::vector< std::unique_ptr< PCCEdge > > & PCCGraph::getEdges ( ) const
inline

Retourne la collection d'arêtes (lecture seule).

Renvoie
Référence constante au vecteur de unique_ptr<PCCEdge>.

◆ getLogger()

Logger & PCCGraph::getLogger ( )
inline

Retourne une référence au logger PCC pour les classes consommatrices.

Permet à PCCGraphBuilder et PCCLayout d'utiliser le même logger sans couplage direct à PCCGraph.

Renvoie
Référence au logger interne Logger{"PCC"}.

◆ getNodes()

const std::vector< std::unique_ptr< PCCNode > > & PCCGraph::getNodes ( ) const
inline

Retourne la collection de nœuds (lecture seule).

Renvoie
Référence constante au vecteur de unique_ptr<PCCNode>. Les pointeurs bruts sont accessibles via unique_ptr::get().

◆ isEmpty()

bool PCCGraph::isEmpty ( ) const
inline

Indique si le graphe est vide.

Renvoie
true si aucun nœud n'a été ajouté, false sinon.

◆ nodeCount()

std::size_t PCCGraph::nodeCount ( ) const
inline

Retourne le nombre de nœuds dans le graphe.

Renvoie
Nombre de nœuds. 0 si le graphe est vide ou non construit.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

PCCGraph & PCCGraph::operator= ( PCCGraph &&  )
default

Documentation des données membres

◆ m_edges

std::vector<std::unique_ptr<PCCEdge> > PCCGraph::m_edges
private

Arêtes du graphe — propriétaires exclusives. Chaque arête est câblée sur ses deux nœuds extrémités via addEdge().

◆ m_index

std::unordered_map<std::string, PCCNode*> PCCGraph::m_index
private

Index de lookup O(1) : sourceId → PCCNode*. Construit incrémentalement par addStraightNode() et addSwitchNode(). Les pointeurs sont non-propriétaires — ownership dans m_nodes.

Utiliser find() pour la lecture — operator[] insèrerait une entrée vide si la clé est absente.

◆ m_logger

Logger PCCGraph::m_logger { "PCC" }
mutableprivate

Logger dédié à la couche PCC, utilisé pour tracer les événements et erreurs liés à l'interface utilisateur.

◆ m_nodes

std::vector<std::unique_ptr<PCCNode> > PCCGraph::m_nodes
private

Nœuds du graphe — propriétaires exclusifs. Chaque entrée est un PCCStraightNode ou PCCSwitchNode. L'ordre d'insertion correspond à l'ordre de parsing.


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