equal
deleted
inserted
replaced
86 /** Define basic enum properties */ |
86 /** Define basic enum properties */ |
87 template <> struct EnumPropsT<TrackBits> : MakeEnumPropsT<TrackBits, byte, TRACK_BIT_NONE, TRACK_BIT_ALL, INVALID_TRACK_BIT> {}; |
87 template <> struct EnumPropsT<TrackBits> : MakeEnumPropsT<TrackBits, byte, TRACK_BIT_NONE, TRACK_BIT_ALL, INVALID_TRACK_BIT> {}; |
88 typedef TinyEnumT<TrackBits> TrackBitsByte; |
88 typedef TinyEnumT<TrackBits> TrackBitsByte; |
89 |
89 |
90 DECLARE_ENUM_AS_BIT_SET(TrackBits); |
90 DECLARE_ENUM_AS_BIT_SET(TrackBits); |
91 DECLARE_ENUM_AS_BIT_INDEX(Track, TrackBits); |
|
92 |
91 |
93 /** |
92 /** |
94 * Maps a Track to the corresponding TrackBits value |
93 * Maps a Track to the corresponding TrackBits value |
95 */ |
94 */ |
96 static inline TrackBits TrackToTrackBits(Track track) |
95 static inline TrackBits TrackToTrackBits(Track track) |
259 */ |
258 */ |
260 static inline Track RemoveFirstTrack(TrackBits *tracks) |
259 static inline Track RemoveFirstTrack(TrackBits *tracks) |
261 { |
260 { |
262 if (*tracks != TRACK_BIT_NONE && *tracks != INVALID_TRACK_BIT) { |
261 if (*tracks != TRACK_BIT_NONE && *tracks != INVALID_TRACK_BIT) { |
263 Track first = (Track)FIND_FIRST_BIT(*tracks); |
262 Track first = (Track)FIND_FIRST_BIT(*tracks); |
264 *tracks = ClrBitT(*tracks, first); |
263 ClrBitT(*tracks, first); |
265 return first; |
264 return first; |
266 } |
265 } |
267 return INVALID_TRACK; |
266 return INVALID_TRACK; |
268 } |
267 } |
269 |
268 |
272 */ |
271 */ |
273 static inline Trackdir RemoveFirstTrackdir(TrackdirBits *trackdirs) |
272 static inline Trackdir RemoveFirstTrackdir(TrackdirBits *trackdirs) |
274 { |
273 { |
275 if (*trackdirs != TRACKDIR_BIT_NONE && *trackdirs != INVALID_TRACKDIR_BIT) { |
274 if (*trackdirs != TRACKDIR_BIT_NONE && *trackdirs != INVALID_TRACKDIR_BIT) { |
276 Trackdir first = (Trackdir)FindFirstBit2x64(*trackdirs); |
275 Trackdir first = (Trackdir)FindFirstBit2x64(*trackdirs); |
277 *trackdirs = ClrBitT(*trackdirs, first); |
276 ClrBitT(*trackdirs, first); |
278 return first; |
277 return first; |
279 } |
278 } |
280 return INVALID_TRACKDIR; |
279 return INVALID_TRACKDIR; |
281 } |
280 } |
282 |
281 |