UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HashBuilder.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Map.h"
8#include "Hash/CityHash.h"
9
18{
19public:
21 : Hash(~InHash)
22 {}
23
24 inline FHashBuilder& AppendRaw(const void* Data, int64 Num)
25 {
26 Hash = HashCombineFast(Hash, GetTypeHash(CityHash64(static_cast<const char*>(Data), static_cast<int32>(Num))));
27 return *this;
28 }
29
30 template <typename T>
32 {
33 return AppendRaw(&InData, sizeof(T));
34 }
35
36 template <typename T>
37 inline FHashBuilder& Append(const T& InData)
38 {
40 {
41 Hash = HashCombineFast(Hash, GetTypeHash(InData));
42 return *this;
43 }
44 else
45 {
46 return AppendRaw(InData);
47 }
48 }
49
50 template <typename T>
52 {
53 for (const T& Value: InArray)
54 {
56 }
57 return *this;
58 }
59
60 template <typename T>
62 {
63 for (const T& Value: InSet)
64 {
66 }
67 return *this;
68 }
69
70 template <typename T, typename U>
72 {
73 for (const TPair<T, U>& Value: InMap)
74 {
75 Append(Value.Key);
76 Append(Value.Value);
77 }
78 return *this;
79 }
80
81 template <typename T>
86
88 {
89 return ~Hash;
90 }
91
92private:
93 uint32 Hash;
94};
uint64 CityHash64(const char *s, uint32 len)
Definition CityHash.cpp:388
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Num
Definition MetalRHIPrivate.h:234
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition HashBuilder.h:18
UE_FORCEINLINE_HINT FHashBuilder & operator<<(const T &InData)
Definition HashBuilder.h:82
UE_FORCEINLINE_HINT TEnableIf< TIsPODType< T >::Value, FHashBuilder & >::Type AppendRaw(const T &InData)
Definition HashBuilder.h:31
FHashBuilder & AppendRaw(const void *Data, int64 Num)
Definition HashBuilder.h:24
FHashBuilder & Append(const TArray< T > &InArray)
Definition HashBuilder.h:51
FHashBuilder & Append(const TSet< T > &InSet)
Definition HashBuilder.h:61
UE_FORCEINLINE_HINT uint32 GetHash() const
Definition HashBuilder.h:87
FHashBuilder & Append(const TMap< T, U > &InMap)
Definition HashBuilder.h:71
FHashBuilder(uint32 InHash=0)
Definition HashBuilder.h:20
FHashBuilder & Append(const T &InData)
Definition HashBuilder.h:37
Definition Array.h:670
Definition EnableIf.h:20
Definition UnrealString.h.inl:34
Definition Tuple.h:652