Trax3 3.1.0
trax track library
Loading...
Searching...
No Matches
trax::NarrowSwitch Struct Referenceabstract

Common interface for switch types that maintain an incomming (narrow) track, an outgoing straight track and an arbitrary number of outgoing diverging tracks. More...

#include <C:/Trend/Development/Trax3/Code/trax/Switch.h>

Inheritance diagram for trax::NarrowSwitch:

Public Types

enum  SlotNames : char {
  slot_none = -1 , slot_0 = 0 , slot_1 , slot_2 ,
  slot_3 , slot_4 , slot_5 , slot_N = 125 ,
  maxSlots
}
enum class  Status : char {
  none = -1 , go , branch = 1 , branch1 = 1 ,
  branch2 = 2 , branch3 = 3 , branch4 = 4 , bramch5 = 5 ,
  branchN = 124 , maxBranches = 124 , toggle , change ,
  empty
}
 Status. More...

Public Member Functions

virtual Status Set (Status to, bool pulse=true)=0
 Turns the switch to the specified setting.
virtual Status Get () const =0
 Gets the setting of the switch.
virtual void NarrowTrack (std::shared_ptr< TrackBuilder > pNarrowTrack, Track::EndType trackEnd)=0
 Occupies the slot for the narrow track.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeNarrowTrack () const =0
virtual void ClearNarrowTrack ()=0
 Clears the slot for the narrow track.
virtual void StraightTrack (std::shared_ptr< TrackBuilder > pStaightTrack, Track::EndType trackEnd)=0
 Occupies the slot for the straight track.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeStraightTrack () const =0
virtual void ClearStraightTrack ()=0
 Clears the slot for the straight track.
virtual void DivergedTrack (int divTrackID, std::shared_ptr< TrackBuilder > pDivergedTrack, Track::EndType trackEnd)=0
 Occupies the slot for the diverging track.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeDivergedTrack (int divTrackID) const =0
virtual void ClearDivergedTrack (int divTrackID)=0
 Clears the slot for the straight track.
virtual int CntDivergedTracks () const =0
virtual Location Bifurcation () const =0
 Gets a track Location object right at the bifurcation point of the switch with a foreward direction aiming towards the branching tracks.
virtual JackJackOnGo () noexcept=0
 Gets a Jack that pulses its Plug if the switch is set to go.
virtual MultiPlugPlugToGo () noexcept=0
 Gets a Plug that sets the switch to go.
virtual JackJackOn (Status status)=0
 Gets a Jack that pulses its Plug if the specified Status is set.
virtual MultiPlugPlugTo (Status status)=0
 Gets a Plug that switches to the specified Status.
virtual JackJackOnDivergedTrack (int divTrackID)=0
 Gets a Jack that pulses its Plug if the switch is set to the branching track.
virtual MultiPlugPlugToDivergedTrack (int divTrackID)=0
 Gets a Plug that sets the switch to the outgoing track.
virtual void Set (const Track &trackA, Track::EndType trackendA, const Track &trackB, Track::EndType trackendB, bool pulse=true)=0
 Sets the Connector to the setting that connects the two track ends.
Public Member Functions inherited from trax::Connector
virtual ConnectorType GetConnectorType () const noexcept=0
virtual const char * TypeName () const noexcept=0
virtual bool IsValid () const noexcept=0
 Checks whether the connector is valid.
virtual void Toggle (bool pulse=true)=0
 Sets the connector to the next setting.
virtual void Disconnect ()=0
 Disconnects all track ends from each other.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeSlot (int slot) const noexcept=0
virtual int Slot (const Track &track, Track::EndType trackend) const =0
virtual int CntSlots () const noexcept=0
virtual void SwapSlots (int slotA, int slotB)=0
 Exchanges the content of the two slots.
virtual bool IsComplete () const =0
virtual bool Check (std::ostream &os, Length e_distance=epsilon__length, Angle e_kink=epsilon__angle, Angle e_twist=epsilon__angle) const noexcept=0
 Checks the connector for consistency.
virtual void Clear (int slot)=0
 clears the slot with index slot.
virtual void Clear ()=0
 Releases all the tracks from the slots.
virtual void GetCenter (spat::Frame< Length, One > &center) const =0
 Gets the center of the tracks the connector is connecting.
virtual MultiPlugPlugToToggle () noexcept=0
virtual const MultiPlugPlugToToggle () const noexcept=0
virtual JackJackOnChange () noexcept=0
virtual const JackJackOnChange () const noexcept=0
virtual void RegisterSockets (SocketRegistry &modul)=0
 Registers all the Plugs with the module and supplies the Jacks with plug ids for connecting.
virtual void UnregisterSockets (SocketRegistry &modul)=0
 Removes all references to Plugs and Jacks from the module.
virtual void UserData (ConnectorUserData *pData) noexcept=0
 Sets a pointer to user provided data.
