Add Flags<E> as a supported type in the IPA interface. It is used in mojom with the [flags] attribute. Any field or parameter type E that is prefixed with the [flags] attribute will direct the code generator to generate the type name "Flags<E>" and appropriate serialization/deserialization code for Flags<E> instead of for E. It is usable and has been tested in struct members, function input and output parameters, and Signal parameters. This does not add support for returning Flags as direct return values. Additionally, the [scopedEnum] attribute can be used on enum definitions, which will instruct the code generator to convert it to an enum class instead of a raw enum. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
84 lines
2 KiB
Cheetah
84 lines
2 KiB
Cheetah
{#-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
# Copyright (C) 2020, Google Inc.
|
|
-#}
|
|
{%- import "definition_functions.tmpl" as funcs -%}
|
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Google Inc.
|
|
*
|
|
* {{module_name}}_ipa_interface.h - Image Processing Algorithm interface for {{module_name}}
|
|
*
|
|
* This file is auto-generated. Do not edit.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <libcamera/ipa/core_ipa_interface.h>
|
|
#include <libcamera/ipa/ipa_interface.h>
|
|
|
|
{% if has_map %}#include <map>{% endif %}
|
|
{% if has_array %}#include <vector>{% endif %}
|
|
|
|
namespace libcamera {
|
|
{%- if has_namespace %}
|
|
{% for ns in namespace %}
|
|
namespace {{ns}} {
|
|
{% endfor %}
|
|
{%- endif %}
|
|
|
|
{% for const in consts %}
|
|
const {{const.kind|name}} {{const.mojom_name}} = {{const.value}};
|
|
{% endfor %}
|
|
|
|
enum class {{cmd_enum_name}} {
|
|
Exit = 0,
|
|
{%- for method in interface_main.methods %}
|
|
{{method.mojom_name|cap}} = {{loop.index}},
|
|
{%- endfor %}
|
|
};
|
|
|
|
enum class {{cmd_event_enum_name}} {
|
|
{%- for method in interface_event.methods %}
|
|
{{method.mojom_name|cap}} = {{loop.index}},
|
|
{%- endfor %}
|
|
};
|
|
|
|
{% for enum in enums %}
|
|
{{funcs.define_enum(enum)}}
|
|
{% endfor %}
|
|
|
|
{%- for struct in structs_nonempty %}
|
|
{{funcs.define_struct(struct)}}
|
|
{% endfor %}
|
|
|
|
{#-
|
|
Any consts or #defines should be moved to the mojom file.
|
|
#}
|
|
class {{interface_name}} : public IPAInterface
|
|
{
|
|
public:
|
|
{% for method in interface_main.methods %}
|
|
virtual {{method|method_return_value}} {{method.mojom_name}}(
|
|
{%- for param in method|method_parameters %}
|
|
{{param}}{{- "," if not loop.last}}
|
|
{%- endfor -%}
|
|
) = 0;
|
|
{% endfor %}
|
|
|
|
{%- for method in interface_event.methods %}
|
|
Signal<
|
|
{%- for param in method.parameters -%}
|
|
{{"const " if not param|is_pod}}{{param|name}}{{" &" if not param|is_pod and not param|is_enum}}
|
|
{{- ", " if not loop.last}}
|
|
{%- endfor -%}
|
|
> {{method.mojom_name}};
|
|
{% endfor -%}
|
|
};
|
|
|
|
{%- if has_namespace %}
|
|
{% for ns in namespace|reverse %}
|
|
} /* namespace {{ns}} */
|
|
{% endfor %}
|
|
{%- endif %}
|
|
} /* namespace libcamera */
|