![]() |
Trax3 3.1.0
trax track library
|
A double slip switch is made from eight tracks that form a crossing with the possibility to divert the route to connect two of the narrowing (incoming) tracks pairwise. There are four narrowing (incoming) tracks, two crossing tracks and two diverting tracks, connecting two narrowing ones each. The two straight tracks 'X', are crossing each other; two incoming narrowing tracks, two outgoing narrowing tracks - all four connecting to the straight track ends - and two diverging tracks ')' and '(', connecting incoming and outgoing tracks (ignore the dots): More...
#include <C:/Trend/Development/Trax3/Code/trax/Switch.h>

Public Types | |
| enum | SlotNames { slot_none = -1 , slot_0 = 0 , slot_1 , slot_2 , slot_3 , slot_4 , slot_5 , slot_6 , slot_7 , slot_8 , slot_9 , slot_10 , slot_11 , slot_count } |
| enum class | Status { none = -1 , go , go1 = go , go2 , branch , branch1 = branch , branch2 , count , toggle , change } |
| Status values of a switch. 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 | SetCenter (const spat::Frame< Length, One > ¢er)=0 |
| Sets the center of the switch. | |
| virtual Jack & | JackOn (Status status)=0 |
| Gets a Jack that pulses its Plug if the specified Status is set. | |
| virtual MultiPlug & | PlugTo (Status status)=0 |
| Gets a Plug that switches to the specified Status. | |
| 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::EndType > | Slot (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 > ¢er) const =0 |
| Gets the center of the tracks the connector is connecting. | |
| virtual MultiPlug & | PlugToToggle () noexcept=0 |
| virtual const MultiPlug & | PlugToToggle () const noexcept=0 |
| virtual Jack & | JackOnChange () noexcept=0 |
| virtual const Jack & | JackOnChange () 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< DoubleSlipSwitch > | Make () noexcept |
| Makes a standard DoubleSlipSwitch object. | |
A double slip switch is made from eight tracks that form a crossing with the possibility to divert the route to connect two of the narrowing (incoming) tracks pairwise. There are four narrowing (incoming) tracks, two crossing tracks and two diverting tracks, connecting two narrowing ones each. The two straight tracks 'X', are crossing each other; two incoming narrowing tracks, two outgoing narrowing tracks - all four connecting to the straight track ends - and two diverging tracks ')' and '(', connecting incoming and outgoing tracks (ignore the dots):
/// /// in /// /// \./ /// )X( /// / \. /// /// out /// ///
|
strong |
Status values of a switch.
Note that there are actually only two states for the DoubleSlipSwitch: go and branch. The others are redundant and play a role only in toggling and pulsing.
|
virtual |
Sets the Connector to the setting that connects the two track ends.
| std::invalid_argument | if one of the two track ends is not in a slot. |
| std::logic_error,if | the two ends can not get connected by the Connector. |
Implements trax::Connector.
Turns the switch to the specified setting.