diff --git a/cmd/generate/x_sequence.go.tmpl b/cmd/generate/x_sequence.go.tmpl index a559dbc..3d3b00b 100644 --- a/cmd/generate/x_sequence.go.tmpl +++ b/cmd/generate/x_sequence.go.tmpl @@ -166,20 +166,26 @@ func Merge{{.Name}}(seq1, seq2 {{.Name}}Sequence, fn func(item1, item2 *{{.Name} var item *{{.Name}}Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/float32_sequence.go b/float32_sequence.go index 22b0490..b6e36aa 100644 --- a/float32_sequence.go +++ b/float32_sequence.go @@ -165,20 +165,26 @@ func MergeFloat32(seq1, seq2 Float32Sequence, fn func(item1, item2 *Float32Item) var item *Float32Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/float64_sequence.go b/float64_sequence.go index 9c457f0..0b49f96 100644 --- a/float64_sequence.go +++ b/float64_sequence.go @@ -165,20 +165,26 @@ func MergeFloat64(seq1, seq2 Float64Sequence, fn func(item1, item2 *Float64Item) var item *Float64Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/int16_sequence.go b/int16_sequence.go index f7885d0..5cf54ad 100644 --- a/int16_sequence.go +++ b/int16_sequence.go @@ -165,20 +165,26 @@ func MergeInt16(seq1, seq2 Int16Sequence, fn func(item1, item2 *Int16Item) *Int1 var item *Int16Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/int32_sequence.go b/int32_sequence.go index b96c844..0f66d12 100644 --- a/int32_sequence.go +++ b/int32_sequence.go @@ -165,20 +165,26 @@ func MergeInt32(seq1, seq2 Int32Sequence, fn func(item1, item2 *Int32Item) *Int3 var item *Int32Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/int64_sequence.go b/int64_sequence.go index 9cc38e4..baa00b0 100644 --- a/int64_sequence.go +++ b/int64_sequence.go @@ -165,20 +165,26 @@ func MergeInt64(seq1, seq2 Int64Sequence, fn func(item1, item2 *Int64Item) *Int6 var item *Int64Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/int8_sequence.go b/int8_sequence.go index 0d8a2ab..6fb4928 100644 --- a/int8_sequence.go +++ b/int8_sequence.go @@ -165,20 +165,26 @@ func MergeInt8(seq1, seq2 Int8Sequence, fn func(item1, item2 *Int8Item) *Int8Ite var item *Int8Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/int_sequence.go b/int_sequence.go index 6f70b48..dc9224d 100644 --- a/int_sequence.go +++ b/int_sequence.go @@ -165,20 +165,26 @@ func MergeInt(seq1, seq2 IntSequence, fn func(item1, item2 *IntItem) *IntItem) I var item *IntItem switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/uint16_sequence.go b/uint16_sequence.go index 22db47a..c9c2d11 100644 --- a/uint16_sequence.go +++ b/uint16_sequence.go @@ -165,20 +165,26 @@ func MergeUint16(seq1, seq2 Uint16Sequence, fn func(item1, item2 *Uint16Item) *U var item *Uint16Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/uint32_sequence.go b/uint32_sequence.go index 327c54c..555dd01 100644 --- a/uint32_sequence.go +++ b/uint32_sequence.go @@ -165,20 +165,26 @@ func MergeUint32(seq1, seq2 Uint32Sequence, fn func(item1, item2 *Uint32Item) *U var item *Uint32Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/uint64_sequence.go b/uint64_sequence.go index cb2b4eb..bf79815 100644 --- a/uint64_sequence.go +++ b/uint64_sequence.go @@ -165,20 +165,26 @@ func MergeUint64(seq1, seq2 Uint64Sequence, fn func(item1, item2 *Uint64Item) *U var item *Uint64Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/uint8_sequence.go b/uint8_sequence.go index 1f42206..50214ba 100644 --- a/uint8_sequence.go +++ b/uint8_sequence.go @@ -165,20 +165,26 @@ func MergeUint8(seq1, seq2 Uint8Sequence, fn func(item1, item2 *Uint8Item) *Uint var item *Uint8Item switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil { diff --git a/uint_sequence.go b/uint_sequence.go index dd9f56b..1074442 100644 --- a/uint_sequence.go +++ b/uint_sequence.go @@ -165,20 +165,26 @@ func MergeUint(seq1, seq2 UintSequence, fn func(item1, item2 *UintItem) *UintIte var item *UintItem switch { case i1 == seq1.Len(): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ case i2 == seq2.Len(): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.Equal(seq2[i2].Time): - item = fn(&seq1[i1], &seq2[i2]) + v1 := seq1[i1] + v2 := seq2[i2] + item = fn(&v1, &v2) i1++ i2++ case seq1[i1].Time.Before(seq2[i2].Time): - item = fn(&seq1[i1], nil) + v1 := seq1[i1] + item = fn(&v1, nil) i1++ case seq1[i1].Time.After(seq2[i2].Time): - item = fn(nil, &seq2[i2]) + v2 := seq2[i2] + item = fn(nil, &v2) i2++ } if item != nil {