diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-01-03 13:47:24 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-01-03 13:47:24 +0100 |
| commit | c72de2fbbcdf5b416d78b9e455aced43517033a8 (patch) | |
| tree | 37f5ae48e795aff0f5a01a772bad2ee3c024dd91 /src/server/game/Entities/Object | |
| parent | 27860c3316b7354c6bf17cac82992085d2905934 (diff) | |
Core/Objects: Use span/array instead of vector for raw ObjectGuid manipulations
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.h | 11 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 0c59aa0fe52..a68968b7256 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -797,17 +797,17 @@ std::size_t ObjectGuid::GetHash() const return hashVal; } -std::vector<uint8> ObjectGuid::GetRawValue() const +std::array<uint8, 16> ObjectGuid::GetRawValue() const { - std::vector<uint8> raw(16); - memcpy(raw.data(), this, sizeof(*this)); + std::array<uint8, 16> raw; + memcpy(raw.data(), _data.data(), BytesSize); return raw; } -void ObjectGuid::SetRawValue(std::vector<uint8> const& guid) +void ObjectGuid::SetRawValue(std::span<uint8 const> rawBytes) { - ASSERT(guid.size() == sizeof(*this)); - memcpy(this, guid.data(), sizeof(*this)); + ASSERT(rawBytes.size() == BytesSize, SZFMTD " == " SZFMTD, rawBytes.size(), BytesSize); + memcpy(_data.data(), rawBytes.data(), BytesSize); } static inline uint32 GetRealmIdForObjectGuid(uint32 realmId) diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 6aac313029e..337c2d808bd 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -25,6 +25,7 @@ #include <functional> #include <list> #include <set> +#include <span> #include <stdexcept> #include <string> #include <type_traits> @@ -263,8 +264,6 @@ public: static ObjectGuid CreateLMMLobby(uint32 realmId, uint32 arg2, uint8 arg3, uint8 arg4, uint64 counter); }; -#pragma pack(push, 1) - class TC_GAME_API ObjectGuid { friend class ObjectGuidFactory; @@ -277,13 +276,15 @@ class TC_GAME_API ObjectGuid static ObjectGuid const FromStringFailed; static ObjectGuid const TradeItem; + static constexpr std::size_t BytesSize = 16; + using LowType = uint64; ObjectGuid() = default; uint64 GetRawValue(std::size_t i) const { return _data[i]; } - std::vector<uint8> GetRawValue() const; - void SetRawValue(std::vector<uint8> const& guid); + std::array<uint8, 16> GetRawValue() const; + void SetRawValue(std::span<uint8 const> rawBytes); void SetRawValue(uint64 high, uint64 low) { _data[0] = low; _data[1] = high; } void Clear() { _data = { }; } @@ -387,8 +388,6 @@ class TC_GAME_API ObjectGuid std::array<uint64, 2> _data = { }; }; -#pragma pack(pop) - // Some Shared defines using GuidSet = std::set<ObjectGuid>; using GuidList = std::list<ObjectGuid>; |
