blob: a9626e224013368c99673356acfd607e1dbdde75 [file] [log] [blame]
{{/*
// 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 "ProtocolForwardDeclaration/DomainObjects" }}
{{ EnsureNamespace . }}
{{- IfdefFuchsia -}}
{{- .Docs }}
class {{ .Name }};
using {{ .Name }}Handle = ::fidl::InterfaceHandle<{{ .Name }}>;
{{- EndifFuchsia -}}
{{- end }}
{{- define "PointerParams" -}}
{{- range $index, $param := . -}}
, {{ $param.Type }}* {{ $param.Name }}
{{- end -}}
{{ end }}
{{- define "ProtocolDeclaration/DomainObjects" }}
{{ EnsureNamespace . }}
{{- IfdefFuchsia -}}
{{- range .Methods }}
{{ EnsureCodingTableDecl .Request.HlCodingTable }}
{{- end }}
{{ EnsureNamespace .RequestEncoder }}
class {{ .RequestEncoder.Name }} {
public:
{{- with $protocol := . }}
{{- range .Methods }}
{{- if .HasRequest }}
static ::fidl::HLCPPOutgoingMessage {{ .Name }}(::fidl::MessageEncoder* _encoder{{ template "PointerParams" .RequestArgs }}) {
{{- if .HasRequestPayload }}
fidl_trace(WillHLCPPEncode);
_encoder->Alloc({{ .Request.TypeShapeV2.InlineSize }});
{{- range .RequestArgs }}
{{- if .HandleInformation }}
::fidl::Encode(_encoder, {{ .Name }}, {{ .OffsetV2 }} + sizeof(fidl_message_header_t), ::fidl::HandleInformation {
.object_type = {{ .HandleInformation.ObjectType }},
.rights = {{ .HandleInformation.Rights }},
});
{{ else }}
::fidl::Encode(_encoder, {{ .Name }}, {{ .OffsetV2 }} + sizeof(fidl_message_header_t));
{{ end -}}
{{- end }}
fidl_trace(DidHLCPPEncode, &{{ .Request.HlCodingTable }}, _encoder->GetPtr<const char>(0), _encoder->CurrentLength(), _encoder->CurrentHandleCount());
{{- end }}
return _encoder->GetMessage();
}
{{- end }}
{{- end }}
{{- end }}
};
{{- range .Methods }}
{{ EnsureCodingTableDecl .Response.HlCodingTable }}
{{- end }}
{{ EnsureNamespace .ResponseEncoder }}
class {{ .ResponseEncoder.Name }} {
public:
{{- with $protocol := . }}
{{- range .Methods }}
{{- if .HasResponse }}
static ::fidl::HLCPPOutgoingMessage {{ .Name }}(::fidl::MessageEncoder* _encoder{{ template "PointerParams" .ResponseArgs }}) {
{{- if .HasResponsePayload }}
fidl_trace(WillHLCPPEncode);
_encoder->Alloc({{ .Response.TypeShapeV2.InlineSize }});
{{- range .ResponseArgs }}
{{- if .HandleInformation }}
::fidl::Encode(_encoder, {{ .Name }}, {{ .OffsetV2 }} + sizeof(fidl_message_header_t), ::fidl::HandleInformation {
.object_type = {{ .HandleInformation.ObjectType }},
.rights = {{ .HandleInformation.Rights }},
});
{{ else }}
::fidl::Encode(_encoder, {{ .Name }}, {{ .OffsetV2 }} + sizeof(fidl_message_header_t));
{{ end -}}
{{- end }}
fidl_trace(DidHLCPPEncode, &{{ .Response.HlCodingTable }}, _encoder->GetPtr<const char>(0), _encoder->CurrentLength(), _encoder->CurrentHandleCount());
{{- end }}
return _encoder->GetMessage();
}
{{- end }}
{{- end }}
{{- end }}
};
{{- EndifFuchsia -}}
{{- end }}