func()

in pkg/generator/cef/cef.go [131:161]


func (c *CEF) addExtension(abbrev string, have map[string]bool) {
	cand := extensionMapping[abbrev]
	if cand.Wants == "" && !have[cand.Abbrev] {
		c.Extensions = append(c.Extensions, cand.Render(c.config))
		have[cand.Abbrev] = true
		return
	}
	var add []mappedField
	seen := make(map[string]bool)
	for {
		if seen[cand.Abbrev] {
			panic(fmt.Sprintf("cycle including %s", cand.Abbrev))
		}
		seen[cand.Abbrev] = true
		add = append(add, cand)
		if cand.Wants == "" {
			if len(add) > c.Max {
				add = add[len(add)-c.Max:]
			}
			for _, a := range add {
				if have[a.Abbrev] {
					continue
				}
				c.Extensions = append(c.Extensions, a.Render(c.config))
				have[a.Abbrev] = true
			}
			break
		}
		cand = extensionMapping[cand.Wants]
	}
}