protocols

package
v1.1.100 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2022 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnusedLowBits conformanceFlag = 0x07 // historical conformance kind

	TypeMetadataKindMask  conformanceFlag = 0x7 << 3 // 8 type reference kinds
	TypeMetadataKindShift conformanceFlag = 3

	IsRetroactiveMask          conformanceFlag = 0x01 << 6
	IsSynthesizedNonUniqueMask conformanceFlag = 0x01 << 7

	NumConditionalRequirementsMask  conformanceFlag = 0xFF << 8
	NumConditionalRequirementsShift conformanceFlag = 8

	HasResilientWitnessesMask  conformanceFlag = 0x01 << 16
	HasGenericWitnessTableMask conformanceFlag = 0x01 << 17
)
View Source
const (
	// The conformance is for a nominal type referenced directly;
	// getTypeDescriptor() points to the type context descriptor.
	DirectTypeDescriptor referenceKind = 0x00

	// The conformance is for a nominal type referenced indirectly;
	// getTypeDescriptor() points to the type context descriptor.
	IndirectTypeDescriptor referenceKind = 0x01

	// The conformance is for an Objective-C class that should be looked up
	// by class name.
	DirectObjCClassName referenceKind = 0x02

	// The conformance is for an Objective-C class that has no nominal type
	// descriptor.
	// getIndirectObjCClass() points to a variable that contains the pointer to
	// the class object, which then requires a runtime call to get metadata.
	//
	// On platforms without Objective-C interoperability, this case is
	// unused.
	IndirectObjCClass referenceKind = 0x03
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CDType added in v1.1.100

type CDType struct {
	ProtocolDescriptorOffset int32
	TypeRefOffset            int32
	WitnessTableOffset       int32
	Flags                    conformanceFlag
}

ConformanceDescriptor in __TEXT.__swift5_proto This section contains an array of 32-bit signed integers. Each integer is a relative offset that points to a protocol conformance descriptor in the __TEXT.__const section.

type ConformanceDescriptor

type ConformanceDescriptor struct {
	Protocol     string
	TypeRef      int32
	WitnessTable int32
	CDType
}

type Descriptor

type Descriptor struct {
	Flags                      types.ContextDescriptorFlags // overide kind specific flags w/ ProtocolContextDescriptorFlags TODO: handle kind specific flags
	ParentOffset               int32
	NameOffset                 int32  // The name of the protocol.
	NumRequirementsInSignature uint32 // The number of generic requirements in the requirement signature of the protocol.
	NumRequirements            uint32 /* The number of requirements in the protocol. If any requirements beyond MinimumWitnessTableSizeInWords are present
	 * in the witness table template, they will be not be overwritten with defaults. */
	AssociatedTypeNamesOffset int32 // Associated type names, as a space-separated list in the same order as the requirements.
}

Descriptor in __TEXT.__swift5_protos This section contains an array of 32-bit signed integers. Each integer is a relative offset that points to a protocol descriptor in the __TEXT.__const section.

func (Descriptor) GetProtocolContextDescriptorFlags added in v1.1.100

func (d Descriptor) GetProtocolContextDescriptorFlags() ProtocolContextDescriptorFlags

func (Descriptor) String added in v1.1.100

func (d Descriptor) String() string

type GRKind added in v1.1.100

type GRKind uint8
const (
	GRKindProtocol  GRKind = 0 // A protocol requirement.
	GRKindSameType  GRKind = 1 // A same-type requirement.
	GRKindBaseClass GRKind = 2 // A base class requirement.
	// A "same-conformance" requirement, implied by a same-type or base-class constraint that binds a parameter with protocol requirements.
	GRKindSameConformance GRKind = 3
	GRKindLayout          GRKind = 0x1F // A layout constraint.
)

func (GRKind) String added in v1.1.100

func (i GRKind) String() string

type GenericRequirementFlags added in v1.1.100

type GenericRequirementFlags uint32

func (GenericRequirementFlags) HasExtraArgument added in v1.1.100

func (f GenericRequirementFlags) HasExtraArgument() bool

func (GenericRequirementFlags) HasKeyArgument added in v1.1.100

func (f GenericRequirementFlags) HasKeyArgument() bool

func (GenericRequirementFlags) Kind added in v1.1.100

func (GenericRequirementFlags) String added in v1.1.100

func (f GenericRequirementFlags) String() string

type PRKind added in v1.1.100

type PRKind uint8
const (
	BaseProtocol PRKind = iota
	Method
	Init
	Getter
	Setter
	ReadCoroutine
	ModifyCoroutine
	AssociatedTypeAccessFunction
	AssociatedConformanceAccessFunction
)

func (PRKind) String added in v1.1.100

func (i PRKind) String() string

type Protocol

type Protocol struct {
	Name           string
	AssociatedType string
	Parent         *Protocol
	Descriptor
	SignatureRequirements []TargetGenericRequirementDescriptor
	Requirements          []TargetProtocolRequirement
}

Protocol swift protocol object

func (Protocol) String added in v1.1.100

func (p Protocol) String() string

type ProtocolContextDescriptorFlags added in v1.1.100

type ProtocolContextDescriptorFlags uint16

ProtocolContextDescriptorFlags flags for protocol context descriptors. These values are used as the kindSpecificFlags of the ContextDescriptorFlags for the protocol.

const (
	/// Whether this protocol is class-constrained.
	HasClassConstraint       ProtocolContextDescriptorFlags = 0
	HasClassConstraint_width ProtocolContextDescriptorFlags = 1
	/// Whether this protocol is resilient.
	IsResilient ProtocolContextDescriptorFlags = 1
	/// Special protocol value.
	SpecialProtocolKind       ProtocolContextDescriptorFlags = 2
	SpecialProtocolKind_width ProtocolContextDescriptorFlags = 6
)

func (ProtocolContextDescriptorFlags) String added in v1.1.100

type ProtocolRequirementFlags added in v1.1.100

type ProtocolRequirementFlags uint32

func (ProtocolRequirementFlags) ExtraDiscriminator added in v1.1.100

func (f ProtocolRequirementFlags) ExtraDiscriminator() uint16

func (ProtocolRequirementFlags) IsAsync added in v1.1.100

func (f ProtocolRequirementFlags) IsAsync() bool

func (ProtocolRequirementFlags) IsFunctionImpl added in v1.1.100

func (f ProtocolRequirementFlags) IsFunctionImpl() bool

func (ProtocolRequirementFlags) IsInstance added in v1.1.100

func (f ProtocolRequirementFlags) IsInstance() bool

func (ProtocolRequirementFlags) IsSignedWithAddress added in v1.1.100

func (f ProtocolRequirementFlags) IsSignedWithAddress() bool

func (ProtocolRequirementFlags) Kind added in v1.1.100

func (ProtocolRequirementFlags) String added in v1.1.100

func (f ProtocolRequirementFlags) String() string

type TargetGenericRequirementDescriptor

type TargetGenericRequirementDescriptor struct {
	Flags                               GenericRequirementFlags
	Param                               int32 // The type that's constrained, described as a mangled name.
	TypeOrProtocolOrConformanceOrLayout int32 // UNION: flags determine type
}

type TargetProtocolRequirement added in v1.1.100

type TargetProtocolRequirement struct {
	Flags                 ProtocolRequirementFlags
	DefaultImplementation int32
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL