struct
ManagedBufferPointer
Contains a buffer object, and provides access to an instance of
Header
and contiguous storage for an arbitrary number of
Element
instances stored in that buffer.
Inheritance | Equatable |
---|
Initializers
Create with new storage containing an initial Header
and space
for at least minimumCapacity
element
s.
- parameter bufferClass: The class of the object used for storage.
- parameter minimumCapacity: The minimum number of
Element
s that must be able to be stored in the new buffer.
- parameter factory: A function that produces the initial
Header
instance stored in the buffer, given thebuffer
object and a function that can be called on it to get the actual number of allocated elements.
Precondition:
minimumCapacity >= 0
, and the type indicated bybufferClass
is a non-@objc
class with no declared stored properties. Thedeinit
ofbufferClass
must destroy its storedHeader
and any constructedElement
s.
Declaration
Manage the given buffer
.
Precondition:
buffer
is an instance of a non-@objc
class whosedeinit
destroys its storedHeader
and any constructedElement
s.
Declaration
@
inlinable
public
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 "header" area when an instance is created.
Declaration
var
capacity
:
Int
Instance Methods
Returns true
if self
holds the only strong reference to its
buffer. Otherwise, returns false
.
See isKnownUniquelyReferenced
for details.
Declaration
@
inlinable
public
mutating
func
isUniqueReference
() -
>
Bool
Call body
with an UnsafeMutablePointer
to the Element
storage.
Note: This pointer is valid only for the duration of the call to
body
.
Declaration
@
inlinable
public
func
withUnsafeMutablePointerToElements
<
R
>
(
_
body
: (
UnsafeMutablePointer
<
Element
>
)
throws
-
>
R
)
rethrows
-
>
R
Call body
with an UnsafeMutablePointer
to the stored
Header
.
Note: This pointer is valid only for the duration of the call to
body
.
Declaration
@
inlinable
public
func
withUnsafeMutablePointerToHeader
<
R
>
(
_
body
: (
UnsafeMutablePointer
<
Header
>
)
throws
-
>
R
)
rethrows
-
>
R
Call body
with UnsafeMutablePointer
s to the stored Header
and raw Element
storage.
Note: These pointers are valid only for the duration of the call to
body
.
Declaration
@
inlinable
public
func
withUnsafeMutablePointers
<
R
>
(
_
body
: (
UnsafeMutablePointer
<
Header
>
,
UnsafeMutablePointer
<
Element
>
)
throws
-
>
R
)
rethrows
-
>
R
Type Methods
Declaration
public
static
func
!=(
lhs
:
Self
,
rhs
:
Self
) -
>
Bool
Returns a Boolean value indicating whether two values are equal.
Equality is the inverse of inequality. For any values a
and b
,
a == b
implies that a != b
is false
.
Declaration
@
inlinable
public
static
func
==(
lhs
:
ManagedBufferPointer
<
Header
,
Element
>
,
rhs
:
ManagedBufferPointer
<
Header
,
Element
>
) -
>
Bool
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 storedHeader
and any constructedElement
s.Example Buffer Class