TrinityCore
ObjectGuid.h File Reference
#include "Define.h"
#include "EnumFlag.h"
#include "advstd.h"
#include <array>
#include <functional>
#include <list>
#include <set>
#include <string>
#include <type_traits>
#include <unordered_set>
#include <vector>
+ Include dependency graph for ObjectGuid.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ObjectGuidTraits< high >
 
class  ObjectGuidFactory
 
class  ObjectGuid
 
class  ObjectGuidGenerator
 
struct  std::hash< ObjectGuid >
 

Namespaces

namespace  std
 STL namespace.
 
namespace  Trinity
 
namespace  Trinity::Legacy
 

Macros

#define NUM_CLIENT_OBJECT_TYPES   14
 
#define MAKE_GUID_TRAIT(high, sequence, format)
 

Typedefs

using GuidSet = std::set< ObjectGuid >
 
using GuidList = std::list< ObjectGuid >
 
using GuidVector = std::vector< ObjectGuid >
 
using GuidUnorderedSet = std::unordered_set< ObjectGuid >
 

Enumerations

enum  TypeID {
  TYPEID_OBJECT = 0 , TYPEID_ITEM = 1 , TYPEID_CONTAINER = 2 , TYPEID_AZERITE_EMPOWERED_ITEM = 3 ,
  TYPEID_AZERITE_ITEM = 4 , TYPEID_UNIT = 5 , TYPEID_PLAYER = 6 , TYPEID_ACTIVE_PLAYER = 7 ,
  TYPEID_GAMEOBJECT = 8 , TYPEID_DYNAMICOBJECT = 9 , TYPEID_CORPSE = 10 , TYPEID_AREATRIGGER = 11 ,
  TYPEID_SCENEOBJECT = 12 , TYPEID_CONVERSATION = 13
}
 
enum  TypeMask {
  TYPEMASK_OBJECT = 0x0001 , TYPEMASK_ITEM = 0x0002 , TYPEMASK_CONTAINER = 0x0004 , TYPEMASK_AZERITE_EMPOWERED_ITEM = 0x0008 ,
  TYPEMASK_AZERITE_ITEM = 0x0010 , TYPEMASK_UNIT = 0x0020 , TYPEMASK_PLAYER = 0x0040 , TYPEMASK_ACTIVE_PLAYER = 0x0080 ,
  TYPEMASK_GAMEOBJECT = 0x0100 , TYPEMASK_DYNAMICOBJECT = 0x0200 , TYPEMASK_CORPSE = 0x0400 , TYPEMASK_AREATRIGGER = 0x0800 ,
  TYPEMASK_SCENEOBJECT = 0x1000 , TYPEMASK_CONVERSATION = 0x2000 , TYPEMASK_SEER = TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT , TYPEMASK_WORLDOBJECT = TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT | TYPEMASK_CORPSE | TYPEMASK_AREATRIGGER | TYPEMASK_SCENEOBJECT | TYPEMASK_CONVERSATION
}
 
enum class  HighGuid {
  Null = 0 , Uniq = 1 , Player = 2 , Item = 3 ,
  WorldTransaction = 4 , StaticDoor = 5 , Transport = 6 , Conversation = 7 ,
  Creature = 8 , Vehicle = 9 , Pet = 10 , GameObject = 11 ,
  DynamicObject = 12 , AreaTrigger = 13 , Corpse = 14 , LootObject = 15 ,
  SceneObject = 16 , Scenario = 17 , AIGroup = 18 , DynamicDoor = 19 ,
  ClientActor = 20 , Vignette = 21 , CallForHelp = 22 , AIResource = 23 ,
  AILock = 24 , AILockTicket = 25 , ChatChannel = 26 , Party = 27 ,
  Guild = 28 , WowAccount = 29 , BNetAccount = 30 , GMTask = 31 ,
  MobileSession = 32 , RaidGroup = 33 , Spell = 34 , Mail = 35 ,
  WebObj = 36 , LFGObject = 37 , LFGList = 38 , UserRouter = 39 ,
  PVPQueueGroup = 40 , UserClient = 41 , PetBattle = 42 , UniqUserClient = 43 ,
  BattlePet = 44 , CommerceObj = 45 , ClientSession = 46 , Cast = 47 ,
  ClientConnection = 48 , ClubFinder = 49 , ToolsClient = 50 , WorldLayer = 51 ,
  ArenaTeam = 52 , LMMParty = 53 , LMMLobby = 54 , Count
}
 
enum class  ObjectGuidSequenceSource { None = 0x0 , Global = 0x1 , Realm = 0x2 , Map = 0x4 }
 
