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
 |