
// Copyright (c) 2022-2023, ARM Limited.
//
//    Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//
//         http://www.apache.org/licenses/LICENSE-2.0
//
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.

// THIS FILE IS GENERATED. DO NOT EDIT!
// See scripts/operator_api/generate_api.py

#ifndef OPERATORS_H_
#define OPERATORS_H_

#include "func_config.h"
#include "func_debug.h"
#include "types.h"

#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

    struct func_ctx_t
    {
        func_config_t func_config = func_config_t{};
        func_debug_t func_debug   = func_debug_t{};
    };

    {% for operator in operators: %}
        tosa_status_t tosa_run_{{ operator.name }} (
            {%- for arg in operator.arguments: -%}
                {% if arg.type != "tosa_tensor_t" -%}const {% endif -%}{{arg.type}} client_{{arg.name}}{{arg.shape}}
                {% if loop.index < operator.arguments|length %},{% endif %}
            {%- endfor -%},const func_ctx_t& func_ctx);
    {% endfor %}

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif // OPERATORS_H_