enum class  ObjectGuidFormatType {
  Null , Uniq , Player , Item ,
  WorldObject , Transport , ClientActor , ChatChannel ,
  Global , Guild , MobileSession , WebObj ,
  LFGObject , LFGList , Client , ClubFinder ,
  ToolsClient , WorldLayer , LMMLobby
}
 
enum class  Trinity::Legacy::TypeID {
  Trinity::Legacy::Object = 0 , Trinity::Legacy::Item = 1 , Trinity::Legacy::Container = 2 , Trinity::Legacy::Unit = 3 ,
  Trinity::Legacy::Player = 4 , Trinity::Legacy::GameObject = 5 , Trinity::Legacy::DynamicObject = 6 , Trinity::Legacy::Corpse = 7 ,
  Trinity::Legacy::AreaTrigger = 8 , Trinity::Legacy::SceneObject = 9 , Trinity::Legacy::Conversation = 10 , Trinity::Legacy::Max
}
 

Functions

 DEFINE_ENUM_FLAG (ObjectGuidSequenceSource)
 
 MAKE_GUID_TRAIT (HighGuid::Null, ObjectGuidSequenceSource::None, ObjectGuidFormatType::Null)
 
 MAKE_GUID_TRAIT (HighGuid::Uniq, ObjectGuidSequenceSource::None, ObjectGuidFormatType::Uniq)
 
 MAKE_GUID_TRAIT (HighGuid::Player, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Player)
 
 MAKE_GUID_TRAIT (HighGuid::Item, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Item)
 
 MAKE_GUID_TRAIT (HighGuid::WorldTransaction, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::StaticDoor, ObjectGuidSequenceSource::Global|ObjectGuidSequenceSource::Map, ObjectGuidFormatType::Transport)
 
 MAKE_GUID_TRAIT (HighGuid::Transport, ObjectGuidSequenceSource::Global|ObjectGuidSequenceSource::Map, ObjectGuidFormatType::Transport)
 
 MAKE_GUID_TRAIT (HighGuid::Conversation, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::Creature, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::Vehicle, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::Pet, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::GameObject, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::DynamicObject, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::AreaTrigger, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::Corpse, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::LootObject, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::SceneObject, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::Scenario, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::AIGroup, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::DynamicDoor, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::ClientActor, ObjectGuidSequenceSource::None, ObjectGuidFormatType::ClientActor)
 
 MAKE_GUID_TRAIT (HighGuid::Vignette, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::CallForHelp, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::AIResource, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::AILock, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::AILockTicket, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::ChatChannel, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::ChatChannel)
 
 MAKE_GUID_TRAIT (HighGuid::Party, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::Guild, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Guild)
 
 MAKE_GUID_TRAIT (HighGuid::WowAccount, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::BNetAccount, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::GMTask, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::MobileSession, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::MobileSession)
 
 MAKE_GUID_TRAIT (HighGuid::RaidGroup, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::Spell, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::Mail, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::WebObj, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::WebObj)
 
 MAKE_GUID_TRAIT (HighGuid::LFGObject, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::LFGObject)
 
 MAKE_GUID_TRAIT (HighGuid::LFGList, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::LFGList)
 
 MAKE_GUID_TRAIT (HighGuid::UserRouter, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::PVPQueueGroup, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::UserClient, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::PetBattle, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client)
 
 MAKE_GUID_TRAIT (HighGuid::UniqUserClient, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client)
 
 MAKE_GUID_TRAIT (HighGuid::BattlePet, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::CommerceObj, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::Global)
 
 MAKE_GUID_TRAIT (HighGuid::ClientSession, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client)
 
 MAKE_GUID_TRAIT (HighGuid::Cast, ObjectGuidSequenceSource::Map, ObjectGuidFormatType::WorldObject)
 
 MAKE_GUID_TRAIT (HighGuid::ClientConnection, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client)
 
 MAKE_GUID_TRAIT (HighGuid::ClubFinder, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::ClubFinder)
 
 MAKE_GUID_TRAIT (HighGuid::ToolsClient, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::ToolsClient)
 
 MAKE_GUID_TRAIT (HighGuid::WorldLayer, ObjectGuidSequenceSource::Global, ObjectGuidFormatType::WorldLayer)
 
 MAKE_GUID_TRAIT (HighGuid::ArenaTeam, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Guild)
 
 MAKE_GUID_TRAIT (HighGuid::LMMParty, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::Client)
 
 MAKE_GUID_TRAIT (HighGuid::LMMLobby, ObjectGuidSequenceSource::Realm, ObjectGuidFormatType::LMMLobby)
 
