Files
swift-mirror/lib/AST/Bridging/AvailabilityBridging.cpp
2025-07-15 21:33:28 +01:00

109 lines
3.9 KiB
C++

//===--- 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();
}