typealias UnsafeRawBufferPointer.Element
typealias UnsafeRawBufferPointer.Index
typealias UnsafeRawBufferPointer.Indices
typealias UnsafeRawBufferPointer.SubSequence
Availability
Technology
@frozen struct UnsafeRawBufferPointer
You can use an Unsafe
instance in low-level operations to eliminate uniqueness checks and release mode bounds checks. Bounds checks are always performed in debug mode.
あなたは、Unsafe
インスタンスを低水準演算において使用することで、固有性検査とリリースモード境界検査を省くことができます。境界検査は、デバッグモードにおいて常に実行されます。
An Unsafe
instance is a view of the raw bytes in a region of memory. Each byte in memory is viewed as a UInt8
value independent of the type of values held in that memory. Reading from memory through a raw buffer is an untyped operation.
Unsafe
インスタンスは、メモリのある領域の中の生のバイトのある見方(ビュー)です。メモリ中の各バイトは、そのメモリ中に保持される値の型に影響を受けないUInt8
値として眺められます。ある生のバッファを通してメモリから読み込むことは、型無し演算のひとつです。
In addition to its collection interface, an Unsafe
instance also supports the load(from
method provided by Unsafe
, including bounds checks in debug mode.
それのコレクションインターフェイスに加えて、Unsafe
インスタンスはまた、load(from
メソッドをUnsafe
によって提供されてサポートし、デバッグモードにおける境界検査を含んでいます。
To access the underlying memory through typed operations, the memory must be bound to a trivial type. 型付演算を通して基礎をなすメモリにアクセスするには、メモリは自明型に束縛されなければなりません。
Note 注意
A trivial type can be copied bit for bit with no indirection or reference-counting operations. Generally, native Swift types that do not contain strong or weak references or other forms of indirection are trivial, as are imported C structs and enums. Copying memory that contains values of nontrivial types can only be done safely with a typed pointer. Copying bytes directly from nontrivial, in-memory values does not produce valid copies and can only be done by calling a C API, such as memmove()
.
自明な型は、ビット対ビットでコピーされることが、何らかの間接参照または参照カウント操作なしで可能です。一般に、生粋のSwift型で強いまたは弱い参照または他形式の間接参照を含まないものは自明です、インポートされたCのstructとenumのように。自明でない型の値を含むメモリをコピーすることは、型付ポインタでのみ安全になされることが可能です。自明でない、メモリ中の値から直接にバイトをコピーすることは、有効なコピーを生成しません、そしてmemmove()
のようなC APIを呼び出すことでのみ可能です。
An Unsafe
instance is a view into memory and does not own the memory that it references. Copying a variable or constant of type Unsafe
does not copy the underlying memory. However, initializing another collection with an Unsafe
instance copies bytes out of the referenced memory and into the new collection.
Unsafe
インスタンスは、メモリに対するある見方(ビュー)であり、それが参照するメモリ自体ではありません。型Unsafe
の変数や定数をコピーすることは、基礎をなすメモリをコピーしません。しかしながら、別のコレクションをUnsafe
インスタンスで初期化することは、バイトを参照されたメモリから外へそして新しいコレクションへとコピーします、
The following example uses some
, an Unsafe
instance, to demonstrate the difference between assigning a buffer pointer and using a buffer pointer as the source for another collection’s elements. Here, the assignment to dest
creates a new, nonowning buffer pointer covering the first n
bytes of the memory that some
references—nothing is copied:
以下の例はsome
、Unsafe
インスタンスを使って、バッファポインタの割り当することとバッファポインタを別のコレクションの要素のソースとして使うことの間の違いを実演します。ここで、dest
への割り当ては、some
が参照するメモリの最初のn
バイトを変換して、新しい、非所有のバッファポインタを作成します — コピーされるものは何もありません:
Next, the bytes referenced by dest
are copied into byte
, a new [UInt8]
array, and then the remainder of some
is appended to byte
:
次に、dest
によって参照されるバイトはbyte
、新しい[UInt8]
配列へとコピーされます、そしてそれからsome
の残りはbyte
に加えられます:
typealias UnsafeRawBufferPointer.Element
typealias UnsafeRawBufferPointer.Index
typealias UnsafeRawBufferPointer.Indices
typealias UnsafeRawBufferPointer.SubSequence
init<T>(UnsafeMutableBufferPointer<T>)
init<T>(UnsafeBufferPointer<T>)
init(UnsafeRawBufferPointer)
init(UnsafeMutableRawBufferPointer)
init(rebasing: Slice<UnsafeMutableRawBufferPointer>)
init(rebasing: Slice<UnsafeRawBufferPointer>)
init(start: UnsafeRawPointer?, count: Int)
var baseAddress : UnsafeRawPointer?
var count: Int
var debugDescription : String
var endIndex : UnsafeRawBufferPointer.Index
var first: UInt8?
var indices: UnsafeRawBufferPointer.Indices
var isEmpty : Bool
var last: UInt8?
var lazy: LazySequence<UnsafeRawBufferPointer>
map
and filter
, are implemented lazily.
このシーケンスと同じ要素を含んでいるシーケンス、しかしそれの上で何らかの演算、例えばmap
やfilter
が遅延に実装されます。
var startIndex : UnsafeRawBufferPointer.Index
var underestimatedCount : Int
func allSatisfy ((UInt8) -> Bool) -> Bool
func bindMemory <T>(to: T.Type) -> UnsafeBufferPointer<T>
func compactMap <ElementOfResult>((UInt8) -> ElementOfResult?) -> [ElementOfResult]
nil
results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果で非-nil
のものを含んでいる配列を返します。
func contains(UInt8) -> Bool
func contains(where: (UInt8) -> Bool) -> Bool
func deallocate()
func difference<C>(from: C) -> CollectionDifference<UInt8>
func difference<C>(from: C, by: (C.Element, UInt8) -> Bool) -> CollectionDifference<UInt8>
func drop(while: (UInt8) -> Bool) -> Slice<UnsafeRawBufferPointer>
predicate
returns true
and returning the remaining elements.
predicate
がtrue
を返す間は要素を飛ばして残りの要素を返すことによって、ある下位シーケンスを返します。
func dropFirst (Int) -> Slice<UnsafeRawBufferPointer>
func dropLast (Int) -> Slice<UnsafeRawBufferPointer>
func elementsEqual <OtherSequence>(OtherSequence) -> Bool
func elementsEqual <OtherSequence>(OtherSequence, by: (UInt8, OtherSequence.Element) -> Bool) -> Bool
func enumerated() -> EnumeratedSequence<UnsafeRawBufferPointer>
func filter((UInt8) -> Bool) -> [UInt8]
func first(where: (UInt8) -> Bool) -> UInt8?
func firstIndex (of: UInt8) -> Int?
func firstIndex (where: (UInt8) -> Bool) -> Int?
func flatMap <SegmentOfResult>((UInt8) -> SegmentOfResult) -> [SegmentOfResult.Element]
func forEach ((UInt8) -> Void)
for
-in
loop.
指定されたクロージャをそのシーケンスの各要素上でfor
-in
ループと同じ順番で呼び出します。
func formIndex (inout Int, offsetBy : Int)
func formIndex (inout Int, offsetBy : Int, limitedBy : Int) -> Bool
func formIndex (after: inout Int)
func formIndex (before: inout Int)
func index(Int, offsetBy : Int, limitedBy : Int) -> Int?
func index(of: UInt8) -> Int?
func last(where: (UInt8) -> Bool) -> UInt8?
func lastIndex (of: UInt8) -> Int?
func lastIndex (where: (UInt8) -> Bool) -> Int?
func lexicographicallyPrecedes <OtherSequence>(OtherSequence) -> Bool
<
) to compare elements.
そのシーケンスが別のシーケンスの前に来るかどうかを、ある語彙筆記的順序(字典)順序において、より小さい演算子(<
)を使って要素を比較して、指し示すブール値を返します。
func lexicographicallyPrecedes <OtherSequence>(OtherSequence, by: (UInt8, UInt8) -> Bool) -> Bool
func load<T>(fromByteOffset : Int, as: T.Type) -> T
func makeIterator () -> UnsafeRawBufferPointer.Iterator
func map<T>((UInt8) -> T) -> [T]
func max() -> UInt8?
func max(by: (UInt8, UInt8) -> Bool) -> UInt8?
func min() -> UInt8?
func min(by: (UInt8, UInt8) -> Bool) -> UInt8?
func prefix(Int) -> Slice<UnsafeRawBufferPointer>
func prefix(through: Int) -> Slice<UnsafeRawBufferPointer>
func prefix(upTo : Int) -> Slice<UnsafeRawBufferPointer>
func prefix(while: (UInt8) -> Bool) -> Slice<UnsafeRawBufferPointer>
predicate
returns false
and skipping the remaining elements.
predicate
がfalse
を返すまで冒頭の要素を含んでいて残りの要素を飛ばしている、ある下位シーケンスを返します。
func randomElement () -> UInt8?
func randomElement <T>(using: inout T) -> UInt8?
func reduce<Result>(Result, (Result, UInt8) -> Result) -> Result
func reduce<Result>(into: Result, (inout Result, UInt8) -> ()) -> Result
func reversed() -> ReversedCollection<UnsafeRawBufferPointer>
func shuffled() -> [UInt8]
func shuffled<T>(using: inout T) -> [UInt8]
func sorted() -> [UInt8]
func sorted(by: (UInt8, UInt8) -> Bool) -> [UInt8]
func split(maxSplits : Int, omittingEmptySubsequences : Bool, whereSeparator : (UInt8) -> Bool) -> [Slice<UnsafeRawBufferPointer>]
func split(separator: UInt8, maxSplits : Int, omittingEmptySubsequences : Bool) -> [Slice<UnsafeRawBufferPointer>]
func starts<PossiblePrefix>( with: PossiblePrefix) -> Bool
func starts<PossiblePrefix>( with: PossiblePrefix, by: (UInt8, PossiblePrefix.Element) -> Bool) -> Bool
func suffix(Int) -> Slice<UnsafeRawBufferPointer>
func suffix(from: Int) -> Slice<UnsafeRawBufferPointer>
func withContiguousStorageIfAvailable <R>((UnsafeBufferPointer<UInt8>) -> R) -> R?
subscript(Int) -> UnsafeRawBufferPointer.Element
UInt8
value.
与えられたオフセットでメモリ領域においてUInt8
値としてバイトにアクセスします。
subscript<R>(R) -> Slice<UnsafeRawBufferPointer>
subscript(Range<Int>) -> Slice<UnsafeRawBufferPointer>
subscript(Range<Int>) -> UnsafeRawBufferPointer.SubSequence
struct UnsafeRawBufferPointer.Iterator
struct UnsafeRawPointer
struct UnsafeMutableRawPointer
struct UnsafeMutableRawBufferPointer