struct ManagedBufferPointer<Value, Element>
Inheritance |
Equatable
View Protocol Hierarchy →
|
---|---|
Import | import Swift |
Initializers
Create with new storage containing an initial Value
and space
for at least minimumCapacity
element
s.
bufferClass
: The class of the object used for storage.
minimumCapacity
: The minimum number of Element
s that
must be able to be stored in the new buffer.
initialValue
: A function that produces the initial
Value
instance stored in the buffer, given the buffer
object and a function that can be called on it to get the actual
number of allocated elements.
Requires: minimumCapacity >= 0
, and the type indicated by
bufferClass
is a non-@objc
class with no declared stored
properties. The deinit
of bufferClass
must destroy its
stored Value
and any constructed Element
s.
Declaration
init(bufferClass: AnyClass, minimumCapacity: Int, initialValue: (buffer: AnyObject, allocatedCount: (AnyObject) -> Int) -> Value)
Manage the given buffer
.
Requires: buffer
is an instance of a non-@objc
class whose
deinit
destroys its stored Value
and any constructed
Element
s.
Declaration
init(unsafeBufferObject buffer: AnyObject)
Instance Variables
The actual number of elements that can be stored in this object.
This value may be nontrivial to compute; it is usually a good idea to store this information in the "value" area when an instance is created.
Declaration
var allocatedElementCount: Int { get }
Returns the object instance being used for storage.
Declaration
var buffer: AnyObject { get }
Instance Methods
Returns true
iff either self
holds the only strong reference
to its buffer or the pinned has been 'pinned'.
See isUniquelyReferenced
for details.
Declaration
mutating func holdsUniqueOrPinnedReference() -> Bool
Returns true
iff self
holds the only strong reference to its buffer.
See isUniquelyReferenced
for details.
Declaration
mutating func holdsUniqueReference() -> Bool
Call body
with an UnsafeMutablePointer
to the Element
storage.
Note: This pointer is only valid for the duration of the
call to body
.
Declaration
func withUnsafeMutablePointerToElements<R>(body: (UnsafeMutablePointer<Element>) -> R) -> R
Call body
with an UnsafeMutablePointer
to the stored
Value
.
Note: This pointer is only valid
for the duration of the call to body
.
Declaration
func withUnsafeMutablePointerToValue<R>(body: (UnsafeMutablePointer<Value>) -> R) -> R
Call body
with UnsafeMutablePointer
s to the stored Value
and raw Element
storage.
Note: These pointers are only valid for the duration of the
call to body
.
Declaration
func withUnsafeMutablePointers<R>(body: (UnsafeMutablePointer<Value>, UnsafeMutablePointer<Element>) -> R) -> R
Contains a buffer object, and provides access to an instance of
Value
and contiguous storage for an arbitrary number ofElement
instances stored in that buffer.For most purposes, the
ManagedBuffer
class works fine for this purpose, and can simply be used on its own. However, in cases where objects of various different classes must serve as storage,ManagedBufferPointer
is needed.A valid buffer class is non-
@objc
, with no declared stored properties. Itsdeinit
must destroy its storedValue
and any constructedElement
s.Example Buffer Class