aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-07-25 10:38:45 +0200
committerShauren <shauren.trinity@gmail.com>2015-07-25 10:38:45 +0200
commit21df17fd47d08c3015c9db6434e3659b2591842b (patch)
tree2a1168ccdf78e98eecf64179f604d63650580bab /src/server/game/Entities/Object
parent7cff7f0fc0321c2f256d7c6bc191df10441b5b3c (diff)
Core/Misc: Removed ReadAsPacked/WriteAsPacked methods from ObjectGuid, they are not needed anymore as guids are always written packed
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp43
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h17
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.cpp2
3 files changed, 23 insertions, 39 deletions
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 4d607e59d1b..af0513e2d26 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -121,31 +121,37 @@ void ObjectGuid::SetRawValue(std::vector<uint8> const& guid)
void PackedGuid::Set(ObjectGuid const& guid)
{
+ _packedGuid.clear();
+ _packedGuid << guid;
+}
+
+ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid)
+{
uint8 lowMask = 0;
uint8 highMask = 0;
- _packedGuid.clear();
- _packedGuid << uint8(lowMask);
- _packedGuid << uint8(highMask);
+ buf.FlushBits(); // flush any unwritten bits to make wpos return a meaningful value
+ std::size_t pos = buf.wpos();
+ buf << uint8(lowMask);
+ buf << uint8(highMask);
uint8 packed[8];
- if (size_t packedSize = _packedGuid.PackUInt64(guid._low, &lowMask, packed))
- _packedGuid.append(packed, packedSize);
- if (size_t packedSize = _packedGuid.PackUInt64(guid._high, &highMask, packed))
- _packedGuid.append(packed, packedSize);
+ if (size_t packedSize = ByteBuffer::PackUInt64(guid._low, &lowMask, packed))
+ buf.append(packed, packedSize);
+ if (size_t packedSize = ByteBuffer::PackUInt64(guid._high, &highMask, packed))
+ buf.append(packed, packedSize);
- _packedGuid.put(0, lowMask);
- _packedGuid.put(1, highMask);
-}
+ buf.put(pos, lowMask);
+ buf.put(pos + 1, highMask);
-ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid)
-{
- buf << guid.WriteAsPacked();
return buf;
}
ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid)
{
- buf >> guid.ReadAsPacked();
+ uint8 lowMask, highMask;
+ buf >> lowMask >> highMask;
+ buf.ReadPackedUInt64(lowMask, guid._low);
+ buf.ReadPackedUInt64(highMask, guid._high);
return buf;
}
@@ -155,15 +161,6 @@ ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid)
return buf;
}
-ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid)
-{
- uint8 lowMask, highMask;
- buf >> lowMask >> highMask;
- buf.ReadPackedUInt64(lowMask, guid.GuidPtr->_low);
- buf.ReadPackedUInt64(highMask, guid.GuidPtr->_high);
- return buf;
-}
-
std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid)
{
std::ostringstream tmp;
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 281bc170c3a..23d6b4f4dde 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -180,19 +180,13 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket)
class ObjectGuid;
class PackedGuid;
-struct PackedGuidReader
-{
- explicit PackedGuidReader(ObjectGuid& guid) : GuidPtr(&guid) { }
- ObjectGuid* GuidPtr;
-};
-
#pragma pack(push, 1)
class ObjectGuid
{
friend std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid);
- friend ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid);
- friend class PackedGuid;
+ friend ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid);
+ friend ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid);
public:
static ObjectGuid const Empty;
@@ -212,15 +206,11 @@ class ObjectGuid
ObjectGuid() : _low(0), _high(0) { }
ObjectGuid(ObjectGuid const&) = default;
- PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); }
-
std::vector<uint8> GetRawValue() const;
void SetRawValue(std::vector<uint8> const& guid);
void SetRawValue(uint64 high, uint64 low) { _high = high; _low = low; }
void Clear() { _high = 0; _low = 0; }
- PackedGuid WriteAsPacked() const;
-
HighGuid GetHigh() const { return HighGuid((_high >> 58) & 0x3F); }
uint32 GetRealmId() const { return uint32((_high >> 42) & 0x1FFF); }
uint32 GetMapId() const { return uint32((_high >> 29) & 0x1FFF); }
@@ -393,12 +383,9 @@ ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid);
ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid);
ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid);
-ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid);
std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid);
-inline PackedGuid ObjectGuid::WriteAsPacked() const { return PackedGuid(*this); }
-
namespace std
{
template<>
diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp
index 98c3c428b6e..4ceb20d02aa 100644
--- a/src/server/game/Entities/Object/Updates/UpdateData.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp
@@ -56,7 +56,7 @@ bool UpdateData::BuildPacket(WorldPacket* packet)
*packet << uint32(m_outOfRangeGUIDs.size());
for (GuidSet::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
- *packet << i->WriteAsPacked();
+ *packet << *i;
}
*packet << uint32(m_data.size());