blob: f2b6d4f6c70836dab9e036140c4d6885b38b42e7 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package codegen
const bitsTmpl = `
{{- define "BitsDefinition" -}}
{{range .DocComments}}
//{{ . }}
{{- end}}
type {{ .Name }} {{ .Type }}
const (
{{- range .Members }}
{{ $.Name }}{{ .Name }} {{ $.Name }} = {{ .Value }}
{{- end }}
{{ .Name }}_Mask {{ .Name }} = {{ .Mask }}
)
func (_ {{ .Name }}) I_BitsMask() {{ .Name }} {
return {{ .Name }}_Mask
}
func (_ {{ .Name }}) I_BitsIsStrict() bool {
return {{ .IsStrict }}
}
func (x {{ .Name }}) HasUnknownBits() bool {
return x.GetUnknownBits() != 0
}
func (x {{ .Name }}) GetUnknownBits() uint64 {
return uint64(^{{ .Name }}_Mask & x)
}
func (x {{.Name}}) String() string {
switch x {
{{- range .Members }}
case {{ .Value }}:
return "{{.Name}}"
{{- end }}
}
return "Unknown"
}
{{- end -}}
`