<commit_before>//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

import SwiftShims

/// Returns 1 if the running OS version is greater than or equal to
/// major.minor.patchVersion and 0 otherwise.
///
/// This is a magic entry point known to the compiler. It is called in
/// generated code for API availability checking.
@warn_unused_result
@_semantics("availability.osversion")
public func _stdlib_isOSVersionAtLeast(
  major: Builtin.Word,
  _ minor: Builtin.Word,
  _ patch: Builtin.Word
) -> Builtin.Int1 {
#if os(OSX) || os(iOS) || os(tvOS) || os(watchOS)
  let runningVersion = _swift_stdlib_operatingSystemVersion()
  let queryVersion = _SwiftNSOperatingSystemVersion(
    majorVersion: Int(major),
    minorVersion: Int(minor),
    patchVersion: Int(patch)
  )

  let result = runningVersion >= queryVersion
  
  return result._value
#else
  // FIXME: As yet, there is no obvious versioning standard for platforms other
  // than Darwin-based OS', so we just assume false for now. 
  // rdar://problem/18881232
  return false._value
#endif
}

extension _SwiftNSOperatingSystemVersion : Comparable { }

@warn_unused_result
public func == (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  return lhs.majorVersion == rhs.majorVersion &&
         lhs.minorVersion == rhs.minorVersion &&
         lhs.patchVersion == rhs.patchVersion
}

/// Lexicographic comparison of version components.
@warn_unused_result
public func < (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  if lhs.majorVersion > rhs.majorVersion {
    return false
  }

  if lhs.majorVersion < rhs.majorVersion {
    return true
  }

  if lhs.minorVersion > rhs.minorVersion {
    return false
  }

  if lhs.minorVersion < rhs.minorVersion {
    return true
  }

  if lhs.patchVersion > rhs.patchVersion {
    return false
  }

  if lhs.patchVersion < rhs.patchVersion {
    return true
  }

  return false
}

@warn_unused_result
public func >= (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  if lhs.majorVersion < rhs.majorVersion {
    return false
  }

  if lhs.majorVersion > rhs.majorVersion {
    return true
  }

  if lhs.minorVersion < rhs.minorVersion {
    return false
  }

  if lhs.minorVersion > rhs.minorVersion {
    return true
  }

  if lhs.patchVersion < rhs.patchVersion {
    return false
  }

  if lhs.patchVersion > rhs.patchVersion {
    return true
  }

  return true
}<commit_msg>Availability: refactoring and tests<commit_after>//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

import SwiftShims

/// Returns 1 if the running OS version is greater than or equal to
/// major.minor.patchVersion and 0 otherwise.
///
/// This is a magic entry point known to the compiler. It is called in
/// generated code for API availability checking.
@warn_unused_result
@_semantics("availability.osversion")
public func _stdlib_isOSVersionAtLeast(
  major: Builtin.Word,
  _ minor: Builtin.Word,
  _ patch: Builtin.Word
) -> Builtin.Int1 {
#if os(OSX) || os(iOS) || os(tvOS) || os(watchOS)
  let runningVersion = _swift_stdlib_operatingSystemVersion()
  let queryVersion = _SwiftNSOperatingSystemVersion(
    majorVersion: Int(major),
    minorVersion: Int(minor),
    patchVersion: Int(patch)
  )

  let result = runningVersion >= queryVersion
  
  return result._value
#else
  // FIXME: As yet, there is no obvious versioning standard for platforms other
  // than Darwin-based OS', so we just assume false for now. 
  // rdar://problem/18881232
  return false._value
#endif
}

extension _SwiftNSOperatingSystemVersion : Comparable { }

@warn_unused_result
public func == (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  return lhs.majorVersion == rhs.majorVersion &&
         lhs.minorVersion == rhs.minorVersion &&
         lhs.patchVersion == rhs.patchVersion
}

/// Lexicographic comparison of version components.
@warn_unused_result
public func < (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  guard lhs.majorVersion == rhs.majorVersion else {
    return lhs.majorVersion < rhs.majorVersion
  }

  guard lhs.minorVersion == rhs.minorVersion else {
    return lhs.minorVersion < rhs.minorVersion
  }

  return lhs.patchVersion < rhs.patchVersion
}

@warn_unused_result
public func >= (
  lhs: _SwiftNSOperatingSystemVersion,
  rhs: _SwiftNSOperatingSystemVersion
) -> Bool {
  guard lhs.majorVersion == rhs.majorVersion else {
    return lhs.majorVersion >= rhs.majorVersion
  }

  guard lhs.minorVersion == rhs.minorVersion else {
    return lhs.minorVersion >= rhs.minorVersion
  }

  return lhs.patchVersion >= rhs.patchVersion
}
{'fraction_non_alphanumeric': 0.14336033814723495, 'fraction_numerical': 0.007396970764353646, 'mean_word_length': 2.8790983606557377, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3383525', 'n_tokens_mistral': 1738, 'n_tokens_neox': 1629, 'n_words': 473}