changeset 14876:26bfda89ac2b draft

(svn r19472) -Codechange: reorder the static members of ByteBlob and add Zero() (skidd13)
author yexo <yexo@openttd.org>
date Fri, 19 Mar 2010 20:13:15 +0000
parents 74dce26a60e5
children 4bd944957ef3
files src/misc/blob.hpp
diffstat 1 files changed, 44 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc/blob.hpp
+++ b/src/misc/blob.hpp
@@ -89,11 +89,52 @@
 	}
 
 protected:
-	/** initialize the empty blob by setting the header pointer to the static BlobHeader with
-	 *  both items and capacity containing zero */
+	/** all allocation should happen here */
+	static FORCEINLINE BlobHeader *RawAlloc(uint num_bytes)
+	{
+		return (BlobHeader*)MallocT<byte>(num_bytes);
+	}
+
+	/** Return header pointer to the static BlobHeader with
+	 * both items and capacity containing zero */
+	static FORCEINLINE BlobHeader *Zero()
+	{
+		return const_cast<BlobHeader *>(&ByteBlob::hdrEmpty[1]);
+	}
+
+	/** simple allocation policy - can be optimized later */
+	static FORCEINLINE uint AllocPolicy(uint min_alloc)
+	{
+		if (min_alloc < (1 << 9)) {
+			if (min_alloc < (1 << 5)) return (1 << 5);
+			return (min_alloc < (1 << 7)) ? (1 << 7) : (1 << 9);
+		}
+		if (min_alloc < (1 << 15)) {
+			if (min_alloc < (1 << 11)) return (1 << 11);
+			return (min_alloc < (1 << 13)) ? (1 << 13) : (1 << 15);
+		}
+		if (min_alloc < (1 << 20)) {
+			if (min_alloc < (1 << 17)) return (1 << 17);
+			return (min_alloc < (1 << 19)) ? (1 << 19) : (1 << 20);
+		}
+		min_alloc = (min_alloc | ((1 << 20) - 1)) + 1;
+		return min_alloc;
+	}
+
+	/** all deallocations should happen here */
+	static FORCEINLINE void RawFree(BlobHeader *p)
+	{
+		/* Just to silence an unsilencable GCC 4.4+ warning. */
+		assert(p != ByteBlob::hdrEmpty);
+
+		/* In case GCC warns about the following, see GCC's PR38509 why it is bogus. */
+		free(p);
+	}
+
+	/** initialize the empty blob */
 	FORCEINLINE void InitEmpty()
 	{
-		header = const_cast<BlobHeader *>(&ByteBlob::hdrEmpty[1]);
+		header = Zero();
 	}
 
 	/** initialize blob by attaching it to the given header followed by data */
@@ -217,40 +258,6 @@
 			RawFree(pOldHdr);
 	}
 
-	/** simple allocation policy - can be optimized later */
-	FORCEINLINE static uint AllocPolicy(uint min_alloc)
-	{
-		if (min_alloc < (1 << 9)) {
-			if (min_alloc < (1 << 5)) return (1 << 5);
-			return (min_alloc < (1 << 7)) ? (1 << 7) : (1 << 9);
-		}
-		if (min_alloc < (1 << 15)) {
-			if (min_alloc < (1 << 11)) return (1 << 11);
-			return (min_alloc < (1 << 13)) ? (1 << 13) : (1 << 15);
-		}
-		if (min_alloc < (1 << 20)) {
-			if (min_alloc < (1 << 17)) return (1 << 17);
-			return (min_alloc < (1 << 19)) ? (1 << 19) : (1 << 20);
-		}
-		min_alloc = (min_alloc | ((1 << 20) - 1)) + 1;
-		return min_alloc;
-	}
-
-	/** all allocation should happen here */
-	static FORCEINLINE BlobHeader *RawAlloc(uint num_bytes)
-	{
-		return (BlobHeader*)MallocT<byte>(num_bytes);
-	}
-
-	/** all deallocations should happen here */
-	static FORCEINLINE void RawFree(BlobHeader *p)
-	{
-		/* Just to silence an unsilencable GCC 4.4+ warning. */
-		assert(p != ByteBlob::hdrEmpty);
-
-		/* In case GCC warns about the following, see GCC's PR38509 why it is bogus. */
-		free(p);
-	}
 	/** fixing the four bytes at the end of blob data - useful when blob is used to hold string */
 	FORCEINLINE void FixTail() const
 	{