From a09de0c8b2ed0f1481502d3b023375609362d9e3 Mon Sep 17 00:00:00 2001 From: Moritz Pflanzer Date: Fri, 1 Sep 2017 20:41:12 +0100 Subject: COMPMID-415: Rename and move tests The boost validation is now "standalone" in validation_old and builds as arm_compute_validation_old. The new validation builds now as arm_compute_validation. Change-Id: Ib93ba848a25680ac60afb92b461d574a0757150d Reviewed-on: http://mpd-gerrit.cambridge.arm.com/86187 Tested-by: Kaizen Reviewed-by: Anthony Barbier --- tests/validation_old/ProgramOptions.h | 101 ++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 tests/validation_old/ProgramOptions.h (limited to 'tests/validation_old/ProgramOptions.h') diff --git a/tests/validation_old/ProgramOptions.h b/tests/validation_old/ProgramOptions.h new file mode 100644 index 0000000000..0b28355aa6 --- /dev/null +++ b/tests/validation_old/ProgramOptions.h @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef __ARM_COMPUTE_TEST_PROGRAM_OPTIONS_H__ +#define __ARM_COMPUTE_TEST_PROGRAM_OPTIONS_H__ + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Weffc++" +#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +#include "boost/program_options.hpp" +#pragma GCC diagnostic pop + +#include +#include + +namespace arm_compute +{ +namespace test +{ +/** Defines available commandline arguments and allows to parse them. */ +class ProgramOptions +{ +public: + /** Defines available options. */ + ProgramOptions(); + + /** Signals if the --help flag has been passed on the commandline. */ + bool wants_help() const; + + /** Returns a string describing all available options. */ + std::string get_help() const; + + /** Parses the given arguments and makes them available via @ref get. + * + * @param[in] argc Number of command line arguments. + * @param[in] argv Pointer to the command line arguments. + */ + void parse_commandline(int argc, char **argv); + + /** Sets @p value if it has been specified on the command line. + * + * @note The type T has to match the type that has been specified for the + * command line option. + * + * @param[in] name Name of the option to query. + * @param[out] value Variable to which the value will be assigned. + * + * @return True if the value is assigned, false otherwise. + */ + template + bool get(const std::string &name, T &value) const; + +protected: + /** Allows subclasses to add more specific options + * + * @param[in] options Boost object containing options and their descriptions + */ + void add_options(const boost::program_options::options_description &options); + +private: + boost::program_options::options_description _hidden{}; + boost::program_options::options_description _visible{ "Configuration options" }; + boost::program_options::positional_options_description _positional{}; + boost::program_options::variables_map _vm{}; +}; + +template +bool ProgramOptions::get(const std::string &name, T &value) const +{ + if(_vm.count(name) != 0) + { + value = _vm[name].as(); + return true; + } + + return false; +} +} // namespace test +} // namespace arm_compute +#endif /* __ARM_COMPUTE_TEST_PROGRAM_OPTIONS_H__ */ -- cgit v1.2.1