Skip to content

Commit

Permalink
Merge pull request #5 from YOCKOW/development
Browse files Browse the repository at this point in the history
v3.3.0
  • Loading branch information
YOCKOW committed May 29, 2020
2 parents 900e902 + 6d9ab30 commit 88c3e44
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 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 All @@ -121,6 +126,14 @@ extension TimeSpecification {
/// Double representation of the time.
@inlinable
public var doubleValue: Double { return Double(self.nanoseconds) * 1.0E-9 + Double(self.seconds) }

#if arch(i386) || arch(x86_64)
/// Float80 representation of the time.
@inlinable
public var float80Value: Float80 {
return Float80(self.nanoseconds) * 1.0E-9 + Float80(self.seconds)
}
#endif
}

extension TimeSpecification: CustomStringConvertible, CustomDebugStringConvertible {
Expand Down Expand Up @@ -210,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 88c3e44

Please sign in to comment.