1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift Collections open source project
//
// Copyright (c) 2022 - 2024 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
//
//===----------------------------------------------------------------------===//
%{
from gyb_utils import *
}%
${autogenerated_warning()}
% for modifier in visibility_levels:
${visibility_boilerplate(modifier)}
${"@usableFromInline" if modifier != "public" else "//@usableFromInline" }
${modifier} func _addressString(for pointer: UnsafeRawPointer) -> String {
let address = UInt(bitPattern: pointer)
return "0x\(String(address, radix: 16))"
}
${"@usableFromInline" if modifier != "public" else "//@usableFromInline" }
${modifier} func _addressString(for object: AnyObject) -> String {
_addressString(for: Unmanaged.passUnretained(object).toOpaque())
}
${"@usableFromInline" if modifier != "public" else "//@usableFromInline" }
${modifier} func _addressString<T: AnyObject>(for object: Unmanaged<T>) -> String {
_addressString(for: object.toOpaque())
}
@inlinable
${modifier} func _arrayDescription<C: Collection>(
for elements: C
) -> String {
var result = "["
var first = true
for item in elements {
if first {
first = false
} else {
result += ", "
}
debugPrint(item, terminator: "", to: &result)
}
result += "]"
return result
}
@inlinable
${modifier} func _dictionaryDescription<Key, Value, C: Collection>(
for elements: C
) -> String where C.Element == (key: Key, value: Value) {
guard !elements.isEmpty else { return "[:]" }
var result = "["
var first = true
for (key, value) in elements {
if first {
first = false
} else {
result += ", "
}
debugPrint(key, terminator: "", to: &result)
result += ": "
debugPrint(value, terminator: "", to: &result)
}
result += "]"
return result
}
% end
${visibility_boilerplate("end")}
|