src/rail.h
branchcpp_gui
changeset 6268 4b5241e5dd10
parent 6253 23983700e3d7
child 6285 187e3ef04cc9
equal deleted inserted replaced
6267:7c8ec33959b1 6268:4b5241e5dd10
    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