diff options
Diffstat (limited to 'src/lib/netlist/plib/pmain.h')
-rw-r--r-- | src/lib/netlist/plib/pmain.h | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/lib/netlist/plib/pmain.h b/src/lib/netlist/plib/pmain.h index cfa73844f57..3213719d0d2 100644 --- a/src/lib/netlist/plib/pmain.h +++ b/src/lib/netlist/plib/pmain.h @@ -1,15 +1,13 @@ -// license:GPL-2.0+ +// license:BSD-3-Clause // copyright-holders:Couriersud -/* - * poptions.h - * - */ - -#pragma once #ifndef PMAIN_H_ #define PMAIN_H_ +/// +/// \file poptions.h +/// + #include "palloc.h" #include "poptions.h" #include "pstream.h" @@ -17,49 +15,52 @@ #include "putil.h" #include <memory> +#include <vector> #ifdef _WIN32 #include <cwchar> -#define PMAIN(appclass) \ -extern "C" int wmain(int argc, wchar_t *argv[]) { return plib::app::mainrun<appclass, wchar_t>(argc, argv); } +#define PMAIN(app_class) \ +extern "C" int wmain(int argc, wchar_t *argv[]) { return plib::app::run_main<app_class, wchar_t>(argc, argv); } #else -#define PMAIN(appclass) \ -int main(int argc, char **argv) { return plib::app::mainrun<appclass, char>(argc, argv); } +#define PMAIN(app_class) \ +int main(int argc, char **argv) { return plib::app::run_main<app_class, char>(argc, argv); } #endif namespace plib { -/*************************************************************************** - Application -***************************************************************************/ + /// \brief Application class. + /// class app : public options { public: app(); - COPYASSIGNMOVE(app, delete) + PCOPYASSIGNMOVE(app, delete) virtual ~app() = default; virtual pstring usage() = 0; + + // short version of usage, defaults to usage + virtual pstring usage_short() { return usage(); } + virtual int execute() = 0; - plib::putf8_fmt_writer pout; - plib::putf8_fmt_writer perr; + plib::putf8_fmt_writer std_out; + plib::putf8_fmt_writer std_err; template <class C, typename T> - static int mainrun(int argc, T **argv) + static int run_main(int argc, T **argv) { - auto a = plib::make_unique<C>(); - return a->main_utfX(argc, argv); + C application; + return application.main_utfX(argc, argv); } private: - int main_utfX(int argc, char **argv); -#ifdef _WIN32 + int main_utfX(const std::vector<putf8string> &argv); + int main_utfX(int argc, char *argv[]); int main_utfX(int argc, wchar_t *argv[]); -#endif }; @@ -67,4 +68,4 @@ namespace plib { -#endif /* PMAIN_H_ */ +#endif // PMAIN_H_ |