src/rail.h
changeset 8329 77e50bd6ad67
parent 8267 c600379bd333
child 8424 4a488a90ccab
equal deleted inserted replaced
8328:6909973c8359 8329:77e50bd6ad67
   368  * @return The Track from the value or INVALID_TRACK
   368  * @return The Track from the value or INVALID_TRACK
   369  * @pre tracks must contains only one Track or be INVALID_TRACK_BIT
   369  * @pre tracks must contains only one Track or be INVALID_TRACK_BIT
   370  */
   370  */
   371 static inline Track TrackBitsToTrack(TrackBits tracks)
   371 static inline Track TrackBitsToTrack(TrackBits tracks)
   372 {
   372 {
   373 	assert(tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KILL_FIRST_BIT(tracks & TRACK_BIT_MASK) == 0));
   373 	assert(tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KillFirstBit(tracks & TRACK_BIT_MASK) == TRACK_BIT_NONE));
   374 	return tracks != INVALID_TRACK_BIT ? (Track)FIND_FIRST_BIT(tracks & TRACK_BIT_MASK) : INVALID_TRACK;
   374 	return tracks != INVALID_TRACK_BIT ? (Track)FIND_FIRST_BIT(tracks & TRACK_BIT_MASK) : INVALID_TRACK;
   375 }
   375 }
   376 
   376 
   377 /**
   377 /**
   378  * Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR
   378  * Returns first Trackdir from TrackdirBits or INVALID_TRACKDIR
   783  * @return Whether the tracks present overlap in any way.
   783  * @return Whether the tracks present overlap in any way.
   784  */
   784  */
   785 static inline bool TracksOverlap(TrackBits bits)
   785 static inline bool TracksOverlap(TrackBits bits)
   786 {
   786 {
   787 	/* With no, or only one track, there is no overlap */
   787 	/* With no, or only one track, there is no overlap */
   788 	if (bits == 0 || KILL_FIRST_BIT(bits) == 0) return false;
   788 	if (bits == TRACK_BIT_NONE || KillFirstBit(bits) == TRACK_BIT_NONE) return false;
   789 	/* We know that there are at least two tracks present. When there are more
   789 	/* We know that there are at least two tracks present. When there are more
   790 	 * than 2 tracks, they will surely overlap. When there are two, they will
   790 	 * than 2 tracks, they will surely overlap. When there are two, they will
   791 	 * always overlap unless they are lower & upper or right & left. */
   791 	 * always overlap unless they are lower & upper or right & left. */
   792 	return bits != TRACK_BIT_HORZ && bits != TRACK_BIT_VERT;
   792 	return bits != TRACK_BIT_HORZ && bits != TRACK_BIT_VERT;
   793 }
   793 }