{#
 SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com>
 SPDX-License-Identifier: Apache-2.0

 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.
#}
{{common_template_header}}

#include "BufAttributes.hpp"

#include <cstddef>
#include <cstdint>

{% for header in additional_headers %}
#include "{{header}}"
{% endfor %}

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

{% for expression in expressions %}
{{expression}};
{% endfor %}

static const uint8_t nn_model[] MODEL_TFLITE_ATTRIBUTE =
{% for model_hex_line in model_data %}
{{model_hex_line}}
{% endfor %}

const uint8_t * GetModelPointer()
{
    return nn_model;
}

size_t GetModelLen()
{
    return sizeof(nn_model);
}

{% for namespace in namespaces %}
} /* namespace {{namespace}} */
{% endfor %}
