-
Notifications
You must be signed in to change notification settings - Fork 0
swift_arrayAssignWithCopyBackToFront(________)
The type UnsafeRawPointer
in the case of the array function signatures
actually represent OpaqueValue*
. Until That is properly bridged over,
it is what it is. Any.Type
Represents the self parameter or Metadata
.
This follows the same principle. Until the proper Array metadata is bridged,
we leave it be. This may not be the best solution so every suggestion
is appreciated
@_silgen_name("swift_arrayAssignWithCopyBackToFront")
public func swift_arrayAssignWithCopyBackToFront(
_ destination: UnsafeRawPointer,
_ source: UnsafeRawPointer,
_ count: Int,
_ self: Any.Type
)
All the array functions are wrapping the singular function array_copy_operation
.
The array_copy_operation
function acts as one size fits all for all initializing
and copying functions for arrays. There are three things that determine the route
that it takes to copy values or initialize them from one array to another. These
are (1) The destination operation, (2) the source operation, and finally (3) the
copy kind. Before explaining what they do, take note that the value passed in as
self
is the ValueWitnessTable
that will be used for the operations.
What the destination operation determines is wether the ValueWitnessTable
will
be created or whether it will be copied into. These are determined by the c++
template values ArrayDest::Init
, and ArrayDest::Assign
respectively. The source
operation determines how the data will be taken from the source object. This can
be described with the C++ template types ArraySource::Copy
and ArraySource::Take
.
Finally, the copy kind determines how the values from the source will be copied into
the destination object. This is described with the types ArrayCopy::NoAlias
,
ArrayCopy::FrontToBack
and ArrayCopy::BackToFront
. What's interesting about
this specifically, is that these will apply to both types of ValueWitnessTable
and regular POD (Plain Old Data) types, but with functions like memmove
and
memcopy
in the case of those other types. For the POD types, if the copy kind is
ArrayCopy::NoAlias
the function used is memcpy
while the other two used memmove
.
The functions for this are named in a way that allows you to specify the C++ template values. Here's an abstract representation of the initializing functions and the assigning functions:
`array(Init|Assign)With(Copy|Take)(NoAlias|FrontToBack|BackToFront)(arguments...)`
the arrayDestroy function does not follow these rules.
Using an already existant array and associated heap object, this
assigns values from the source object object to the destination
by copying them from the back of the object to the front. When
the witness table is POD it uses memmove
for the memory operation.
When not POD, however, it will default to a witness function.
-
C++ Template Values:
ArrayDest::Assign
ArraySource::Copy
ArrayCopy::BackToFront
- destination: The destination heap object.
- source: The source heap object.
- count: Amount of items in the source object.
- self: The destinations initialized metadata.
Generated at 2022-06-15T08:34:33-0700 using swift-doc 1.0.0-rc.1.
Types
- ClassDescriptor
- ClassDescriptor.InternalRepresentation
- ClassMetadata
- ClassMetadata.Flags
- ClassMetadata.MetadataStructure
- ContextDescriptor
- ContextDescriptor.Flags
- ContextDescriptor.InternalRepresentation
- ContextDescriptor.Kind
- EnumDescriptor
- EnumDescriptor.InternalRepresentation
- EnumMetadata
- EnumMetadata.MetadataStructure
- ExistentialMetadata
- ExistentialMetadata.Flags
- ExistentialMetadata.InternalRepresentation
- ExistentialMetadata.SpecialProtocol
- ExtensionDescriptor
- ExtensionDescriptor.InternalRepresentation
- FunctionMetadata
- FunctionMetadata.MetadataStructure
- GenericContextDescriptor
- GenericContextDescriptor.GenericParameterDescriptor
- GenericContextDescriptor.GenericPrarameterKind
- GenericContextDescriptor.InternalRepresentation
- GenericRequirementDescriptor
- GenericRequirementDescriptor.Flags
- GenericRequirementDescriptor.GenericRequirementKind
- GenericRequirementDescriptor.GenericRequirementLayoutKind
- GenericRequirementDescriptor.InternalRepresentation
- ModuleDescriptor
- ModuleDescriptor.InternalRepresentation
- PointerAuthentication
- ProtocolDescriptor
- ProtocolDescriptor.Flags
- ProtocolDescriptor.InternalRepresentation
- ProtocolMetadata
- ProtocolMetadata.MetadataStructure
- ProtocolRequirement
- ProtocolRequirement.Flags
- ProtocolRequirement.InternalRepresentation
- ProtocolRequirement.Kind
- RuntimeModifiableBuilder
- SignedPointer
- StructDescriptor
- StructDescriptor.InternalRepresentation
- StructMetadata
- StructMetadata.MetadataStructure
- TupleElementMetadata
- TupleElementMetadata.InternalRepresentation
- TupleMetadata
- TupleMetadata.MetadataStructure
- TupleMetadata.TupleElement
- TypeDescriptor
- TypeDescriptor.Flags
- TypeDescriptor.InternalRepresentation
- TypeDescriptor.TypeReferenceKind
- TypeMetadataKind
- ValueWitnessTable
- ValueWitnessTable.Flags
- ValueWitnessTable.InternalRepresentation
Protocols
Global Typealiases
Global Functions
- _Block_copy(_:)
- _Block_release(_:)
- swift_allocBox(_:)
- swift_allocObject(_:_:_:)
- swift_allocateGenericClassMetadata(_:_:_:)
- swift_allocateGenericValueMetadata(_:_:_:_:)
- swift_arrayAssignWithCopyBackToFront(_:_:_:_:)
- swift_arrayAssignWithCopyFrontToBack(_:_:_:_:)
- swift_arrayAssignWithCopyNoAlias(_:_:_:_:)
- swift_arrayDestroy(_:_:_:)
- swift_arrayInitWithCopy(_:_:_:_:)
- swift_autoDiffAllocateSubContext(_:_:)
- swift_autoDiffCreateLinearMapContext(_:)
- swift_autoDiffProjectTopLevelSubcontext(_:)
- swift_beginAccess(_:_:_:)
- swift_bridgeObjectRelease(_:)
- swift_bridgeObjectRelease_n(_:_:)
- swift_bridgeObjectRetain(_:)
- swift_bridgeObjectRetain_n(_:_:)
- swift_bridgeRelease(_:)
- swift_checkMetadataState(_:_:)
- swift_compareTypeContextDescriptors(_:_:)
- swift_conformsToProtocol(_:_:)
- swift_continuation_await(_:)
- swift_continuation_init(_:_:)
- swift_continuation_resume(_:)
- swift_continuation_throwingResume(_:)
- swift_continuation_throwingResumeWithError(_:_:)
- swift_copyPOD(_:_:_:)
- swift_deallocClassInstance(_:_:_:)
- swift_deallocObject(_:_:_:)
- swift_deallocPartialClassInstance(_:)
- swift_deallocUninitializedObject(_:_:_:)
- swift_defaultActor_deallocate(_:)
- swift_defaultActor_deallocateResilient(_:)
- swift_defaultActor_destroy(_:)
- swift_defaultActor_initialize(_:)
- swift_deletedMethodError()
- swift_distributedActor_remote_initialize(_:)
- swift_dynamicCast(_:_:_:_:_:)
- swift_dynamicCastClass(_:_:)
- swift_dynamicCastClassUnconditional(_:_:_:_:_:)
- swift_dynamicCastMetatype(_:_:)
- swift_dynamicCastMetatypeToObjectConditional(_:)
- swift_dynamicCastMetatypeToObjectUnconditional(_:)
- swift_dynamicCastMetatypeUnconditional(_:_:_:_:_:)
- swift_dynamicCastObjCClass(_:_:)
- swift_dynamicCastObjCClassMetatype(_:_:)
- swift_dynamicCastObjCClassMetatypeUnconditional(_:_:_:_:_:)
- swift_dynamicCastObjCClassUnconditional(_:_:_:_:_:)
- swift_dynamicCastObjCProtocolConditional(_:_:_:)
- swift_dynamicCastObjCProtocolUnconditional(_:_:_:_:_:_:)
- swift_dynamicCastTypeToObjCProtocolConditional(_:_:_:)
- swift_dynamicCastTypeToObjCProtocolUnconditional(_:_:_:_:_:_:)
- swift_dynamicCastUnknownClass(_:_:)
- swift_dynamicCastUnknownClassUnconditional(_:_:_:_:_:)
- swift_endAccess(_:)
- swift_errorInMain(_:)
- swift_errorRelease(_:)
- swift_errorRetain(_:)
- swift_getAssociatedConformanceWitness(_:_:_:_:_:)
- swift_getAssociatedTypeWitness(_:_:_:_:_:)
- swift_getCanonicalPrespecializedGenericMetadata(_:_:_:_:)
- swift_getCanonicalSpecializedMetadata(_:_:_:)
- swift_getDynamicType(_:_:_:)
- swift_getEnumCaseMultiPayload(_:_:)
- swift_getEnumTagSinglePayloadGeneric(_:_:_:_:)
- swift_getExistentialMetatypeMetadata(_:)
- swift_getExistentialTypeMetadata(_:_:_:_:)
- swift_getForeignTypeMetadata(_:)
- swift_getFunctionTypeMetadata(_:_:_:_:)
- swift_initWithTakeBackToFront(_:_:_:_:)
- swift_initWithTakeFrontToBack(_:_:_:_:)
- swift_initWithTakeNoAlias(_:_:_:_:)