32 lines
		
	
	
		
			722 B
		
	
	
	
		
			Swift
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			722 B
		
	
	
	
		
			Swift
		
	
	
	
import Foundation
 | 
						|
 | 
						|
extension Int {
 | 
						|
    
 | 
						|
    /// Moves the current int into the nearest power of two
 | 
						|
    ///
 | 
						|
    /// This is used since the UnsafeMutableRawPointer will face issues when writing/reading
 | 
						|
    /// if the buffer alignment exceeds that actual size of the buffer
 | 
						|
    var convertToPowerofTwo: Int {
 | 
						|
        guard self > 0 else { return 1 }
 | 
						|
        var n = UOffset(self)
 | 
						|
        
 | 
						|
        #if arch(arm) || arch(i386)
 | 
						|
        let max = UInt32(Int.max)
 | 
						|
        #else
 | 
						|
        let max = UInt32.max
 | 
						|
        #endif
 | 
						|
        
 | 
						|
        n -= 1
 | 
						|
        n |= n >> 1
 | 
						|
        n |= n >> 2
 | 
						|
        n |= n >> 4
 | 
						|
        n |= n >> 8
 | 
						|
        n |= n >> 16
 | 
						|
        if n != max {
 | 
						|
            n += 1
 | 
						|
        }
 | 
						|
 | 
						|
        return Int(n)
 | 
						|
    }
 | 
						|
}
 |