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} }