From f0d786184bb9b3cfefc16fb2be87d6c6d1017160 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 18 Sep 2016 00:59:17 +0200 Subject: FULLPIPE: Properly save object backreferences --- engines/fullpipe/utils.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'engines/fullpipe/utils.h') diff --git a/engines/fullpipe/utils.h b/engines/fullpipe/utils.h index 5de919d383..44bda68cac 100644 --- a/engines/fullpipe/utils.h +++ b/engines/fullpipe/utils.h @@ -32,12 +32,30 @@ namespace Fullpipe { class CObject; class NGIArchive; +struct Pointer_EqualTo { + bool operator()(const void *x, const void *y) const { return x == y; } +}; + +struct Pointer_Hash { + uint operator()(const void *x) const { +#ifdef SCUMM_64BITS + uint64 v = (uint64)x; + return (v >> 32) ^ (v & 0xffffffff); +#else + return (uint)x; +#endif + } +}; + +typedef Common::HashMap ObjHash; + typedef Common::HashMap ClassMap; class MfcArchive : public Common::SeekableReadStream, public Common::WriteStream { ClassMap _classMap; Common::Array _objectMap; Common::Array _objectIdMap; + ObjHash _objectHash; int _lastIndex; int _level; -- cgit v1.2.3