Skip to content

Commit 1376e55

Browse files
committed
Add support for slices to non-pointers, use non-nullable AnyValue
Before: ``` goos: darwin goarch: amd64 pkg: go.opentelemetry.io/collector/consumer/pdata BenchmarkTracesFromOtlp BenchmarkTracesFromOtlp-16 584 1805875 ns/op 940352 B/op 29954 allocs/op PASS ``` After: ``` goos: darwin goarch: amd64 pkg: go.opentelemetry.io/collector/consumer/pdata BenchmarkTracesFromOtlp BenchmarkTracesFromOtlp-16 681 1575996 ns/op 857915 B/op 24802 allocs/op PASS ``` Signed-off-by: Bogdan Drutu <[email protected]>
1 parent cc0a999 commit 1376e55

30 files changed

+981
-731
lines changed

cmd/pdatagen/internal/base_fields.go

+55-7
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,13 @@ type baseField interface {
123123
generateCopyToValue(sb *strings.Builder)
124124
}
125125

126-
type sliceField struct {
126+
type slicePtrField struct {
127127
fieldName string
128128
originFieldName string
129-
returnSlice *sliceStruct
129+
returnSlice *slicePtrStruct
130130
}
131131

132-
func (sf *sliceField) generateAccessors(ms baseStruct, sb *strings.Builder) {
132+
func (sf *slicePtrField) generateAccessors(ms baseStruct, sb *strings.Builder) {
133133
sb.WriteString(os.Expand(accessorSliceTemplate, func(name string) string {
134134
switch name {
135135
case "structName":
@@ -146,7 +146,7 @@ func (sf *sliceField) generateAccessors(ms baseStruct, sb *strings.Builder) {
146146
}))
147147
}
148148

149-
func (sf *sliceField) generateAccessorsTest(ms baseStruct, sb *strings.Builder) {
149+
func (sf *slicePtrField) generateAccessorsTest(ms baseStruct, sb *strings.Builder) {
150150
sb.WriteString(os.Expand(accessorsSliceTestTemplate, func(name string) string {
151151
switch name {
152152
case "structName":
@@ -161,15 +161,63 @@ func (sf *sliceField) generateAccessorsTest(ms baseStruct, sb *strings.Builder)
161161
}))
162162
}
163163

164-
func (sf *sliceField) generateSetWithTestValue(sb *strings.Builder) {
164+
func (sf *slicePtrField) generateSetWithTestValue(sb *strings.Builder) {
165165
sb.WriteString("\tfillTest" + sf.returnSlice.structName + "(tv." + sf.fieldName + "())")
166166
}
167167

168-
func (sf *sliceField) generateCopyToValue(sb *strings.Builder) {
168+
func (sf *slicePtrField) generateCopyToValue(sb *strings.Builder) {
169169
sb.WriteString("\tms." + sf.fieldName + "().CopyTo(dest." + sf.fieldName + "())")
170170
}
171171

172-
var _ baseField = (*sliceField)(nil)
172+
var _ baseField = (*slicePtrField)(nil)
173+
174+
type sliceValueField struct {
175+
fieldName string
176+
originFieldName string
177+
returnSlice *slicePtrStruct
178+
}
179+
180+
func (sf *sliceValueField) generateAccessors(ms baseStruct, sb *strings.Builder) {
181+
sb.WriteString(os.Expand(accessorSliceTemplate, func(name string) string {
182+
switch name {
183+
case "structName":
184+
return ms.getName()
185+
case "fieldName":
186+
return sf.fieldName
187+
case "returnType":
188+
return sf.returnSlice.structName
189+
case "originFieldName":
190+
return sf.originFieldName
191+
default:
192+
panic(name)
193+
}
194+
}))
195+
}
196+
197+
func (sf *sliceValueField) generateAccessorsTest(ms baseStruct, sb *strings.Builder) {
198+
sb.WriteString(os.Expand(accessorsSliceTestTemplate, func(name string) string {
199+
switch name {
200+
case "structName":
201+
return ms.getName()
202+
case "fieldName":
203+
return sf.fieldName
204+
case "returnType":
205+
return sf.returnSlice.structName
206+
default:
207+
panic(name)
208+
}
209+
}))
210+
}
211+
212+
func (sf *sliceValueField) generateSetWithTestValue(sb *strings.Builder) {
213+
sb.WriteString("\tfillTest" + sf.returnSlice.structName + "(tv." + sf.fieldName + "())")
214+
}
215+
216+
func (sf *sliceValueField) generateCopyToValue(sb *strings.Builder) {
217+
sb.WriteString("\tms." + sf.fieldName + "().CopyTo(dest." + sf.fieldName + "())")
218+
}
219+
220+
var _ baseField = (*sliceValueField)(nil)
173221

174222
type messagePtrField struct {
175223
fieldName string

0 commit comments

Comments
 (0)