| // Copyright 2018 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 enumTmpl = ` |
| {{- define "EnumDefinition" -}} |
| {{range .DocComments}} |
| //{{ . }} |
| {{- end}} |
| type {{ .Name }} {{ .Type }} |
| |
| const ( |
| {{- range .Members }} |
| {{ if .DocComments -}} |
| {{range .DocComments}} |
| //{{ . }} |
| {{- end}} |
| {{ end -}} |
| {{ $.Name }}{{ .Name }} {{ $.Name }} = {{ .Value }} |
| {{- end }} |
| |
| {{ if .IsFlexible }} |
| // {{ .Name }}_Unknown is the default unknown placeholder. |
| {{ .Name }}_Unknown {{ .Name }} = {{ .UnknownValueForTmpl | printf "%#x" }} |
| {{ end }} |
| ) |
| |
| func (_ {{.Name}}) I_EnumValues() []{{.Name}} { |
| return []{{.Name}}{ |
| {{- range .Members }} |
| {{ $.Name }}{{ .Name }}, |
| {{- end }} |
| } |
| } |
| |
| func (_ {{.Name}}) I_EnumIsStrict() bool { |
| return {{ .IsStrict }} |
| } |
| |
| func (x {{.Name}}) IsUnknown() bool { |
| switch x { |
| {{- range .Members }} |
| {{- if not .IsUnknown }} |
| case {{ .Value }}: |
| return true |
| {{- end }} |
| {{- end }} |
| default: |
| return false |
| } |
| } |
| |
| func (x {{.Name}}) String() string { |
| switch x { |
| {{- range .Members }} |
| case {{ .Value }}: |
| return "{{.Name}}" |
| {{- end }} |
| } |
| return "Unknown" |
| } |
| {{- end -}} |
| ` |