30 #ifndef COMMONUTILS_H_INCLUDED
31 #define COMMONUTILS_H_INCLUDED
37 #if defined(WIN32) && (defined(_MSC_VER) || defined(SUPPORTS_WMAIN))
46 char** m_papszList =
nullptr;
47 ARGVDestroyer(
const ARGVDestroyer&) =
delete;
48 ARGVDestroyer& operator= (
const ARGVDestroyer&) =
delete;
51 explicit ARGVDestroyer(
char** papszList) : m_papszList(papszList) {}
55 extern "C" int wmain(
int argc,
wchar_t ** argv_w,
wchar_t ** );
57 #define MAIN_START(argc, argv) \
59 int wmain( int argc, wchar_t ** argv_w, wchar_t ** ) \
61 char **argv = static_cast<char**>(CPLCalloc(argc + 1, sizeof(char*))); \
62 for( int i = 0; i < argc; i++ ) \
64 argv[i] = CPLRecodeFromWChar( argv_w[i], CPL_ENC_UCS2, CPL_ENC_UTF8 ); \
66 ARGVDestroyer argvDestroyer(argv);
70 #else // defined(WIN32)
72 #define MAIN_START(argc, argv) \
73 int main( int argc, char ** argv )
77 #endif // defined(WIN32)
78 #endif // defined(__cplusplus)
83 void CPL_DLL EarlySetConfigOptions(
int argc,
char ** argv );
92 std::vector<CPLString> CPL_DLL GetOutputDriversFor(
const char* pszDestFilename,
93 int nFlagRasterVector);
94 CPLString CPL_DLL GetOutputDriverForRaster(
const char* pszDestFilename);