forked from dolphin-emu/dolphin
		
	
		
			
	
	
		
			25 lines
		
	
	
		
			535 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			535 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								// This file is under the public domain.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <cstddef>
							 | 
						||
| 
								 | 
							
								#include <type_traits>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Common
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								template <typename T>
							 | 
						||
| 
								 | 
							
								constexpr T AlignUp(T value, size_t size)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  static_assert(std::is_unsigned<T>(), "T must be an unsigned value.");
							 | 
						||
| 
								 | 
							
								  return static_cast<T>(value + (size - value % size) % size);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <typename T>
							 | 
						||
| 
								 | 
							
								constexpr T AlignDown(T value, size_t size)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  static_assert(std::is_unsigned<T>(), "T must be an unsigned value.");
							 | 
						||
| 
								 | 
							
								  return static_cast<T>(value - value % size);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}  // namespace Common
							 |