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 structure BlockSet

Conteneur propriétaire des StraightBlock et SwitchBlock. Plus de détails...

#include <BlockSet.h>

Graphe de collaboration de BlockSet:

Fonctions membres publiques

void clear ()
 
size_t totalCount () const
 
void rebuildStraightIndex ()
 Reconstruit tous les index straight depuis straights et straightEndpoints (après absorption Phase7).
 

Attributs publics

std::vector< std::unique_ptr< StraightBlock > > straights
 
std::vector< std::unique_ptr< SwitchBlock > > switches
 
std::unordered_map< size_t, std::vector< StraightBlock * > > straightsByNode
 
std::unordered_map< size_t, SwitchBlock * > switchByNode
 
std::unordered_map< size_t, StraightBlock * > straightByEndpointPair
 
std::unordered_map< size_t, std::vector< StraightBlock * > > straightByDirectedPair
 
std::vector< std::pair< BlockEndpoint, BlockEndpoint > > straightEndpoints
 
std::vector< std::array< BlockEndpoint, 3 > > switchEndpoints
 

Description détaillée

Conteneur propriétaire des StraightBlock et SwitchBlock.

Construit exclusivement par Phase6_BlockExtractor. Transféré vers TopologyRepository par Phase8_RepositoryTransfer.

Documentation des fonctions membres

◆ clear()

void BlockSet::clear ( )
inline

◆ rebuildStraightIndex()

void BlockSet::rebuildStraightIndex ( )
inline

Reconstruit tous les index straight depuis straights et straightEndpoints (après absorption Phase7).

Recrée straightsByNode, straightByEndpointPair et straightByDirectedPair en parcourant les endpoints enregistrés. Ignore les sous-blocs internes (frontierNodeId == SIZE_MAX).

◆ totalCount()

size_t BlockSet::totalCount ( ) const
inline

Documentation des données membres

◆ straightByDirectedPair

std::unordered_map<size_t, std::vector<StraightBlock*> > BlockSet::straightByDirectedPair

Clé directionnelle : (from * 1'000'000 + to) → liste de StraightBlock* adjacents au nœud from vers le nœud to.

Multi-valué — indispensable pour les crossovers
Quand deux straights relient les mêmes deux nœuds frontières (voie double ou crossover), les deux entrées sont conservées dans le vecteur. Phase6_BlockExtractor::extractSwitches consomme les entrées dans l'ordre via un ensemble usedStraights par switch pour éviter d'attribuer le même straight à deux branches distinctes.
Sens de traversal
  • directedKey(switchNode, frontierNode) → sous-bloc adjacent au switch
  • directedKey(frontierNode, switchNode) → sous-bloc adjacent au frontier

Valide pour < 1 000 000 nœuds (réseau typique ~420 nœuds).

◆ straightByEndpointPair

std::unordered_map<size_t, StraightBlock*> BlockSet::straightByEndpointPair

Cantor(min(A,B), max(A,B)) → premier StraightBlock* depuis A. Utilisé par rebuildStraightIndex(). Pour la résolution des endpoints de switches, préférer straightByDirectedPair.

◆ straightEndpoints

std::vector<std::pair<BlockEndpoint, BlockEndpoint> > BlockSet::straightEndpoints

Index parallèle à straights. Pour un sous-bloc interne (subdivision), frontierNodeId == SIZE_MAX et neighbourId est vide — Phase8_RepositoryTransfer ne doit PAS écraser les pointeurs de chaîne pour ces entrées.

◆ straights

std::vector<std::unique_ptr<StraightBlock> > BlockSet::straights

◆ straightsByNode

std::unordered_map<size_t, std::vector<StraightBlock*> > BlockSet::straightsByNode

nodeId → liste de StraightBlock* adjacents. Multi-valué : un nœud SWITCH est adjacent à plusieurs straights.

◆ switchByNode

std::unordered_map<size_t, SwitchBlock*> BlockSet::switchByNode

nodeId → SwitchBlock* correspondant.

◆ switchEndpoints

std::vector<std::array<BlockEndpoint, 3> > BlockSet::switchEndpoints

Index parallèle à switches — 3 endpoints par switch.

◆ switches

std::vector<std::unique_ptr<SwitchBlock> > BlockSet::switches

La documentation de cette structure a été générée à partir du fichier suivant :