src/fsmblockmap.h
branchNewGRF_ports
changeset 6751 08176dfe64b7
parent 6739 3f2ca4d0abda
child 6758 1545d187ab64
--- a/src/fsmblockmap.h	Sun Aug 05 00:38:26 2007 +0000
+++ b/src/fsmblockmap.h	Sun Aug 05 00:39:42 2007 +0000
@@ -1,4 +1,4 @@
-/* $Id:$ */
+/* $Id$ */
 
 /** @file FSMblockmap.h Definition of FSMblockmap class for use in state machines*/
 
@@ -7,7 +7,7 @@
 
 #include "stdafx.h"
 
-uint64 inline GetBlockAsBits ( byte blocknumber )
+uint64 inline GetBlockAsBits(byte blocknumber)
 {
 	if (blocknumber == 0) return 0ULL;
 	if (blocknumber > 63) blocknumber -= 64;
@@ -21,13 +21,13 @@
 */
 struct FSMblockmap {
 	public:
-		void inline ResetAll(void)
+		void inline ResetAll()
 		{
 			block_lower = 0x0000000000000000;
 			block_upper = 0x0000000000000000;
 		};
 
-		void Initialise(byte *blocklist, int num_bytes)
+		void Initialise(const byte *blocklist, int num_bytes)
 		{
 			ResetAll();
 			for (int i = 0; i < num_bytes; i++)
@@ -40,30 +40,31 @@
 			}
 		}
 
-		uint64 inline GetLower(void)
+		uint64 inline GetLower() const
 		{
 			return block_lower;
 		}
 
-		uint64 inline GetUpper(void)
+		uint64 inline GetUpper() const
 		{
 			return block_upper;
 		}
-		void inline ReserveBlocks(FSMblockmap *blockmap)
+
+		void inline ReserveBlocks(const FSMblockmap *blockmap)
 		{
 			/* OR with blockmap to reserve blocks */
 			block_lower |= blockmap->GetLower();
 			block_upper |= blockmap->GetUpper();
 		}
 
-		void inline ReleaseBlocks(FSMblockmap *blockmap)
+		void inline ReleaseBlocks(const FSMblockmap *blockmap)
 		{
 			/* AND with ones-complement to clear set bits in blockmap from block_lower and block_upper */
 			block_lower &= ~blockmap->GetLower();
 			block_upper &= ~blockmap->GetUpper();
 		}
 
-		bool inline BlocksAreFree(FSMblockmap *blockmap)
+		bool inline BlocksAreFree(const FSMblockmap *blockmap) const
 		{
 			uint64 test_lower = blockmap->GetLower();
 			uint64 test_upper = blockmap->GetUpper();
@@ -74,7 +75,7 @@
 			return true;
 		}
 
-		bool inline HasBlocks(FSMblockmap *blockmap)
+		bool inline HasBlocks(const FSMblockmap *blockmap) const
 		{
 			uint64 test_lower = blockmap->GetLower();
 			uint64 test_upper = blockmap->GetUpper();
@@ -85,11 +86,11 @@
 			return true;
 		}
 
-		bool inline HasBlock(byte blocknumber)
+		bool inline HasBlock(byte blocknumber) const
 		{
-			FSMblockmap *test_blockmap = new FSMblockmap;
-			test_blockmap->Initialise(&blocknumber, 1);
-			return HasBlocks(test_blockmap);
+			FSMblockmap test_blockmap;
+			test_blockmap.Initialise(&blocknumber, 1);
+			return HasBlocks(&test_blockmap);
 		}
 
 		//bool inline HasBlock(byte blocknumber)
@@ -99,16 +100,18 @@
 		//	return ((block_upper & test_block) == test_block);
 		//}
 
-		bool inline IsNotZero(void)
+		bool inline IsNotZero(void) const
 		{
 			return ((block_lower != 0) || (block_upper != 0));
 		}
 
+		void PrintBlock(bool newline = true) const;
+
 	private:
 		uint64 block_lower;
 		uint64 block_upper;
 };
 
-FSMblockmap* SetFSMSingleBlock(byte *blocklist);
+FSMblockmap* SetFSMSingleBlock(const byte *blocklist);
 
 #endif /* FSMBLOCKMAP_H */