{#
 # The MIT License (MIT)
 #
 # Copyright (c) 2020 Philippe Proulx <pproulx@efficios.com>
 #
 # Permission is hereby granted, free of charge, to any person obtaining
 # a copy of this software and associated documentation files (the
 # "Software"), to deal in the Software without restriction, including
 # without limitation the rights to use, copy, modify, merge, publish,
 # distribute, sublicense, and/or sell copies of the Software, and to
 # permit persons to whom the Software is furnished to do so, subject to
 # the following conditions:
 #
 # The above copyright notice and this permission notice shall be
 # included in all copies or substantial portions of the Software.
 #
 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #}

{#
 # Common variables and macros (for C templates).
 #}

{% import 'common.j2' as common %}

{# generic barectf context structure name #}
{% set ctx_struct_name %}{{ common.prefix }}ctx{% endset %}

{#
 # Generates the name of a tracing function for the data stream type
 # `dst` and the event record type `ert`.
 #
 # Example:
 #
 #     barectf_my_stream_trace_my_event
 #}
{% macro trace_func_name(dst, ert) %}
{{ common.prefix }}{{ dst.name }}_trace_{{ ert.name }}
{%- endmacro %}

{#
 # Generates:
 #
 # If `is_const` is `true`:
 #     The string ` const `.
 #
 # Otherwise:
 #     An empty string.
 #}
{% macro const_ptr_str(is_const) %}
{{ ' const ' if is_const else '' }}
{%- endmacro %}

{#
 # Generates:
 #
 # If `is_const` is `true`:
 #     The string `const `.
 #
 # Otherwise:
 #     An empty string.
 #}
{% macro const_str(is_const) %}
{{ 'const ' if is_const else '' }}
{%- endmacro %}

{#
 # Generates the length variable name of the dynamic field type
 # operation `op`.
 #}
{% macro dyn_array_ft_op_len_var_name(op) %}
{{ op.names[0] }}_{{ op.ft._length_ft_member_name }}
{%- endmacro %}
