1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the SwiftNIO open source project
//
// Copyright (c) 2023 Apple Inc. and the SwiftNIO project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of SwiftNIO project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(Linux) || os(Android)
/// Represents the number of bytes.
public struct ByteCount: Hashable, Sendable {
/// The number of bytes
public var bytes: Int64
/// Returns a ``ByteCount`` with a given number of bytes
/// - Parameter count: The number of bytes
public static func bytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: count)
}
/// Returns a ``ByteCount`` with a given number of kilobytes
///
/// One kilobyte is 1000 bytes.
///
/// - Parameter count: The number of kilobytes
public static func kilobytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1000 * count)
}
/// Returns a ``ByteCount`` with a given number of megabytes
///
/// One megabyte is 1,000,000 bytes.
///
/// - Parameter count: The number of megabytes
public static func megabytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1000 * 1000 * count)
}
/// Returns a ``ByteCount`` with a given number of gigabytes
///
/// One gigabyte is 1,000,000,000 bytes.
///
/// - Parameter count: The number of gigabytes
public static func gigabytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1000 * 1000 * 1000 * count)
}
/// Returns a ``ByteCount`` with a given number of kibibytes
///
/// One kibibyte is 1024 bytes.
///
/// - Parameter count: The number of kibibytes
public static func kibibytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1024 * count)
}
/// Returns a ``ByteCount`` with a given number of mebibytes
///
/// One mebibyte is 10,485,760 bytes.
///
/// - Parameter count: The number of mebibytes
public static func mebibytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1024 * 1024 * count)
}
/// Returns a ``ByteCount`` with a given number of gibibytes
///
/// One gibibyte is 10,737,418,240 bytes.
///
/// - Parameter count: The number of gibibytes
public static func gibibytes(_ count: Int64) -> ByteCount {
return ByteCount(bytes: 1024 * 1024 * 1024 * count)
}
}
#endif
|