equal
deleted
inserted
replaced
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 } |