248 static inline TrackdirBits TrackdirToTrackdirBits(Trackdir trackdir) { return (TrackdirBits)(1 << trackdir); } |
248 static inline TrackdirBits TrackdirToTrackdirBits(Trackdir trackdir) { return (TrackdirBits)(1 << trackdir); } |
249 |
249 |
250 /** |
250 /** |
251 * Removes first Track from TrackBits and returns it |
251 * Removes first Track from TrackBits and returns it |
252 */ |
252 */ |
253 static inline Track RemoveFirstTrack(TrackBits &tracks) |
253 static inline Track RemoveFirstTrack(TrackBits *tracks) |
254 { |
254 { |
255 if (tracks != TRACK_BIT_NONE && tracks != INVALID_TRACK_BIT) { |
255 if (*tracks != TRACK_BIT_NONE && *tracks != INVALID_TRACK_BIT) { |
256 Track first = (Track)FIND_FIRST_BIT(tracks); |
256 Track first = (Track)FIND_FIRST_BIT(*tracks); |
257 tracks = ClrBitT(tracks, first); |
257 *tracks = ClrBitT(*tracks, first); |
258 return first; |
258 return first; |
259 } |
259 } |
260 return INVALID_TRACK; |
260 return INVALID_TRACK; |
261 } |
261 } |
262 |
262 |
263 /** |
263 /** |
264 * Removes first Trackdir from TrackdirBits and returns it |
264 * Removes first Trackdir from TrackdirBits and returns it |
265 */ |
265 */ |
266 static inline Trackdir RemoveFirstTrackdir(TrackdirBits &trackdirs) |
266 static inline Trackdir RemoveFirstTrackdir(TrackdirBits *trackdirs) |
267 { |
267 { |
268 if (trackdirs != TRACKDIR_BIT_NONE && trackdirs != INVALID_TRACKDIR_BIT) { |
268 if (*trackdirs != TRACKDIR_BIT_NONE && *trackdirs != INVALID_TRACKDIR_BIT) { |
269 Trackdir first = (Trackdir)FindFirstBit2x64(trackdirs); |
269 Trackdir first = (Trackdir)FindFirstBit2x64(*trackdirs); |
270 trackdirs = ClrBitT(trackdirs, first); |
270 *trackdirs = ClrBitT(*trackdirs, first); |
271 return first; |
271 return first; |
272 } |
272 } |
273 return INVALID_TRACKDIR; |
273 return INVALID_TRACKDIR; |
274 } |
274 } |
275 |
275 |