object Case
- Companion
- class
Type members
Types
type DropByType[Type, Cases <: Tuple] = Cases match {
case EmptyTuple => EmptyTuple
case Case[_$4, Type, _$5] *: tail => tail
case head *: tail => head *: DropByType[Type, tail]
}
type FromLabelsAndTypes[Labels <: Tuple, Types <: Tuple] = FromLabelsAndTypesWithAcc[Labels, Types, 0]
type FromLabelsAndTypesWithAcc[Labels <: Tuple, Types <: Tuple, Ord <: Int] = (Labels, Types) match {
case (EmptyTuple, EmptyTuple) => EmptyTuple
case (labelHead *: labelTail, typeHead *: typeTail) => Case[labelHead, typeHead, Ord] *: FromLabelsAndTypesWithAcc[labelTail, typeTail, S[Ord]]
}
type OrdinalForType[Type, Cases <: Tuple] = Cases match {
case EmptyTuple => Nothing
case Case[_$1, Type, ordinal] *: _$2 => ordinal
case _$3 *: tail => OrdinalForType[Type, tail]
}