TC_GAME_API ByteBufferoperator<< (ByteBuffer &buf, ObjectGuid const &guid)
 
TC_GAME_API ByteBufferoperator>> (ByteBuffer &buf, ObjectGuid &guid)
 
constexpr ::TypeID Trinity::Legacy::ConvertLegacyTypeID (TypeID legacyTypeID)
 
constexpr TypeMask Trinity::Legacy::ConvertLegacyTypeMask (uint32 legacyTypeMask)
 

Macro Definition Documentation

◆ MAKE_GUID_TRAIT

#define MAKE_GUID_TRAIT (   high,
  sequence,
  format 
)
Value:
template<> struct ObjectGuidTraits<high> \
{ \
static constexpr EnumFlag<ObjectGuidSequenceSource> SequenceSource = sequence; \
using Format = std::integral_constant<ObjectGuidFormatType, format>; \
}
std::integral_constant< ObjectGuidFormatType, ObjectGuidFormatType::Null > Format
Definition: ObjectGuid.h:172
static constexpr EnumFlag< ObjectGuidSequenceSource > SequenceSource
Definition: ObjectGuid.h:171

Definition at line 175 of file ObjectGuid.h.

◆ NUM_CLIENT_OBJECT_TYPES

#define NUM_CLIENT_OBJECT_TYPES   14

Definition at line 51 of file ObjectGuid.h.

Typedef Documentation

◆ GuidList

using GuidList = std::list<ObjectGuid>

Definition at line 394 of file ObjectGuid.h.

◆ GuidSet

using GuidSet = std::set<ObjectGuid>

Definition at line 393 of file ObjectGuid.h.

◆ GuidUnorderedSet

using GuidUnorderedSet = std::unordered_set<ObjectGuid>

Definition at line 396 of file ObjectGuid.h.

◆ GuidVector

using GuidVector = std::vector<ObjectGuid>

Definition at line 395 of file ObjectGuid.h.

Enumeration Type Documentation

◆ HighGuid

enum class HighGuid
strong
Enumerator
Null 
Uniq 
Player 
Item 
WorldTransaction 
StaticDoor 
Transport 
Conversation 
Creature 
Vehicle 
Pet 
GameObject 
DynamicObject 
AreaTrigger 
Corpse 
LootObject 
SceneObject 
Scenario 
AIGroup 
DynamicDoor 
ClientActor 
Vignette 
CallForHelp 
AIResource 
AILock 
AILockTicket 
ChatChannel 
Party 
Guild 
WowAccount 
BNetAccount 
GMTask 
MobileSession 
RaidGroup 
Spell 
Mail 
WebObj 
LFGObject 
LFGList 
UserRouter 
PVPQueueGroup 
UserClient 
PetBattle 
UniqUserClient 
BattlePet 
CommerceObj 
ClientSession 
Cast 
ClientConnection 
ClubFinder 
ToolsClient 
WorldLayer 
ArenaTeam 
LMMParty 
LMMLobby 
Count 

Definition at line 74 of file ObjectGuid.h.

◆ ObjectGuidFormatType

enum class ObjectGuidFormatType
strong
Enumerator
Null 
Uniq 
Player 
Item 
WorldObject 
Transport 
ClientActor 
ChatChannel 
Global 
Guild 
MobileSession 
WebObj 
LFGObject 
LFGList 
Client 
ClubFinder 
ToolsClient 
WorldLayer 
LMMLobby 

Definition at line 145 of file ObjectGuid.h.

◆ ObjectGuidSequenceSource

enum class ObjectGuidSequenceSource
strong
Enumerator
None 
Global 
Realm 
Map 

Definition at line 135 of file ObjectGuid.h.

◆ TypeID

enum TypeID
Enumerator
TYPEID_OBJECT 
TYPEID_ITEM 
TYPEID_CONTAINER 
TYPEID_AZERITE_EMPOWERED_ITEM 
TYPEID_AZERITE_ITEM 
TYPEID_UNIT 
TYPEID_PLAYER 
TYPEID_ACTIVE_PLAYER 
TYPEID_GAMEOBJECT 
TYPEID_DYNAMICOBJECT 
TYPEID_CORPSE 
TYPEID_AREATRIGGER 
TYPEID_SCENEOBJECT 
TYPEID_CONVERSATION 

Definition at line 33 of file ObjectGuid.h.

◆ TypeMask

