/// Copyright (c) 2021 ARM Limited and Contributors. All rights reserved.
///
/// SPDX-License-Identifier: MIT
///

namespace armnn
{
/**
@page swtools Software Tools

On this page you can find all software tools contained in the Arm NN repository. You will find links to how-to guides and
other helpful information in each section.

 - @subpage delegate
 - @subpage parsers
 - @subpage md_python_pyarmnn_README
 - @subpage serializer
 - @subpage deserializer
 - @subpage md_src_armnnQuantizer_README
 - @subpage md_src_armnnConverter_README
 - @subpage md_tests_ImageCSVFileGenerator_README
 - @subpage md_tests_ImageTensorGenerator_README
 - @subpage md_tests_ModelAccuracyTool-Armnn_README
**/
}


/// Create pages for each tool so they appear nicely in the doxygen tree-view. Subpages are not listed there.
///
/// Note: The parser, serializer and deserializer pages are created in 01_parsers.dox or 02_deserializer_serializer.dox
namespace armnn
{
/**

@page md_python_pyarmnn_README PyArmNN

@page md_src_armnnQuantizer_README Quantizer

@page md_src_armnnConverter_README Converter

@page md_tests_ModelAccuracyTool-Armnn_README ModelAccuracyTool

@page md_tests_ImageCSVFileGenerator_README ImageCSVFileGenerator

@page md_tests_ImageTensorGenerator_README ImageTensorGenerator

**/
}

