summaryrefslogtreecommitdiff
path: root/utils/ipc/generators/libcamera_templates/definition_functions.tmpl
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2020-12-05 19:30:44 +0900
committerPaul Elder <paul.elder@ideasonboard.com>2021-02-16 19:21:00 +0900
commit7832e19a599ec10eb9cf75decbe3b03d6af5364c (patch)
treee8f4d8641eca68b7ce76441d9e4a0a7edf06163e /utils/ipc/generators/libcamera_templates/definition_functions.tmpl
parent892c0f4c19f2d423560a1ab4d7498130816852c3 (diff)
utils: ipc: add templates for code generation for IPC mechanism
Add templates to mojo to generate code for the IPC mechanism. These templates generate: - module header - module serializer - IPA proxy cpp, header, and worker Given an input data definition mojom file for a pipeline. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'utils/ipc/generators/libcamera_templates/definition_functions.tmpl')
-rw-r--r--utils/ipc/generators/libcamera_templates/definition_functions.tmpl53
1 files changed, 53 insertions, 0 deletions
diff --git a/utils/ipc/generators/libcamera_templates/definition_functions.tmpl b/utils/ipc/generators/libcamera_templates/definition_functions.tmpl
new file mode 100644
index 00000000..cdd75f89
--- /dev/null
+++ b/utils/ipc/generators/libcamera_templates/definition_functions.tmpl
@@ -0,0 +1,53 @@
+{#-
+ # SPDX-License-Identifier: LGPL-2.1-or-later
+ # Copyright (C) 2020, Google Inc.
+-#}
+
+{#
+ # \brief Generate enum definition
+ #
+ # \param enum Enum object whose definition is to be generated
+ #}
+{%- macro define_enum(enum) -%}
+enum {{enum.mojom_name}} {
+{%- for field in enum.fields %}
+ {{field.mojom_name}} = {{field.numeric_value}},
+{%- endfor %}
+};
+{%- endmacro -%}
+
+{#
+ # \brief Generate struct definition
+ #
+ # \param struct Struct object whose definition is to be generated
+ #}
+{%- macro define_struct(struct) -%}
+struct {{struct.mojom_name}}
+{
+public:
+ {{struct.mojom_name}}() {%- if struct|has_default_fields %}
+ :{% endif %}
+{%- for field in struct.fields|with_default_values -%}
+{{" " if loop.first}}{{field.mojom_name}}({{field|default_value}}){{", " if not loop.last}}
+{%- endfor %}
+ {
+ }
+
+ {{struct.mojom_name}}(
+{%- for field in struct.fields -%}
+{{"const " if not field|is_pod}}{{field|name}} {{"&" if not field|is_pod}}_{{field.mojom_name}}{{", " if not loop.last}}
+{%- endfor -%}
+)
+ :
+{%- for field in struct.fields -%}
+{{" " if loop.first}}{{field.mojom_name}}(_{{field.mojom_name}}){{", " if not loop.last}}
+{%- endfor %}
+ {
+ }
+{% for field in struct.fields %}
+ {{field|name}} {{field.mojom_name}};
+{%- endfor %}
+};
+{%- endmacro -%}
+
+