{{/*
// 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.
*/}}

{{- define "Const:WireTypesHeader" }}
{{ EnsureNamespace . }}
{{ .Docs }}
{{- if .Extern }}
extern {{ .Decorator }} {{ .Type }} {{ .Name }};
{{- else }}
{{ .Decorator }} {{ .Type }} {{ .Name }} = {{ .Value }};
{{- end }}
{{- end }}

{{- define "Const:WireTypesSource" }}
{{- if .Extern }}
{{ EnsureNamespace "" }}
{{ .Decorator }} {{ .Type }} {{ . }} = {{ .Value }};
{{- end }}
{{- end }}

{{- define "Const:NaturalTypesHeader" }}
{{ EnsureNamespace . }}
{{ .Docs }}
{{- if .Extern }}
extern {{ .Decorator }} {{ .Type }} {{ .Name }};
{{- else }}
{{ .Decorator }} {{ .Type }} {{ .Name }} = {{ .Value }};
{{- end }}
{{- end }}

{{- define "Const:NaturalTypesSource" }}
{{- if .Extern }}
{{ EnsureNamespace "" }}
{{ .Decorator }} {{ .Type }} {{ . }} = {{ .Value }};
{{- end }}
{{- end }}
