in pkg/genlib/generator_interface.go [666:733]
func bindDouble(fieldCfg ConfigField, field Field, fieldMap map[string]any) error {
if err := fieldCfg.ValidCounter(); err != nil {
return err
}
if fieldCfg.Counter {
var emitFNotReturn emitFNotReturn
emitFNotReturn = func(state *genState, buf *bytes.Buffer) error {
previous := float64(1)
var dummyFloat float64
var dummyFunc func() float64
if previousDummyFloat, ok := state.prevCache[field.Name].(float64); ok {
previous = previousDummyFloat
}
if fieldCfg.Fuzziness <= 0 {
dummyFunc = makeFloatCounterFunc(previous, field)
dummyFloat = dummyFunc()
} else {
dummyFloat = fuzzyFloatCounter(previous, fieldCfg.Fuzziness)
}
state.prevCache[field.Name] = dummyFloat
_, err := fmt.Fprintf(buf, "%f", dummyFloat)
return err
}
fieldMap[field.Name] = emitFNotReturn
return nil
}
dummyFunc := makeFloatFunc(fieldCfg, field)
if fieldCfg.Fuzziness <= 0 {
var emitFNotReturn emitFNotReturn
emitFNotReturn = func(state *genState, buf *bytes.Buffer) error {
dummyFloat := dummyFunc()
_, err := fmt.Fprintf(buf, "%f", dummyFloat)
return err
}
fieldMap[field.Name] = emitFNotReturn
return nil
}
min, _ := fieldCfg.Range.MinAsFloat64()
max, _ := fieldCfg.Range.MaxAsFloat64()
var emitFNotReturn emitFNotReturn
emitFNotReturn = func(state *genState, buf *bytes.Buffer) error {
var dummyFloat float64
if previousDummyFloat, ok := state.prevCache[field.Name].(float64); ok {
dummyFloat = fuzzyFloat(previousDummyFloat, fieldCfg.Fuzziness, min, max)
} else {
dummyFloat = dummyFunc()
}
state.prevCache[field.Name] = dummyFloat
_, err := fmt.Fprintf(buf, "%f", dummyFloat)
return err
}
fieldMap[field.Name] = emitFNotReturn
return nil
}