File: definition_functions.tmpl

package info (click to toggle)
libcamera 0.6.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,336 kB
  • sloc: cpp: 83,873; python: 18,076; ansic: 12,651; sh: 1,267; makefile: 60
file content (55 lines) | stat: -rw-r--r-- 1,408 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{#-
 # 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{{" class" if enum|is_scoped}} {{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:
#ifndef __DOXYGEN__
	{{struct.mojom_name}}() = default;

	template<
	{%- for field in struct.fields %}
		typename T{{loop.index}} = {{field|name}},
	{%- endfor %}
	{%- for field in struct.fields %}
		std::enable_if_t<std::is_convertible_v<T{{loop.index}}&&, {{field|name}}>> * = nullptr{{"," if not loop.last}}
	{%- endfor %}
	>
	{{struct.mojom_name}}(
{%- for field in struct.fields -%}
		T{{loop.index}} &&_{{field.mojom_name}}{{ ", " if not loop.last }}
{%- endfor -%}
)
{%- for field in struct.fields %}
		{{": " if loop.first else ", "}}{{field.mojom_name}}(std::forward<T{{loop.index}}>(_{{field.mojom_name}}))
{%- endfor %}
	{
	}
#endif

{% for field in struct.fields %}
	{{field|name}} {{field.mojom_name}}{% if field|default_value %}{ {{field|default_value}} }{% endif %};
{%- endfor %}
};
{%- endmacro -%}