Documentation ¶
Index ¶
- Variables
- func CallingVerb() schema.RefKey
- func GetDiscriminatorByVariant(variant reflect.Type) optional.Option[reflect.Type]
- func GetFSM(name string) optional.Option[ReflectedFSM]
- func GetVariantByName(discriminator reflect.Type, name string) optional.Option[reflect.Type]
- func GetVariantByType(discriminator reflect.Type, variantType reflect.Type) optional.Option[string]
- func IsKnownExternalType(t reflect.Type) bool
- func IsSumTypeDiscriminator(discriminator reflect.Type) bool
- func Module() string
- func ReflectTypeToSchemaType(t reflect.Type) schema.Type
- func Register(options ...Registree)
- func ResetTypeRegistry()
- func TypeFromValue[T any, TP interface{ ... }](v TP) schema.Type
- type Ref
- type ReflectedFSM
- type Registree
- type Transition
- type TypeRegistry
Constants ¶
This section is empty.
Variables ¶
var AllowAnyPackageForTesting = false
Functions ¶
func CallingVerb ¶ added in v0.314.0
func GetDiscriminatorByVariant ¶ added in v0.223.0
GetDiscriminatorByVariant returns the discriminator type for the given variant type.
func GetFSM ¶ added in v0.230.0
func GetFSM(name string) optional.Option[ReflectedFSM]
GetFSM returns the FSM with the given name, if any.
func GetVariantByName ¶ added in v0.223.0
GetVariantByName returns the variant type for the given discriminator and variant name.
func GetVariantByType ¶ added in v0.223.0
GetVariantByType returns the variant name for the given discriminator and variant type.
func IsKnownExternalType ¶ added in v0.282.0
func IsSumTypeDiscriminator ¶ added in v0.223.0
IsSumTypeDiscriminator returns true if the given type is a sum type discriminator.
func ReflectTypeToSchemaType ¶ added in v0.226.0
ReflectTypeToSchemaType returns the FTL schema for a Go reflect.Type.
func Register ¶ added in v0.223.0
func Register(options ...Registree)
Register applies all the provided options to the singleton TypeRegistry
func ResetTypeRegistry ¶ added in v0.223.0
func ResetTypeRegistry()
ResetTypeRegistry clears the contents of the singleton type registry for tests to guarantee determinism.
func TypeFromValue ¶ added in v0.226.0
TypeFromValue reflects a schema.Type from a Go value.
The passed value must be a pointer to a value of the desired type. This is to ensure that interface values aren't dereferenced automatically by the Go compiler.
Types ¶
type Ref ¶
Ref is an untyped reference to a symbol.
func FuncRef ¶
FuncRef returns the Ref for a Go function.
Panics if called with a function outside FTL.
func RefFromProto ¶
func TypeRefFromValue ¶
TypeRefFromValue returns the Ref for a Go value.
The value must be a named type such as a struct, enum, or sum type.
func (*Ref) UnmarshalText ¶
type ReflectedFSM ¶ added in v0.230.0
type ReflectedFSM struct { Transitions []Transition Schema *schema.FSM }
type Registree ¶ added in v0.230.0
type Registree func(t *TypeRegistry)
Registree is a function that registers types with a TypeRegistry.
func ExternalType ¶ added in v0.282.0
ExternalType adds a non-FTL type to the type registry.
func FSM ¶ added in v0.230.0
func FSM(name string, transitions ...Transition) Registree
FSM adds a finite state machine to the type registry.
type Transition ¶ added in v0.230.0
Transition represents a transition between two states in an FSM.
type TypeRegistry ¶
type TypeRegistry struct {
// contains filtered or unexported fields
}
TypeRegistry is used for dynamic type resolution at runtime. It stores associations between sum type discriminators and their variants, for use in encoding and decoding.
FTL manages the type registry for you, so you don't need to create one yourself.