171 lines
3.2 KiB
Go
171 lines
3.2 KiB
Go
|
package dataext
|
||
|
|
||
|
type ValueGroup interface {
|
||
|
TupleLength() int
|
||
|
TupleValues() []any
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Single[T1 any] struct {
|
||
|
V1 T1
|
||
|
}
|
||
|
|
||
|
func (s Single[T1]) TupleLength() int {
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
func (s Single[T1]) TupleValues() []any {
|
||
|
return []any{s.V1}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Tuple[T1 any, T2 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
}
|
||
|
|
||
|
func (t Tuple[T1, T2]) TupleLength() int {
|
||
|
return 2
|
||
|
}
|
||
|
|
||
|
func (t Tuple[T1, T2]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Triple[T1 any, T2 any, T3 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
}
|
||
|
|
||
|
func (t Triple[T1, T2, T3]) TupleLength() int {
|
||
|
return 3
|
||
|
}
|
||
|
|
||
|
func (t Triple[T1, T2, T3]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Quadruple[T1 any, T2 any, T3 any, T4 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
}
|
||
|
|
||
|
func (t Quadruple[T1, T2, T3, T4]) TupleLength() int {
|
||
|
return 4
|
||
|
}
|
||
|
|
||
|
func (t Quadruple[T1, T2, T3, T4]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Quintuple[T1 any, T2 any, T3 any, T4 any, T5 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
V5 T5
|
||
|
}
|
||
|
|
||
|
func (t Quintuple[T1, T2, T3, T4, T5]) TupleLength() int {
|
||
|
return 5
|
||
|
}
|
||
|
|
||
|
func (t Quintuple[T1, T2, T3, T4, T5]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4, t.V5}
|
||
|
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Sextuple[T1 any, T2 any, T3 any, T4 any, T5 any, T6 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
V5 T5
|
||
|
V6 T6
|
||
|
}
|
||
|
|
||
|
func (t Sextuple[T1, T2, T3, T4, T5, T6]) TupleLength() int {
|
||
|
return 6
|
||
|
}
|
||
|
|
||
|
func (t Sextuple[T1, T2, T3, T4, T5, T6]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4, t.V5, t.V6}
|
||
|
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Septuple[T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
V5 T5
|
||
|
V6 T6
|
||
|
V7 T7
|
||
|
}
|
||
|
|
||
|
func (t Septuple[T1, T2, T3, T4, T5, T6, T7]) TupleLength() int {
|
||
|
return 7
|
||
|
}
|
||
|
|
||
|
func (t Septuple[T1, T2, T3, T4, T5, T6, T7]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4, t.V5, t.V6, t.V7}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Octuple[T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
V5 T5
|
||
|
V6 T6
|
||
|
V7 T7
|
||
|
V8 T8
|
||
|
}
|
||
|
|
||
|
func (t Octuple[T1, T2, T3, T4, T5, T6, T7, T8]) TupleLength() int {
|
||
|
return 8
|
||
|
}
|
||
|
|
||
|
func (t Octuple[T1, T2, T3, T4, T5, T6, T7, T8]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4, t.V5, t.V6, t.V7, t.V8}
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
type Nonuple[T1 any, T2 any, T3 any, T4 any, T5 any, T6 any, T7 any, T8 any, T9 any] struct {
|
||
|
V1 T1
|
||
|
V2 T2
|
||
|
V3 T3
|
||
|
V4 T4
|
||
|
V5 T5
|
||
|
V6 T6
|
||
|
V7 T7
|
||
|
V8 T8
|
||
|
V9 T9
|
||
|
}
|
||
|
|
||
|
func (t Nonuple[T1, T2, T3, T4, T5, T6, T7, T8, T9]) TupleLength() int {
|
||
|
return 9
|
||
|
}
|
||
|
|
||
|
func (t Nonuple[T1, T2, T3, T4, T5, T6, T7, T8, T9]) TupleValues() []any {
|
||
|
return []any{t.V1, t.V2, t.V3, t.V4, t.V5, t.V6, t.V7, t.V8, t.V9}
|
||
|
}
|