ComponentUpdater

org.hungerford.generic.schema.selector.ComponentUpdater$
See theComponentUpdater companion trait

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Concise view

Type members

Classlikes

class Updater[Outer, Inner, Sel](outer: Outer)(using cr: Aux[Outer, Sel, Inner])

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Types

type Aux[Outer, Sel, Inner, NewInner, NO] = ComponentUpdater[Outer, Sel, Inner, NewInner] { type NewOuter = NO; }

Value members

Concrete methods

def update[Outer, Inner, R <: Tuple](outer: Outer)(sel: Selector[R])(using cr: Aux[Outer, R, Inner]): Updater[Outer, Inner, R]

Givens

Givens

given `given_Aux_Outer_*:_Inner_NewInner_NO`[Outer, SelHead, SelTail <: Tuple, HeadInner, NewHeadInner, Inner, NewInner, NO](using hrt: Aux[Outer, SelHead, HeadInner], tcu: Aux[HeadInner, SelTail, Inner, NewInner, NewHeadInner], hcu: => Aux[Outer, SelHead, HeadInner, NewHeadInner, NO]): Aux[Outer, SelHead *: SelTail, Inner, NewInner, NO]
given fromCoproductSchema[SelN <: Singleton, T, R <: Tuple, RV <: Tuple, D, DN, N <: TypeName, ST, DV, STS, NewDV, NewN <: TypeName, NewSTS, NewR <: Tuple, NewRV <: Tuple](using strt: Aux[SelN, R, Subtype[T, ST, D, DN, DV, N, STS]], strp: Aux[SelN, Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], R, NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, NewRV], uniqT: UniqueTypeNames[NewR], uniqDV: UniqueDiscriminatorValues[NewR], dEv: ValidDiscriminator[D, DN, NewR]): Aux[Aux[T, CoproductShape[T, R, RV, D, DN]], SubTypeSelector[SelN], Subtype[T, ST, D, DN, DV, N, STS], Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], Aux[T, CoproductShape[T, NewR, NewRV, D, DN]]]
given fromCoproductSchemaBuilder[SelN <: Singleton, T, R <: Tuple, D, DN, N <: TypeName, ST, DV, STS, NewDV, NewN <: TypeName, NewSTS, NewR <: Tuple](using strt: Aux[SelN, R, Subtype[T, ST, D, DN, DV, N, STS]], strp: Aux[SelN, Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], R, NewR], uniqT: UniqueTypeNames[NewR], uniqDV: UniqueDiscriminatorValues[NewR], dEv: ValidDiscriminator[D, DN, NewR]): Aux[CoproductSchemaBuilder[T, R, D, DN], SubTypeSelector[SelN], Subtype[T, ST, D, DN, DV, N, STS], Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], CoproductSchemaBuilder[T, NewR, D, DN]]
given fromCoproductSchemaBuilderUsingType[ST, SelN <: Nat, T, R <: Tuple, D, DN, N <: TypeName, DV, STS, NewDV, NewN <: TypeName, NewSTS, NewR <: Tuple](using strt: Aux[ST, SelN, R, Subtype[T, ST, D, DN, DV, N, STS]], strp: Aux[ST, SelN, Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], R, NewR], uniqT: UniqueTypeNames[NewR], uniqDV: UniqueDiscriminatorValues[NewR], dEv: ValidDiscriminator[D, DN, NewR]): Aux[CoproductSchemaBuilder[T, R, D, DN], SubTypeSelector[TypeSelector[ST, SelN]], Subtype[T, ST, D, DN, DV, N, STS], Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], CoproductSchemaBuilder[T, NewR, D, DN]]
given fromCoproductSchemaUsingType[ST, SelN <: Nat, T, R <: Tuple, RV <: Tuple, D, DN, N <: TypeName, DV, STS, NewDV, NewN <: TypeName, NewSTS, NewR <: Tuple, NewRV <: Tuple](using strt: Aux[ST, SelN, R, Subtype[T, ST, D, DN, DV, N, STS]], strp: Aux[ST, SelN, Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], R, NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, NewRV], uniqT: UniqueTypeNames[NewR], uniqDV: UniqueDiscriminatorValues[NewR], dEv: ValidDiscriminator[D, DN, NewR]): Aux[Aux[T, CoproductShape[T, R, RV, D, DN]], SubTypeSelector[TypeSelector[ST, SelN]], Subtype[T, ST, D, DN, DV, N, STS], Subtype[T, ST, D, DN, NewDV, NewN, NewSTS], Aux[T, CoproductShape[T, NewR, NewRV, D, DN]]]
given fromFieldDesc[T, F, N <: FieldName, S, SelR, I, NewI, NewS](using ev: NotGiven[SelR <:< Tuple], scu: Aux[Aux[F, S], SelR, I, NewI, Aux[F, NewS]]): Aux[Field[T, F, N, S], SelR, I, NewI, Field[T, F, N, NewS]]
given fromProductSchema[SelN <: Singleton, T, R <: Tuple, NewR <: Tuple, RV <: Tuple, AF, AFS, AFE, C, N <: FieldName, F, FS, NewN <: FieldName, NewFS](using frt: Aux[N, R, Field[T, F, N, FS]], frp: Aux[N, R, T, F, NewN, NewFS, NewR], unq: UniqueFieldNames[NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, RV], pc: ProductConstructor[C, RV, AF, T], pdc: ProductDeconstructor[T, (AF, R)], afeEv: ValidAfExtr[T, AF, AFE]): Aux[Aux[T, ProductShape[T, R, RV, AF, AFS, AFE, C]], FieldSelector[SelN], Field[T, F, N, FS], Field[T, F, NewN, NewFS], Aux[T, ProductShape[T, NewR, RV, AF, AFS, AFE, C]]]
given fromProductSchemaBuilder[SelN <: Singleton, T, R <: Tuple, NewR <: Tuple, RV <: Tuple, AF, AFS, AFE, C, N <: FieldName, F, FS, NewN <: FieldName, NewFS](using frt: Aux[N, R, Field[T, F, N, FS]], frp: Aux[N, R, T, F, NewN, NewFS, NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, RV]): Aux[ProductSchemaBuilder[T, R, RV, AF, AFS, AFE, C], FieldSelector[SelN], Field[T, F, N, FS], Field[T, F, NewN, NewFS], ProductSchemaBuilder[T, NewR, RV, AF, AFS, AFE, C]]
given fromProductSchemaBuilderUsingType[F, SelN <: Nat, T, R <: Tuple, NewR <: Tuple, RV <: Tuple, AF, AFS, AFE, C, Fld <: Extr[T, F], NewN <: FieldName, NewFS](using frt: Aux[F, SelN, R, Fld], frp: Aux[F, SelN, R, T, F, NewN, NewFS, NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, RV]): Aux[ProductSchemaBuilder[T, R, RV, AF, AFS, AFE, C], FieldSelector[TypeSelector[F, SelN]], Fld, Field[T, F, NewN, NewFS], ProductSchemaBuilder[T, NewR, RV, AF, AFS, AFE, C]]
given fromProductSchemaUsingType[F, SelN <: Nat, T, R <: Tuple, NewR <: Tuple, RV <: Tuple, AF, AFS, AFE, C, NewN <: FieldName, NewFS, Fld <: Extr[T, F]](using frt: Aux[F, SelN, R, Fld], frp: Aux[F, SelN, R, T, F, NewN, NewFS, NewR], unq: UniqueFieldNames[NewR], ctx: CtxWrapTuplesConstraint[Tpe, NewR, RV], pc: ProductConstructor[C, RV, AF, T], pdc: ProductDeconstructor[T, (AF, R)], afeEv: ValidAfExtr[T, AF, AFE]): Aux[Aux[T, ProductShape[T, R, RV, AF, AFS, AFE, C]], FieldSelector[TypeSelector[F, SelN]], Fld, Field[T, F, NewN, NewFS], Aux[T, ProductShape[T, NewR, RV, AF, AFS, AFE, C]]]
given fromSubtype[T, ST, D, DN, DV, N <: FieldName, S, SelR, I, NewI, NewS](using ev: NotGiven[SelR <:< Tuple], ev1: CorrectDV[D, DV], ev2: ValidDiscriminator[D, DN, Subtype[T, ST, D, DN, DV, N, NewS] *: EmptyTuple], scu: Aux[Aux[ST, S], SelR, I, NewI, Aux[ST, NewS]]): Aux[Subtype[T, ST, D, DN, DV, N, S], SelR, I, NewI, Subtype[T, ST, D, DN, DV, N, NewS]]
given given_Aux_Outer_EmptyTuple_Outer_NO_NO[Outer, NO]: Aux[Outer, EmptyTuple, Outer, NO, NO]

