Files
SWCompression/Sources/BZip2/BZip2+BlockSize.swift
2026-02-18 12:21:57 +08:00

65 lines
1.4 KiB
Swift

// Copyright (c) 2026 Timofey Solomko
// Licensed under MIT License
//
// See LICENSE for license information
extension BZip2 {
/// Represents the size of the blocks in which data is split during BZip2 compression.
public enum BlockSize: Int {
/// 100 KB.
case one = 1
/// 200 KB.
case two = 2
/// 300 KB.
case three = 3
/// 400 KB.
case four = 4
/// 500 KB.
case five = 5
/// 600 KB.
case six = 6
/// 700 KB.
case seven = 7
/// 800 KB.
case eight = 8
/// 900 KB.
case nine = 9
init?(_ headerByte: UInt8) {
switch headerByte {
case 0x31:
self = .one
case 0x32:
self = .two
case 0x33:
self = .three
case 0x34:
self = .four
case 0x35:
self = .five
case 0x36:
self = .six
case 0x37:
self = .seven
case 0x38:
self = .eight
case 0x39:
self = .nine
default:
return nil
}
}
var headerByte: Int {
return self.rawValue + 0x30
}
var sizeInKilobytes: Int {
return self.rawValue * 100
}
}
}