Elements
5.8
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
52
#define CREATE_MANAGER_WITH_ARGS(MANAGER, ELEMENTS_PROGRAM, ...) \
53
Elements::ProgramManager MANAGER {std::unique_ptr<Elements::Program>{new ELEMENTS_PROGRAM{__VA_ARGS__}}, \
54
THIS_PROJECT_VERSION_STRING, THIS_PROJECT_NAME_STRING, \
55
THIS_PROJECT_VCS_VERSION, \
56
THIS_MODULE_VERSION_STRING, THIS_MODULE_NAME_STRING, \
57
THIS_PROJECT_SEARCH_DIRS, \
58
log4cpp::Priority::ELEMENTS_DEFAULT_LOGLEVEL}
59
67
#define CREATE_MANAGER(ELEMENTS_PROGRAM_NAME, MANAGER) \
68
CREATE_MANAGER_WITH_ARGS(MANAGER, ELEMENTS_PROGRAM_NAME, )
69
87
#define MAIN_FOR_WITH_ARGS(ELEMENTS_PROGRAM, ...) \
88
ELEMENTS_UNUSED const auto installed = {std::set_terminate(&Elements::ProgramManager::onTerminate)}; \
89
ELEMENTS_API int main(int argc, char* argv[]) \
90
{ \
91
CREATE_MANAGER_WITH_ARGS(manager, ELEMENTS_PROGRAM, __VA_ARGS__); \
92
Elements::ExitCode exit_code = manager.run(argc, argv); \
93
return static_cast<Elements::ExitCodeType>(exit_code); \
94
}
95
113
#define MAIN_FOR(ELEMENTS_PROGRAM_NAME) \
114
MAIN_FOR_WITH_ARGS(ELEMENTS_PROGRAM_NAME, )
115
116
#endif // ELEMENTSKERNEL_ELEMENTSKERNEL_MAIN_H_
117
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.17