Inherited givens

given ambigFieldTypeUpdater[Outer, T, N <: Nat, Inner, NewInner, NO](using fcu: Aux[Outer, FieldSelector[TypeSelector[T, N]], Inner, NewInner, NO]): Aux[Outer, AmbigSelector[TypeSelector[T, N]], Inner, NewInner, NO]

Attributes

Inherited from:
LowPriorityComponentUpdaters
given ambigFieldUpdater[Outer, N <: Singleton, Inner, NewInner, NO](using fcu: Aux[Outer, FieldSelector[N], Inner, NewInner, NO]): Aux[Outer, AmbigSelector[N], Inner, NewInner, NO]

Attributes

Inherited from:
LowPriorityComponentUpdaters
given ambigSubTypeTypeUpdater[Outer, T, N <: Nat, Inner, NewInner, NO](using fcu: Aux[Outer, SubTypeSelector[TypeSelector[T, N]], Inner, NewInner, NO]): Aux[Outer, AmbigSelector[TypeSelector[T, N]], Inner, NewInner, NO]

Attributes

Inherited from:
LowPriorityComponentUpdaters
given ambigSubTypeUpdater[Outer, N <: Singleton, Inner, NewInner, NO](using fcu: Aux[Outer, SubTypeSelector[N], Inner, NewInner, NO]): Aux[Outer, AmbigSelector[N], Inner, NewInner, NO]

Attributes

Inherited from:
LowPriorityComponentUpdaters