{#- Jinja template for op definition pybinds -#}
// Copyright (c) 2021 Graphcore Ltd. All rights reserved.
{#- These guards will appear on 1 line. Split across lines for easy reading.
    Example: 'POPART__INTERNAL_IR_BINDINGS_OP_EXCHANGE_HOSTCOPY_HPP'#}
#ifndef POPART__INTERNAL_IR_BINDINGS_
{%- for namespace in namespaces -%}
{{namespace|upper}}_
{%- endfor -%}{{fun_name|replace("bind", "")|upper}}_HPP
#define POPART__INTERNAL_IR_BINDINGS_
{%- for namespace in namespaces -%}
{{namespace|upper}}_
{%- endfor -%}{{fun_name|replace("bind", "")|upper}}_HPP

/**
 * THIS IS AN AUTOGENERATED FILE, DO NOT EDIT DIRECTLY!
 * The script to generate it is in `scripts/gen_op_bindings.py`.
 * The template to generate it is in
 * `python/popart._internal.ir/templates/op/op.hpp.j2`.
 */

#include <pybind11/pybind11.h>

namespace py = pybind11;

namespace popart {
namespace _internal {
namespace ir {

{%- for namespace in namespaces -%}
namespace {{namespace}} {
{% endfor %}

void {{fun_name}}(py::module &m);

{% for namespace in namespaces %}
}
{% endfor -%}
}
}
}

#endif