enum TypeMask
Enumerator
TYPEMASK_OBJECT 
TYPEMASK_ITEM 
TYPEMASK_CONTAINER 
TYPEMASK_AZERITE_EMPOWERED_ITEM 
TYPEMASK_AZERITE_ITEM 
TYPEMASK_UNIT 
TYPEMASK_PLAYER 
TYPEMASK_ACTIVE_PLAYER 
TYPEMASK_GAMEOBJECT 
TYPEMASK_DYNAMICOBJECT 
TYPEMASK_CORPSE 
TYPEMASK_AREATRIGGER 
TYPEMASK_SCENEOBJECT 
TYPEMASK_CONVERSATION 
TYPEMASK_SEER 
TYPEMASK_WORLDOBJECT 

Definition at line 53 of file ObjectGuid.h.

Function Documentation

◆ DEFINE_ENUM_FLAG()

DEFINE_ENUM_FLAG ( ObjectGuidSequenceSource  )

◆ MAKE_GUID_TRAIT() [1/55]

◆ MAKE_GUID_TRAIT() [2/55]

◆ MAKE_GUID_TRAIT() [3/55]

◆ MAKE_GUID_TRAIT() [4/55]

◆ MAKE_GUID_TRAIT() [5/55]

◆ MAKE_GUID_TRAIT() [6/55]

◆ MAKE_GUID_TRAIT() [7/55]

◆ MAKE_GUID_TRAIT() [8/55]

◆ MAKE_GUID_TRAIT() [9/55]

◆ MAKE_GUID_TRAIT() [10/55]

◆ MAKE_GUID_TRAIT() [11/55]

◆ MAKE_GUID_TRAIT() [12/55]

◆ MAKE_GUID_TRAIT() [13/55]

◆ MAKE_GUID_TRAIT() [14/55]

◆ MAKE_GUID_TRAIT() [15/55]

◆ MAKE_GUID_TRAIT() [16/55]

◆ MAKE_GUID_TRAIT() [17/55]

◆ MAKE_GUID_TRAIT() [18/55]

◆ MAKE_GUID_TRAIT() [19/55]

◆ MAKE_GUID_TRAIT() [20/55]

◆ MAKE_GUID_TRAIT() [21/55]

◆ MAKE_GUID_TRAIT() [22/55]

◆ MAKE_GUID_TRAIT() [23/55]

◆ MAKE_GUID_TRAIT() [24/55]

◆ MAKE_GUID_TRAIT() [25/55]

◆ MAKE_GUID_TRAIT() [26/55]

◆ MAKE_GUID_TRAIT() [27/55]

◆ MAKE_GUID_TRAIT() [28/55]

◆ MAKE_GUID_TRAIT() [29/55]

◆ MAKE_GUID_TRAIT() [30/55]

◆ MAKE_GUID_TRAIT() [31/55]

◆ MAKE_GUID_TRAIT() [32/55]

◆ MAKE_GUID_TRAIT() [33/55]

◆ MAKE_GUID_TRAIT() [34/55]

◆ MAKE_GUID_TRAIT() [35/55]

◆ MAKE_GUID_TRAIT() [36/55]

◆ MAKE_GUID_TRAIT() [37/55]

◆ MAKE_GUID_TRAIT() [38/55]

◆ MAKE_GUID_TRAIT() [39/55]

◆ MAKE_GUID_TRAIT() [40/55]

◆ MAKE_GUID_TRAIT() [41/55]

◆ MAKE_GUID_TRAIT() [42/55]

◆ MAKE_GUID_TRAIT() [43/55]

◆ MAKE_GUID_TRAIT() [44/55]

◆ MAKE_GUID_TRAIT() [45/55]

◆ MAKE_GUID_TRAIT() [46/55]

◆ MAKE_GUID_TRAIT() [47/55]

◆ MAKE_GUID_TRAIT() [48/55]

◆ MAKE_GUID_TRAIT() [49/55]

◆ MAKE_GUID_TRAIT() [50/55]

◆ MAKE_GUID_TRAIT() [51/55]

◆ MAKE_GUID_TRAIT() [52/55]

◆ MAKE_GUID_TRAIT() [53/55]

◆ MAKE_GUID_TRAIT() [54/55]

◆ MAKE_GUID_TRAIT() [55/55]

◆ operator<<()

TC_GAME_API ByteBuffer & operator<< ( ByteBuffer buf,
ObjectGuid const &  guid 
)

Definition at line 270 of file ObjectGuid.cpp.

+ Here is the caller graph for this function:

◆ operator>>()

TC_GAME_API ByteBuffer & operator>> ( ByteBuffer buf,
ObjectGuid guid 
)

Definition at line 271 of file ObjectGuid.cpp.