(svn r13088) -Codechange: use SigSegState enum instead of bool variable (michi_cc)
authorsmatz
Wed, 14 May 2008 16:38:53 +0000
changeset 9222 78f27b94fe76
parent 9221 1cd04b558663
child 9223 2e4d5d55bdf0
(svn r13088) -Codechange: use SigSegState enum instead of bool variable (michi_cc)
src/signal.cpp
src/signal_func.h
src/train_cmd.cpp
--- a/src/signal.cpp	Wed May 14 15:34:04 2008 +0000
+++ b/src/signal.cpp	Wed May 14 16:38:53 2008 +0000
@@ -468,12 +468,12 @@
  * @return false iff presignal entry would be green (needed for trains leaving depot)
  * @pre IsValidPlayer(owner)
  */
-static bool UpdateSignalsInBuffer(Owner owner)
+static SigSegState UpdateSignalsInBuffer(Owner owner)
 {
 	assert(IsValidPlayer(owner));
 
 	bool first = true;  // first block?
-	bool state = false; // value to return
+	SigSegState state = SIGSEG_FREE; // value to return
 
 	TileIndex tile;
 	DiagDirection dir;
@@ -532,7 +532,10 @@
 
 		if (first) {
 			first = false;
-			state = (flags & SF_TRAIN) || (flags & SF_EXIT && !(flags & SF_GREEN)) || (flags & SF_FULL); // true iff train CAN'T leave the depot
+			if ((flags & SF_TRAIN) || (flags & SF_EXIT && !(flags & SF_GREEN)) || (flags & SF_FULL)) {
+				/* SIGSEG_FREE is set by default */
+				state = SIGSEG_FULL;
+			}
 		}
 
 		/* do not do anything when some buffer was full */
@@ -629,7 +632,7 @@
  * @param owner owner whose signals we will update
  * @return false iff train can leave depot
  */
-bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner)
+SigSegState UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner)
 {
 	assert(_globset.IsEmpty());
 	_globset.Add(tile, side);
--- a/src/signal_func.h	Wed May 14 15:34:04 2008 +0000
+++ b/src/signal_func.h	Wed May 14 16:38:53 2008 +0000
@@ -41,7 +41,13 @@
 	return _signal_on_track[track];
 }
 
-bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner);
+/** State of the signal segment */
+enum SigSegState {
+	SIGSEG_FREE,    ///< Free and has no pre-signal exits or at least one green exit
+	SIGSEG_FULL,    ///< Occupied by a train
+};
+
+SigSegState UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner);
 void SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner);
 void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner);
 void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner);
--- a/src/train_cmd.cpp	Wed May 14 15:34:04 2008 +0000
+++ b/src/train_cmd.cpp	Wed May 14 16:38:53 2008 +0000
@@ -2262,7 +2262,7 @@
 
 		v->load_unload_time_rem = 0;
 
-		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner)) {
+		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner) == SIGSEG_FULL) {
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 			return true;
 		}