// This file is part of Bertini 2. // // blackbox/algorithm_builder.hpp is free software: you can redistribute it // and/or modify it under the terms of the GNU General Public License as // published by the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // blackbox/algorithm_builder.hpp is distributed in the hope that it will be // useful, but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with blackbox/algorithm_builder.hpp. If not, see // . // // Copyright(C) 2017-2021 by Bertini2 Development Team // // See for a copy of the license, // as well as COPYING. Bertini2 is provided with permitted // additional terms in the b2/licenses/ directory. // // individual authors of this file include // // silviana amethyst, university of wisconsin-eau claire /** \file include/blackbox/algorithm_builder.hpp \brief A type which determines which algorithms etc, to run, and sets them up. */ #pragma once #include "io/file_utilities.hpp" namespace bertini { namespace blackbox { /** \brief A de-serializer, whose responsibility it is to construct runnable objects based on input files. This class is inspired by the SimBuilder class from Hythem Sidky's SAPHRON package for molecular dynamics. */ class AlgoBuilder { public: AlgoBuilder() = default; /** \brief Method for constructing an algorithm from a bertini classic input file */ int ClassicBuild(boost::filesystem::path const& input_file); /** \brief Returns a non-owning pointer to the built algorithm */ AnyAlgorithm* GetAlg() { return alg_.get(); } private: std::unique_ptr alg_; }; } // namespace blackbox } // namespace bertini