/** * @file SimpleProgram.cpp * * @date Aug 27, 2014 * @author Hubert Degaudenzi * * @copyright 2012-2020 Euclid Science Ground Segment * * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) * any later version. * * This library 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ #include // for operator<<, basic_ostream, endl, cout #include // for map #include // for char_traits, string #include "ElementsKernel/Main.h" // for MAIN_FOR #include "ElementsKernel/Program.h" // for Program #include "ElementsKernel/Sleep.h" // for nanoSleep #include "ElementsKernel/Unused.h" // for ELEMENTS_UNUSED #include "ElementsExamples/TemplateFunction.h" // for templateFunction using std::map; using std::string; namespace Elements::Examples { /** * @class SimpleProgram * @brief * Example of an Elements program * @details * This class is an example of a program based on the ElementsProgram class. It can be copied/pasted * conveniently to write a new program. */ class SimpleProgram final : public Program { public: /** * @brief * The "main" method. * @details * This method is the entry point to the program. In this sense, it is similar to a main * (and it is why it is called mainMethod()). The code below provides only example stuff * which should be replaced by real code in any program. * * See the ElementsProgram documentation for more details. * */ ExitCode mainMethod(ELEMENTS_UNUSED map& args) override { // Get logger and log the entry into the mainMethod const auto log = Logging::getLogger(); log.info("This Works"); nanoSleep(4); std::cout << "This Works too!" << std::endl; templateFunction(); templateFunction(); return ExitCode::OK; } }; } // namespace Elements::Examples MAIN_FOR(Elements::Examples::SimpleProgram)