UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AlignmentTemplates.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
8
17template <typename T>
18inline constexpr T Align(T Val, uint64 Alignment)
19{
20 static_assert(TIsIntegral<T>::Value || TIsPointer<T>::Value, "Align expects an integer or pointer type");
21
22 return (T)(((uint64)Val + Alignment - 1) & ~(Alignment - 1));
23}
24
33template <typename T>
34inline constexpr T AlignDown(T Val, uint64 Alignment)
35{
36 static_assert(TIsIntegral<T>::Value || TIsPointer<T>::Value, "AlignDown expects an integer or pointer type");
37
38 return (T)(((uint64)Val) & ~(Alignment - 1));
39}
40
49template <typename T>
50inline constexpr bool IsAligned(T Val, uint64 Alignment)
51{
52 static_assert(TIsIntegral<T>::Value || TIsPointer<T>::Value, "IsAligned expects an integer or pointer type");
53
54 return !((uint64)Val & (Alignment - 1));
55}
56
65template <typename T>
66inline constexpr T AlignArbitrary(T Val, uint64 Alignment)
67{
68 static_assert(TIsIntegral<T>::Value || TIsPointer<T>::Value, "AlignArbitrary expects an integer or pointer type");
69
70 return (T)((((uint64)Val + Alignment - 1) / Alignment) * Alignment);
71}
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
constexpr T AlignDown(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:34
constexpr T AlignArbitrary(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:66
constexpr bool IsAligned(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:50
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
Definition IsIntegral.h:12
Definition IsPointer.h:12