changeset 15206:f0543162e40b draft

(svn r19835) -Codechange: Extract grfident equality check to its own method.
author alberth <alberth@openttd.org>
date Sun, 16 May 2010 18:50:37 +0000
parents 0dca88008a3a
children e31a7ac11eb1
files src/newgrf_config.cpp src/newgrf_config.h
diffstat 2 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_config.cpp
+++ b/src/newgrf_config.cpp
@@ -452,11 +452,7 @@
 const GRFConfig *FindGRFConfig(uint32 grfid, const uint8 *md5sum)
 {
 	for (const GRFConfig *c = _all_grfs; c != NULL; c = c->next) {
-		if (c->ident.grfid == grfid) {
-			if (md5sum == NULL) return c;
-
-			if (memcmp(md5sum, c->ident.md5sum, sizeof(c->ident.md5sum)) == 0) return c;
-		}
+		if (c->ident.HasGrfIdentifier(grfid, md5sum)) return c;
 	}
 
 	return NULL;
--- a/src/newgrf_config.h
+++ b/src/newgrf_config.h
@@ -53,6 +53,18 @@
 struct GRFIdentifier {
 	uint32 grfid;     ///< GRF ID (defined by Action 0x08)
 	uint8 md5sum[16]; ///< MD5 checksum of file to distinguish files with the same GRF ID (eg. newer version of GRF)
+
+	/** Does the identification match the provided values?
+	 * @param grfid  Expected grfid.
+	 * @param md5sum Expected md5sum, may be \c NULL (in which case, do not check it).
+	 * @return the object has the provided grfid and md5sum.
+	 */
+	FORCEINLINE bool HasGrfIdentifier(uint32 grfid, const uint8 *md5sum) const
+	{
+		if (this->grfid != grfid) return false;
+		if (md5sum == NULL) return true;
+		return memcmp(md5sum, this->md5sum, sizeof(this->md5sum)) == 0;
+	}
 };
 
 /** Information about why GRF had problems during initialisation */