//===--- Bridging/AvailabilityBridging.cpp --------------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2025 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// #include "swift/AST/ASTBridging.h" #include "swift/AST/AvailabilitySpec.h" #include "swift/AST/PlatformKindUtils.h" using namespace swift; //===----------------------------------------------------------------------===// // MARK: BridgedAvailabilityMacroMap //===----------------------------------------------------------------------===// bool BridgedAvailabilityMacroMap_hasName(BridgedAvailabilityMacroMap map, BridgedStringRef name) { return map.unbridged()->hasMacroName(name.unbridged()); } bool BridgedAvailabilityMacroMap_hasNameAndVersion( BridgedAvailabilityMacroMap map, BridgedStringRef name, BridgedVersionTuple version) { return map.unbridged()->hasMacroNameVersion(name.unbridged(), version.unbridged()); } BridgedArrayRef BridgedAvailabilityMacroMap_getSpecs(BridgedAvailabilityMacroMap map, BridgedStringRef name, BridgedVersionTuple version) { return map.unbridged()->getEntry(name.unbridged(), version.unbridged()); } //===----------------------------------------------------------------------===// // MARK: PlatformKind //===----------------------------------------------------------------------===// BridgedOptionalPlatformKind PlatformKind_fromString(BridgedStringRef cStr) { auto optKind = platformFromString(cStr.unbridged()); if (!optKind) { return BridgedOptionalPlatformKind(); } return *optKind; } BridgedOptionalPlatformKind PlatformKind_fromIdentifier(Identifier ident) { return PlatformKind_fromString(ident.str()); } //===----------------------------------------------------------------------===// // MARK: AvailabilitySpec //===----------------------------------------------------------------------===// BridgedAvailabilitySpec BridgedAvailabilitySpec_createWildcard(BridgedASTContext cContext, SourceLoc loc) { return AvailabilitySpec::createWildcard(cContext.unbridged(), loc); } BridgedAvailabilitySpec BridgedAvailabilitySpec_createForDomainIdentifier( BridgedASTContext cContext, Identifier name, SourceLoc loc, BridgedVersionTuple cVersion, SourceRange versionRange) { return AvailabilitySpec::createForDomainIdentifier( cContext.unbridged(), name, loc, cVersion.unbridged(), versionRange); } BridgedAvailabilitySpec BridgedAvailabilitySpec_clone(BridgedAvailabilitySpec spec, BridgedASTContext cContext) { return spec.unbridged()->clone(cContext.unbridged()); } void BridgedAvailabilitySpec_setMacroLoc(BridgedAvailabilitySpec spec, SourceLoc loc) { spec.unbridged()->setMacroLoc(loc); } BridgedAvailabilityDomainOrIdentifier BridgedAvailabilitySpec_getDomainOrIdentifier(BridgedAvailabilitySpec spec) { return spec.unbridged()->getDomainOrIdentifier(); } SourceRange BridgedAvailabilitySpec_getSourceRange(BridgedAvailabilitySpec spec) { return spec.unbridged()->getSourceRange(); } bool BridgedAvailabilitySpec_isWildcard(BridgedAvailabilitySpec spec) { return spec.unbridged()->isWildcard(); } BridgedVersionTuple BridgedAvailabilitySpec_getRawVersion(BridgedAvailabilitySpec spec) { return spec.unbridged()->getRawVersion(); } SourceRange BridgedAvailabilitySpec_getVersionRange(BridgedAvailabilitySpec spec) { return spec.unbridged()->getVersionSrcRange(); }