{#
 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 "{{include_h}}"

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

static const {{data_type}} *ifmArrays[] = {
    {{ ifm_var_names|join(',\n    ') }}
};

static const {{data_type}} *ofmArrays[] = {
    {{ ofm_var_names|join(',\n    ') }}
};

const {{data_type}}* GetIfmDataArray(const uint32_t idx)
{
    if (idx < NUMBER_OF_IFM_FILES) {
        return ifmArrays[idx];
    }
    return nullptr;
}

const {{data_type}}* GetOfmDataArray(const uint32_t idx)
{
    if (idx < NUMBER_OF_OFM_FILES) {
        return ofmArrays[idx];
    }
    return nullptr;
}

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