Skip to content

Commit

Permalink
Add type aliases of TimeSpecification.
Browse files Browse the repository at this point in the history
  • Loading branch information
YOCKOW committed May 28, 2020
1 parent 1fde22b commit 6d9ab30
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions Sources/TimeSpecification/TimeSpecification.swift
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ extension TimeSpecification: ExpressibleByFloatLiteral {
let double_seconds = floor(value)
self.init(seconds: Int64(double_seconds), nanoseconds: Int32((value - double_seconds) * 1.0E+9))
}

/// Creates an instance initialized to the specified floating-point value.
public init<F>(_ value: F) where F: BinaryFloatingPoint {
self.init(floatLiteral: FloatLiteralType(value))
}
}

extension TimeSpecification {
Expand Down Expand Up @@ -218,6 +223,23 @@ extension TimeSpecification {
}
}

/// Type used to represent a specific point in time relative
/// to the absolute reference date of 1 Jan 2001 00:00:00 GMT.
public typealias NanosecondAbsoluteTime = TimeSpecification

/// Type used to represent elapsed time in naoseconds.
public typealias NanosecondTimeInterval = TimeSpecification

extension TimeSpecification {
/// The number of nanoseconds from 1 January 1970 to the reference date, 1 January 2001.
public static let timeIntervalBetween1970AndReferenceDate = NanosecondTimeInterval(Date.timeIntervalBetween1970AndReferenceDate)

/// The interval between 00:00:00 UTC on 1 January 2001 and the current date and time.
public static var timeIntervalSinceReferenceDate: NanosecondAbsoluteTime {
return TimeSpecification(clock: .calendar) - TimeSpecification.timeIntervalBetween1970AndReferenceDate
}
}

extension TimeSpecification {
/// Measure a processing time of the closure.
///
Expand Down

0 comments on commit 6d9ab30

Please sign in to comment.