// // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "ExecuteNetworkParams.hpp" #include /* * Historically we use the ',' character to separate dimensions in a tensor shape. However, cxxopts will read this * an an array of values which is fine until we have multiple tensors specified. This lumps the values of all shapes * together in a single array and we cannot break it up again. We'll change the vector delimiter to a '.'. We do this * as close as possible to the usage of cxxopts to avoid polluting other possible uses. */ #define CXXOPTS_VECTOR_DELIMITER '.' #include /// Holds and parses program options for the ExecuteNetwork application struct ProgramOptions { /// Initializes ProgramOptions by adding options to the underlying cxxopts::options object. /// (Does not parse any options) ProgramOptions(); /// Runs ParseOptions() on initialization ProgramOptions(int ac, const char* av[]); /// Parses program options from the command line or another source and stores /// the values in member variables. It also checks the validity of the parsed parameters. /// Throws a cxxopts exception if parsing fails or an armnn exception if parameters are not valid. void ParseOptions(int ac, const char* av[]); /// Ensures that the parameters for ExecuteNetwork fit together void ValidateExecuteNetworkParams(); /// Ensures that the runtime options are valid void ValidateRuntimeOptions(); cxxopts::Options m_CxxOptions; cxxopts::ParseResult m_CxxResult; ExecuteNetworkParams m_ExNetParams; armnn::IRuntime::CreationOptions m_RuntimeOptions; };