virtual ConnectorUserData * UserData () const noexcept=0
virtual int Slot (int slot, std::shared_ptr< TrackBuilder > pTrack, Track::EndType trackend, bool connectAnonymous=false)=0
 Populates a slot with a tracks end.
virtual int Slot (std::shared_ptr< TrackBuilder > pTrack, Track::EndType trackend, bool connectAnonymous=false)=0
 Populates the slot with the smallest ID that is still unpopulated.
Public Member Functions inherited from trax::Identified< Connector >
virtual const std::string & Reference (const std::string &name) const=0
 Gets a reference that was set for this object by name.
virtual const std::vector< char const * > & ReferenceNames (const std::string &namePart) const=0
 Searches for all reference names that countain namePart as substring in the name.
virtual IDType ID () const noexcept=0
 Identified (const Identified &)=delete
Identified & operator= (const Identified &)=delete

Static Public Member Functions

static dclspc std::unique_ptr< NarrowSwitchMake (unsigned char numBranches) noexcept
 Makes a standard NarrowSwitch object.

Detailed Description

Common interface for switch types that maintain an incomming (narrow) track, an outgoing straight track and an arbitrary number of outgoing diverging tracks.

Member Enumeration Documentation

◆ SlotNames

Enumerator
slot_0 

narrow track

slot_1 

straight track

slot_2 

first diverging track

slot_3 

second diverging track

slot_4 

third diverging track

slot_5 

fourth diverging track

slot_N 

Nth diverging track.

◆ Status

enum class trax::NarrowSwitch::Status : char
strong

Status.

Enumerator
go 

go over straight track

branch 

go over first diverging track

branch1 

go over first diverging track

branch2 

go over second diverging track

toggle 

toggle the switch

empty 

set to first empty from go over branch1 to CntDivergedTracks()

Member Function Documentation

◆ ClearDivergedTrack()

virtual void trax::NarrowSwitch::ClearDivergedTrack ( int divTrackID)
pure virtual

Clears the slot for the straight track.

Implemented in trax::Switch.

◆ CntDivergedTracks()

virtual int trax::NarrowSwitch::CntDivergedTracks ( ) const
pure virtual
Returns
The number of diverging tracks. This does not include the outgoing straight track.

◆ DivergedTrack() [1/2]

virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndType > trax::NarrowSwitch::DivergedTrack ( int divTrackID) const
pure virtual
Returns
the track and the end type in the straight slot.

Implemented in trax::Switch.

◆ DivergedTrack() [2/2]

virtual void trax::NarrowSwitch::DivergedTrack ( int divTrackID,
std::shared_ptr< TrackBuilder > pDivergedTrack,
Track::EndType trackEnd )
pure virtual

Occupies the slot for the diverging track.

The diverging track is the branching track of a switch.

Parameters
divTrackIDzero based id of the diverging track to set.
pDivergedTrackShared pointer to track.
trackEndEnd of track to connect.

Implemented in trax::Switch.

◆ NarrowTrack() [1/2]

virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndType > trax::NarrowSwitch::NarrowTrack ( ) const
pure virtual
Returns
the track and the end type in the narrow slot.

◆ NarrowTrack() [2/2]

virtual void trax::NarrowSwitch::NarrowTrack ( std::shared_ptr< TrackBuilder > pNarrowTrack,
Track::EndType trackEnd )
pure virtual

Occupies the slot for the narrow track.

The narrow track is the incomming track of a switch.

Parameters
pNarrowTrackShared pointer to track.
trackEndEnd of track to connect.

◆ Set() [1/2]

virtual void trax::Connector::Set ( const Track & trackA,
Track::EndType trackendA,
const Track & trackB,
Track::EndType trackendB,
bool pulse = true )
virtual

Sets the Connector to the setting that connects the two track ends.

Exceptions
std::invalid_argumentif one of the two track ends is not in a slot.
std::logic_error,ifthe two ends can not get connected by the Connector.

Implements trax::Connector.

◆ Set() [2/2]

virtual Status trax::NarrowSwitch::Set ( Status to,
bool pulse = true )
pure virtual

Turns the switch to the specified setting.

Returns
The previous status of the switch.

◆ StraightTrack() [1/2]

virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndType > trax::NarrowSwitch::StraightTrack ( ) const
pure virtual
Returns
the track and the end type in the straight slot.

◆ StraightTrack() [2/2]

virtual void trax::NarrowSwitch::StraightTrack ( std::shared_ptr< TrackBuilder > pStaightTrack,
Track::EndType trackEnd )
pure virtual

Occupies the slot for the straight track.

The straight track is the go through track of a switch.

Parameters
pStaightTrackShared pointer to track.
trackEndEnd of track to connect.

The documentation for this struct was generated from the following file:
  • C:/Trend/Development/Trax3/Code/trax/Switch.h