Implement wx-prefixed macros versions of DECLARE/IMPLEMENT_APP_* macros.
Implement compatibility aliases for non-prefixed macro names. Require a final semicolon where possible. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -399,7 +399,7 @@ public:
|
||||
const wxChar *msg);
|
||||
|
||||
// check that the wxBuildOptions object (constructed in the application
|
||||
// itself, usually the one from IMPLEMENT_APP() macro) matches the build
|
||||
// itself, usually the one from wxIMPLEMENT_APP() macro) matches the build
|
||||
// options of the library and abort if it doesn't
|
||||
static bool CheckBuildOptions(const char *optionsSignature,
|
||||
const char *componentName);
|
||||
@@ -728,7 +728,7 @@ protected:
|
||||
// object of type wxApp
|
||||
//
|
||||
// note that instead of using of wxTheApp in application code you should
|
||||
// consider using DECLARE_APP() after which you may call wxGetApp() which will
|
||||
// consider using wxDECLARE_APP() after which you may call wxGetApp() which will
|
||||
// return the object of the correct type (i.e. MyApp and not wxApp)
|
||||
//
|
||||
// the cast is safe as in GUI build we only use wxApp, not wxAppConsole, and in
|
||||
@@ -773,11 +773,11 @@ public:
|
||||
{ wxApp::SetInitializerFunction(fn); }
|
||||
};
|
||||
|
||||
// the code below defines a IMPLEMENT_WXWIN_MAIN macro which you can use if
|
||||
// the code below defines a wxIMPLEMENT_WXWIN_MAIN macro which you can use if
|
||||
// your compiler really, really wants main() to be in your main program (e.g.
|
||||
// hello.cpp). Now IMPLEMENT_APP should add this code if required.
|
||||
// hello.cpp). Now wxIMPLEMENT_APP should add this code if required.
|
||||
|
||||
#define IMPLEMENT_WXWIN_MAIN_CONSOLE \
|
||||
#define wxIMPLEMENT_WXWIN_MAIN_CONSOLE \
|
||||
int main(int argc, char **argv) \
|
||||
{ \
|
||||
wxDISABLE_DEBUG_SUPPORT(); \
|
||||
@@ -786,26 +786,26 @@ public:
|
||||
}
|
||||
|
||||
// port-specific header could have defined it already in some special way
|
||||
#ifndef IMPLEMENT_WXWIN_MAIN
|
||||
#define IMPLEMENT_WXWIN_MAIN IMPLEMENT_WXWIN_MAIN_CONSOLE
|
||||
#endif // defined(IMPLEMENT_WXWIN_MAIN)
|
||||
#ifndef wxIMPLEMENT_WXWIN_MAIN
|
||||
#define wxIMPLEMENT_WXWIN_MAIN wxIMPLEMENT_WXWIN_MAIN_CONSOLE
|
||||
#endif // defined(wxIMPLEMENT_WXWIN_MAIN)
|
||||
|
||||
#ifdef __WXUNIVERSAL__
|
||||
#include "wx/univ/theme.h"
|
||||
|
||||
#ifdef wxUNIV_DEFAULT_THEME
|
||||
#define IMPLEMENT_WX_THEME_SUPPORT \
|
||||
#define wxIMPLEMENT_WX_THEME_SUPPORT \
|
||||
WX_USE_THEME(wxUNIV_DEFAULT_THEME);
|
||||
#else
|
||||
#define IMPLEMENT_WX_THEME_SUPPORT
|
||||
#define wxIMPLEMENT_WX_THEME_SUPPORT
|
||||
#endif
|
||||
#else
|
||||
#define IMPLEMENT_WX_THEME_SUPPORT
|
||||
#define wxIMPLEMENT_WX_THEME_SUPPORT
|
||||
#endif
|
||||
|
||||
// Use this macro if you want to define your own main() or WinMain() function
|
||||
// and call wxEntry() from there.
|
||||
#define IMPLEMENT_APP_NO_MAIN(appname) \
|
||||
#define wxIMPLEMENT_APP_NO_MAIN(appname) \
|
||||
wxAppConsole *wxCreateApp() \
|
||||
{ \
|
||||
wxAppConsole::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, \
|
||||
@@ -814,36 +814,54 @@ public:
|
||||
} \
|
||||
wxAppInitializer \
|
||||
wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \
|
||||
DECLARE_APP(appname) \
|
||||
appname& wxGetApp() { return *static_cast<appname*>(wxApp::GetInstance()); }
|
||||
appname& wxGetApp() { return *static_cast<appname*>(wxApp::GetInstance()); } \
|
||||
wxDECLARE_APP(appname)
|
||||
|
||||
// Same as IMPLEMENT_APP() normally but doesn't include themes support in
|
||||
// Same as wxIMPLEMENT_APP() normally but doesn't include themes support in
|
||||
// wxUniversal builds
|
||||
#define IMPLEMENT_APP_NO_THEMES(appname) \
|
||||
IMPLEMENT_APP_NO_MAIN(appname) \
|
||||
IMPLEMENT_WXWIN_MAIN
|
||||
#define wxIMPLEMENT_APP_NO_THEMES(appname) \
|
||||
wxIMPLEMENT_WXWIN_MAIN \
|
||||
wxIMPLEMENT_APP_NO_MAIN(appname)
|
||||
|
||||
// Use this macro exactly once, the argument is the name of the wxApp-derived
|
||||
// class which is the class of your application.
|
||||
#define IMPLEMENT_APP(appname) \
|
||||
IMPLEMENT_APP_NO_THEMES(appname) \
|
||||
IMPLEMENT_WX_THEME_SUPPORT
|
||||
#define wxIMPLEMENT_APP(appname) \
|
||||
wxIMPLEMENT_WX_THEME_SUPPORT \
|
||||
wxIMPLEMENT_APP_NO_THEMES(appname)
|
||||
|
||||
// Same as IMPLEMENT_APP(), but for console applications.
|
||||
#define IMPLEMENT_APP_CONSOLE(appname) \
|
||||
IMPLEMENT_APP_NO_MAIN(appname) \
|
||||
IMPLEMENT_WXWIN_MAIN_CONSOLE
|
||||
#define wxIMPLEMENT_APP_CONSOLE(appname) \
|
||||
wxIMPLEMENT_WXWIN_MAIN_CONSOLE \
|
||||
wxIMPLEMENT_APP_NO_MAIN(appname)
|
||||
|
||||
// this macro can be used multiple times and just allows you to use wxGetApp()
|
||||
// function
|
||||
#define DECLARE_APP(appname) extern appname& wxGetApp();
|
||||
#define wxDECLARE_APP(appname) \
|
||||
extern appname& wxGetApp()
|
||||
|
||||
|
||||
// declare the stuff defined by IMPLEMENT_APP() macro, it's not really needed
|
||||
// declare the stuff defined by wxIMPLEMENT_APP() macro, it's not really needed
|
||||
// anywhere else but at the very least it suppresses icc warnings about
|
||||
// defining extern symbols without prior declaration, and it shouldn't do any
|
||||
// harm
|
||||
extern wxAppConsole *wxCreateApp();
|
||||
extern wxAppInitializer wxTheAppInitializer;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Compatibility macro aliases
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// deprecated variants _not_ requiring a semicolon after them
|
||||
// (note that also some wx-prefixed macro do _not_ require a semicolon because
|
||||
// it's not always possible to force the compire to require it)
|
||||
|
||||
#define IMPLEMENT_WXWIN_MAIN_CONSOLE wxIMPLEMENT_WXWIN_MAIN_CONSOLE
|
||||
#define IMPLEMENT_WXWIN_MAIN wxIMPLEMENT_WXWIN_MAIN
|
||||
#define IMPLEMENT_WX_THEME_SUPPORT wxIMPLEMENT_WX_THEME_SUPPORT
|
||||
#define IMPLEMENT_APP_NO_MAIN(app) wxIMPLEMENT_APP_NO_MAIN(app);
|
||||
#define IMPLEMENT_APP_NO_THEMES(app) wxIMPLEMENT_APP_NO_THEMES(app);
|
||||
#define IMPLEMENT_APP(app) wxIMPLEMENT_APP(app);
|
||||
#define IMPLEMENT_APP_CONSOLE(app) wxIMPLEMENT_APP_CONSOLE(app);
|
||||
#define DECLARE_APP(app) wxDECLARE_APP(app);
|
||||
|
||||
#endif // _WX_APP_H_BASE_
|
||||
|
@@ -106,7 +106,7 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Use this macro to check build options. Adding it to a file in DLL will
|
||||
// ensure that the DLL checks build options in same way IMPLEMENT_APP() does.
|
||||
// ensure that the DLL checks build options in same way wxIMPLEMENT_APP() does.
|
||||
#define WX_CHECK_BUILD_OPTIONS(libName) \
|
||||
static struct wxBuildOptionsChecker \
|
||||
{ \
|
||||
|
@@ -148,7 +148,7 @@ inline void wxDisableAsserts() { wxSetAssertHandler(NULL); }
|
||||
/*
|
||||
A macro which disables asserts for applications compiled in release build.
|
||||
|
||||
By default, IMPLEMENT_APP (or rather IMPLEMENT_WXWIN_MAIN) disable the
|
||||
By default, wxIMPLEMENT_APP (or rather wxIMPLEMENT_WXWIN_MAIN) disable the
|
||||
asserts in the applications compiled in the release build by calling this.
|
||||
It does nothing if NDEBUG is not defined.
|
||||
*/
|
||||
|
@@ -55,7 +55,7 @@ extern int WXDLLIMPEXP_BASE wxEntry(int& argc, char **argv);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Using the library without (explicit) application object: you may avoid using
|
||||
// DECLARE_APP and IMPLEMENT_APP macros and call the functions below instead at
|
||||
// wxDECLARE_APP and wxIMPLEMENT_APP macros and call the functions below instead at
|
||||
// the program startup and termination
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
@@ -1571,7 +1571,7 @@ wxSafeShowMessage(const wxString& title, const wxString& text);
|
||||
#endif
|
||||
|
||||
// macro which disables debug logging in release builds: this is done by
|
||||
// default by IMPLEMENT_APP() so usually it doesn't need to be used explicitly
|
||||
// default by wxIMPLEMENT_APP() so usually it doesn't need to be used explicitly
|
||||
#if defined(NDEBUG) && wxUSE_LOG_DEBUG
|
||||
#define wxDISABLE_DEBUG_LOGGING_IN_RELEASE_BUILD() \
|
||||
wxLog::SetLogLevel(wxLOG_Info)
|
||||
|
@@ -127,7 +127,7 @@ inline int wxApp::GetShell32Version()
|
||||
#endif // __WXWINCE__
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// MSW-specific wxEntry() overload and IMPLEMENT_WXWIN_MAIN definition
|
||||
// MSW-specific wxEntry() overload and wxIMPLEMENT_WXWIN_MAIN definition
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// we need HINSTANCE declaration to define WinMain()
|
||||
@@ -164,11 +164,11 @@ extern WXDLLIMPEXP_CORE int
|
||||
// command line flag is used, the linker expects to find wWinMain instead
|
||||
// of WinMain. This flag causes the compiler to define _UNICODE and
|
||||
// UNICODE symbols and there's no way to detect its use, so we have to
|
||||
// define both WinMain and wWinMain so that IMPLEMENT_WXWIN_MAIN works
|
||||
// define both WinMain and wWinMain so that wxIMPLEMENT_WXWIN_MAIN works
|
||||
// for both code compiled with and without -WU.
|
||||
// See http://sourceforge.net/tracker/?func=detail&atid=309863&aid=1935997&group_id=9863
|
||||
// for more details.
|
||||
#define IMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD \
|
||||
#define wxIMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD \
|
||||
extern "C" int WINAPI wWinMain(HINSTANCE hInstance, \
|
||||
HINSTANCE hPrevInstance, \
|
||||
wchar_t * WXUNUSED(lpCmdLine), \
|
||||
@@ -182,10 +182,10 @@ extern WXDLLIMPEXP_CORE int
|
||||
return wxEntry(hInstance, hPrevInstance, NULL, nCmdShow); \
|
||||
}
|
||||
#else
|
||||
#define IMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD
|
||||
#define wxIMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD
|
||||
#endif // defined(__BORLANDC__) && wxUSE_UNICODE
|
||||
|
||||
#define IMPLEMENT_WXWIN_MAIN \
|
||||
#define wxIMPLEMENT_WXWIN_MAIN \
|
||||
extern "C" int WINAPI WinMain(HINSTANCE hInstance, \
|
||||
HINSTANCE hPrevInstance, \
|
||||
wxCmdLineArgType WXUNUSED(lpCmdLine), \
|
||||
@@ -199,7 +199,7 @@ extern WXDLLIMPEXP_CORE int
|
||||
/* wWinMain() above too. */ \
|
||||
return wxEntry(hInstance, hPrevInstance, NULL, nCmdShow); \
|
||||
} \
|
||||
IMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD
|
||||
wxIMPLEMENT_WXWIN_MAIN_BORLAND_NONSTANDARD
|
||||
|
||||
|
||||
#endif // _WX_APP_H_
|
||||
|
@@ -85,7 +85,7 @@ protected:
|
||||
|
||||
extern WXDLLIMPEXP_CORE int wxEntry();
|
||||
|
||||
#define IMPLEMENT_WXWIN_MAIN \
|
||||
#define wxIMPLEMENT_WXWIN_MAIN \
|
||||
\
|
||||
extern "C" { \
|
||||
\
|
||||
|
Reference in New Issue
Block a user