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

A switch that is connecting one narrow end to three outgoing track ends. More...

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

Inheritance diagram for trax::ThreeWaySwitch:

Public Member Functions

virtual void DivergedTrack1 (std::shared_ptr< TrackBuilder > pDivergedTrack1, Track::EndType trackEnd)=0
 Occupies the slot for the diverged track.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeDivergedTrack1 () const =0
virtual void ClearDivergedTrack1 ()=0
 Clears the slot for the diverged1 track.
virtual void DivergedTrack2 (std::shared_ptr< TrackBuilder > pDivergedTrack2, Track::EndType trackEnd)=0
 Occupies the slot for the diverged track.
virtual std::pair< std::shared_ptr< TrackBuilder >, Track::EndTypeDivergedTrack2 () const =0
virtual void ClearDivergedTrack2 ()=0
 Clears the slot for the diverged2 track.
virtual void SwapStraightWithDiverged ()=0
 Swaps the straight and the diverged track.
virtual void SwapStraightWithDiverged2 ()=0
 Swaps the straight and the diverged2 track.
virtual void SwapDivergedWithDiverged2 ()=0
 Swaps the diverged and the diverged2 track.
virtual bool IsNormal () const =0
 Returns true, if the straight track lies in the middle of the two diverging tracks and the first diverging track is on its left.
virtual bool Normalize ()=0
 Rearranges the outgoing tracks if this switch is not normal.
virtual Status StatusToLeft () const =0
virtual Status StatusToMiddle () const =0
virtual Status StatusToRight () const =0
virtual JackJackOnBranch1 () noexcept=0
 Gets a Jack that pulses its Plug if the switch is set to branch.
virtual MultiPlugPlugToBranch1 () noexcept=0
 Gets a Plug that sets the switch to branch.
virtual JackJackOnBranch2 () noexcept=0
 Gets a Jack that pulses its Plug if the switch is set to branch.
virtual MultiPlugPlugToBranch2 () noexcept=0
 Gets a Plug that sets the switch to branch.
Public Member Functions inherited from trax::NarrowSwitch
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< ThreeWaySwitchMake () noexcept
 Makes a standard ThreeWaySwitch object.
Static Public Member Functions inherited from trax::NarrowSwitch
static dclspc std::unique_ptr< NarrowSwitchMake (unsigned char numBranches) noexcept
 Makes a standard NarrowSwitch object.

Static Public Attributes

static constexpr char slot_count = 4
static constexpr char status_count = 3
static constexpr char branch_count = 2

Additional Inherited Members

Public Types inherited from trax::NarrowSwitch
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...

Detailed Description

A switch that is connecting one narrow end to three outgoing track ends.

Member Function Documentation

◆ DivergedTrack1() [1/2]

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

◆ DivergedTrack1() [2/2]

virtual void trax::ThreeWaySwitch::DivergedTrack1 ( std::shared_ptr< TrackBuilder > pDivergedTrack1,
Track::EndType trackEnd )
pure virtual

Occupies the slot for the diverged track.

The diverged track is the branching track of a switch.

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

◆ DivergedTrack2() [1/2]

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

◆ DivergedTrack2() [2/2]

virtual void trax::ThreeWaySwitch::DivergedTrack2 ( std::shared_ptr< TrackBuilder > pDivergedTrack2,
Track::EndType trackEnd )
pure virtual

Occupies the slot for the diverged track.

The diverged track is the branching track of a switch.

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

◆ IsNormal()

virtual bool trax::ThreeWaySwitch::IsNormal ( ) const
pure virtual

Returns true, if the straight track lies in the middle of the two diverging tracks and the first diverging track is on its left.

Use Normalize() to make a switch normal. The test is done by the track locations at the minimum length of the three outgoing tracks.

◆ Normalize()

virtual bool trax::ThreeWaySwitch::Normalize ( )
pure virtual

Rearranges the outgoing tracks if this switch is not normal.

Returns
True if the track was normal at in the first palce.

◆ StatusToLeft()

virtual Status trax::ThreeWaySwitch::StatusToLeft ( ) const
pure virtual
Returns
the status that would lead over the left outgoing track.

◆ StatusToMiddle()

virtual Status trax::ThreeWaySwitch::StatusToMiddle ( ) const
pure virtual
Returns
the status that would lead over the middle outgoing track.

◆ StatusToRight()

virtual Status trax::ThreeWaySwitch::StatusToRight ( ) const
pure virtual
Returns
the status that would lead over the right outgoing track.

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