Elements
5.10
A C++ base framework for the Euclid Software.
ElementsKernel
ElementsKernel
Main.h
Go to the documentation of this file.
1
26
#ifndef ELEMENTSKERNEL_ELEMENTSKERNEL_MAIN_H_
27
#define ELEMENTSKERNEL_ELEMENTSKERNEL_MAIN_H_
28
29
#include <exception>
// for set_terminate
30
#include <memory>
// for unique_ptr
31
#include <log4cpp/Priority.hh>
32
33
#include "
ElementsKernel/Exit.h
"
// for ExitCode
34
#include "
ElementsKernel/ProgramManager.h
"
// for ProgramManager
35
#include "
ElementsKernel/Export.h
"
// for ELEMENTS_API
36
#include "
ElementsKernel/Unused.h
"
// for ELEMENTS_UNUSED
37
38
#include "ThisProject.h"
39
#include "ThisElementsModule.h"
40
41
#ifndef ELEMENTS_DEFAULT_LOGLEVEL
42
# define ELEMENTS_DEFAULT_LOGLEVEL DEBUG
43
#endif
44
53
#define CREATE_MANAGER_WITH_ARGS(MANAGER, ELEMENTS_PROGRAM, ...) \
54
Elements::ProgramManager MANAGER {std::unique_ptr<Elements::Program>{new ELEMENTS_PROGRAM{__VA_ARGS__}}, \
55
THIS_PROJECT_VERSION_STRING, THIS_PROJECT_NAME_STRING, \
56
THIS_PROJECT_VCS_VERSION, \
57
THIS_MODULE_VERSION_STRING, THIS_MODULE_NAME_STRING, \
58
THIS_PROJECT_SEARCH_DIRS, \
59
log4cpp::Priority::ELEMENTS_DEFAULT_LOGLEVEL}
60
69
#define CREATE_MANAGER(ELEMENTS_PROGRAM_NAME, MANAGER) \
70
CREATE_MANAGER_WITH_ARGS(MANAGER, ELEMENTS_PROGRAM_NAME, )
71
90
#define MAIN_FOR_WITH_ARGS(ELEMENTS_PROGRAM, ...) \
91
ELEMENTS_UNUSED const auto installed = {std::set_terminate(&Elements::ProgramManager::onTerminate)}; \
92
ELEMENTS_API int main(int argc, char* argv[]) \
93
{ \
94
CREATE_MANAGER_WITH_ARGS(manager, ELEMENTS_PROGRAM, __VA_ARGS__); \
95
Elements::ExitCode exit_code = manager.run(argc, argv); \
96
return static_cast<Elements::ExitCodeType>(exit_code); \
97
}
98
117
#define MAIN_FOR(ELEMENTS_PROGRAM_NAME) \
118
MAIN_FOR_WITH_ARGS(ELEMENTS_PROGRAM_NAME, )
119
120
#endif // ELEMENTSKERNEL_ELEMENTSKERNEL_MAIN_H_
121
Export.h
defines the macros to be used for explicit export of the symbols
Exit.h
define a list of standard exit codes for executables
ProgramManager.h
Unused.h
Macro to silence unused variables warnings from the compiler.
Generated by
1.8.18