blob: 0226c42bc5d82257313f67724d3321f348d064e8 [file]
{{/*
// Copyright 2025 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.
*/}}
{{/*
// TODO(https://fxbug.dev/394421154): This should really be a class that inherits from enum.IntFlag,
// but doing so requires creating a new GIDL backend because the fuchsia-controller backend
// generates tests that use ints for the value of bits types.
*/}}
{{ define "BitsDeclaration" -}}
class {{ .PythonName }}(enum.IntFlag):
{{- if .DocComments }}
"""
{{- range .DocComments }}
{{ . | escapeQuotes | trimSpace | indentNonEmpty4 }}
{{- end }}
"""
{{- end }}
{{ range .PythonMembers -}}
{{ .PythonName }} = {{ .PythonValue }}
{{ end }}
{{- if .Empty -}}
EMPTY__ = 0
{{ end -}}
__fidl_kind__ = "bits"
__fidl_type__ = "{{ .PythonName }}"
__fidl_raw_type__ = "{{ .Name }}"
__strict__ = {{ if .Strictness }}True{{ else }}False{{ end }}
__fidl_inline_size__ = {{ .Type.PrimitiveSubtype.NumberOfBytes }}
def _encode(self: int, enc: fidl.Encoder, off: int) -> None:
enc.write_{{ .Type.PrimitiveSubtype }}(int(self), off)
@classmethod
def _decode(cls, dec: fidl.Decoder, off: int) -> typing.Self:
return cls(dec.read_{{ .Type.PrimitiveSubtype }}(off))
@classmethod
def make_default(cls) -> typing.Self:
return cls(value=0)
{{ end }}