5 #include "../Debugging/ExceptionParser.h" 6 #include "../logfacility.h" 8 #include "pol_global_config.h" 10 #ifdef ENABLE_BENCHMARK 11 #include <benchmark/benchmark.h> 15 #define WIN32_LEAN_AND_MEAN 16 #include "../Header_Windows.h" 21 #pragma comment( lib, "psapi.lib" ) // 32bit is a bit dumb.. 49 std::setlocale( LC_TIME,
"" );
56 #if defined( _WIN32 ) && defined( _DEBUG ) && _MSC_VER >= 1300 58 int flags = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
60 _CrtSetDbgFlag( flags );
66 m_programArguments.clear();
67 for (
int i = 0; i < argc; i++ )
69 m_programArguments.push_back( std::string( argv[i] ) );
75 std::string binaryPath = argv[0];
77 char modulePath[_MAX_PATH];
78 if ( GetModuleFileName( NULL, modulePath,
sizeof modulePath ) )
79 binaryPath = modulePath;
81 PROG_CONFIG::configureProgramEnvironment( binaryPath );
83 #ifdef ENABLE_BENCHMARK 84 benchmark::Initialize( &argc, argv );
92 catch (
const char* msg )
94 ERROR_PRINT <<
"Execution aborted due to: " << msg <<
"\n";
97 catch ( std::string& str )
99 ERROR_PRINT <<
"Execution aborted due to: " << str <<
"\n";
102 catch ( std::runtime_error& re )
104 ERROR_PRINT <<
"Execution aborted due to: " << re.what() <<
"\n";
107 catch ( std::exception& ex )
109 ERROR_PRINT <<
"Execution aborted due to: " << ex.what() <<
"\n";
122 ERROR_PRINT <<
"Execution aborted due to generic exception." 134 return m_programArguments;
139 const std::vector<std::string>& binArgs = programArgs();
140 for (
size_t i = 1; i < binArgs.size(); i++ )
142 const std::string& param = binArgs[i];
147 if ( param.substr( 1, filter.size() ) == filter )
149 if ( rest !=
nullptr )
150 *rest = param.substr( 1 + filter.size(), param.size() - ( 1 + filter.size() ) );
162 std::string defaultVal )
const 164 const std::vector<std::string>& binArgs = programArgs();
165 for (
size_t i = 1; i < binArgs.size(); i++ )
167 const std::string& param = binArgs[i];
168 if ( param.substr( 0, filter.size() ) == filter )
169 return param.substr( filter.size(), param.size() - ( filter.size() ) );
177 std::string val = programArgsFindEquals( filter,
"" );
180 return strtoul( val.c_str(), NULL, hexVal ? 16 : 10 );
bool programArgsFind(const std::string &filter, std::string *rest=nullptr) const
void initLogging(LogFacility *logger)
const std::vector< std::string > & programArgs() const
int main(int argc, char *argv[])
void start(int argc, char *argv[])
void wait_for_empty_queue()
static void initGlobalExceptionCatching()
Initiates globally the exception catching (signal handlers for Linux)
std::string programArgsFindEquals(const std::string &filter, std::string defaultVal) const
LogFacility * global_logger