X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/986ecc861c52842f25151543587000176cc5244d..d8bb3c9c649ea27ccbfeb32424e6904fbe86307c:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index ed4aca1603..6c21fe8f27 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -12,7 +12,7 @@ #ifndef _WX_DEFS_H_ #define _WX_DEFS_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "defs.h" #endif @@ -95,7 +95,7 @@ // compiler defects workarounds // ---------------------------------------------------------------------------- -#if defined(__VISUALC__) && !defined(WIN32) +#if defined(__VISUALC__) && !defined(WIN32) && !defined(__WXWINCE__) // VC1.5 does not have LPTSTR type #define LPTSTR LPSTR #define LPCTSTR LPCSTR @@ -156,7 +156,7 @@ #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100) // Watcom 11+ supports bool #define HAVE_BOOL - #elif defined(__GNUWIN32__) + #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__) // Cygwin supports bool #define HAVE_BOOL #elif defined(__VISAGECPP__) @@ -174,35 +174,26 @@ typedef unsigned int bool; #endif // bool -#ifdef __cplusplus - // define boolean constants: don't use true/false here as not all compilers - // support them but also redefine TRUE which could have been defined as 1 - // by previous headers: this would be incorrect as our TRUE is supposed to - // be of type bool, just like true, not int - // - // however if the user code absolutely needs TRUE to be defined in its own - // way, it can predefine WX_TRUE_DEFINED to prevent the redefinition here - #ifdef TRUE - #ifndef WX_TRUE_DEFINED - #undef TRUE - #undef FALSE - #endif - #endif +// deal with TRUE/true stuff: we assume that if the compiler supports bool, it +// supports true/false as well and that, OTOH, if it does _not_ support bool, +// it doesn't support these keywords (this is less sure, in particular VC++ +// 4.x could be a problem here) +#ifndef HAVE_BOOL + #define true ((bool)1) + #define false ((bool)0) +#endif - #ifndef TRUE - #define TRUE ((bool)1) - #define FALSE ((bool)0) - #endif -#else // !__cplusplus - // the definitions above don't work for C sources - #ifndef TRUE - #define TRUE 1 - #endif +// for backwards compatibility, also define TRUE and FALSE +// +// note that these definitions should work both in C++ and C code, so don't +// use true/false below +#ifndef TRUE + #define TRUE 1 +#endif - #ifndef FALSE - #define FALSE 0 - #endif -#endif // C++/!C++ +#ifndef FALSE + #define FALSE 0 +#endif typedef short int WXTYPE; @@ -231,8 +222,14 @@ typedef int wxWindowID; // check for explicit keyword support #ifndef HAVE_EXPLICIT - // TODO: add more compiler tests here - #if defined(__VISUALC__) && (__VISUALC__ > 1020) + #if defined(__VISUALC__) && (__VISUALC__ >= 1200) + // VC++ 6.0 has explicit (what about the earlier versions?) + #define HAVE_EXPLICIT + #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520) + // BC++ 4.52 doesn't support explicit, CBuilder 1 does + #define HAVE_EXPLICIT + #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400) + // Metrowerks CW6 or higher has explicit #define HAVE_EXPLICIT #endif #endif // !HAVE_EXPLICIT @@ -248,7 +245,7 @@ typedef int wxWindowID; // ---------------------------------------------------------------------------- // stdcall is used for all functions called by Windows under Windows -#ifdef __WINDOWS__ +#if defined(__WINDOWS__) #if defined(__GNUWIN32__) #define wxSTDCALL __attribute__((stdcall)) #else @@ -364,6 +361,36 @@ class WXDLLEXPORT wxEvent; // Very common macros // ---------------------------------------------------------------------------- +// Printf-like attribute definitions to obtain warnings with GNU C/C++ +#if defined(__GNUC__) && !wxUSE_UNICODE +# ifndef ATTRIBUTE_PRINTF +# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) +# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) +# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) +# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) +# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) +# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) +# endif /* ATTRIBUTE_PRINTF */ +#else +# ifndef ATTRIBUTE_PRINTF +# define ATTRIBUTE_PRINTF +# define ATTRIBUTE_PRINTF_1 +# define ATTRIBUTE_PRINTF_2 +# define ATTRIBUTE_PRINTF_3 +# define ATTRIBUTE_PRINTF_4 +# define ATTRIBUTE_PRINTF_5 +# endif /* ATTRIBUTE_PRINTF */ +#endif + +// Macro to issue warning when using deprecated functions with gcc3 or MSVC7: +#if wxCHECK_GCC_VERSION(3, 1) + #define wxDEPRECATED(x) x __attribute__ ((deprecated)) +#elif defined(__VISUALC__) && (__VISUALC__ >= 1300) + #define wxDEPRECATED(x) __declspec(deprecated) x +#else + #define wxDEPRECATED(x) x +#endif + // everybody gets the assert and other debug macros #ifdef __cplusplus #include "wx/debug.h" @@ -441,27 +468,6 @@ class WXDLLEXPORT wxEvent; typedef void (*wxFunction) (wxObject&, wxEvent&); #endif -// Printf-like attribute definitions to obtain warnings with GNU C/C++ -#if defined(__GNUC__) && !wxUSE_UNICODE -# ifndef ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) -# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) -# define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) -# define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) -# define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) -# define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) -# endif /* ATTRIBUTE_PRINTF */ -#else -# ifndef ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF -# define ATTRIBUTE_PRINTF_1 -# define ATTRIBUTE_PRINTF_2 -# define ATTRIBUTE_PRINTF_3 -# define ATTRIBUTE_PRINTF_4 -# define ATTRIBUTE_PRINTF_5 -# endif /* ATTRIBUTE_PRINTF */ -#endif - // ---------------------------------------------------------------------------- // OS mnemonics -- Identify the running OS (useful for Windows) // ---------------------------------------------------------------------------- @@ -1093,6 +1099,7 @@ enum wxBorder * wxRadioButton style flag */ #define wxRB_GROUP 0x0004 +#define wxRB_SINGLE 0x0008 /* * wxGauge flags @@ -1166,8 +1173,12 @@ enum wxBorder */ #define wxTC_RIGHTJUSTIFY 0x0010 #define wxTC_FIXEDWIDTH 0x0020 -#define wxTC_OWNERDRAW 0x0040 +#define wxTC_TOP 0x0000 // default +#define wxTC_LEFT 0x0020 +#define wxTC_RIGHT 0x0040 +#define wxTC_BOTTOM 0x0080 #define wxTC_MULTILINE wxNB_MULTILINE +#define wxTC_OWNERDRAW 0x0200 // wxToolBar style flags #define wxTB_HORIZONTAL wxHORIZONTAL // == 0x0004 @@ -1782,16 +1793,16 @@ enum wxPrintMode // ---------------------------------------------------------------------------- // define this macro if font handling is done using the X font names -#if defined(__WXGTK__) || defined(__X__) +#if (defined(__WXGTK__) && !defined(__WXGTK20__)) || defined(__X__) #define _WX_X_FONTLIKE #endif // macro to specify "All Files" on different platforms #if defined(__WXMSW__) || defined(__WXPM__) -# define wxALL_FILES_PATTERN "*.*" +# define wxALL_FILES_PATTERN wxT("*.*") # define wxALL_FILES gettext_noop("All files (*.*)|*.*") #else -# define wxALL_FILES_PATTERN "*" +# define wxALL_FILES_PATTERN wxT("*") # define wxALL_FILES gettext_noop("All files (*)|*") #endif @@ -1813,6 +1824,8 @@ typedef void* WXRECTPTR ; typedef void* WXPOINTPTR ; typedef void* WXHWND ; typedef void* WXEVENTREF ; +typedef void* WXEVENTHANDLERREF ; +typedef void* WXEVENTHANDLERCALLREF ; typedef void* WXAPPLEEVENTREF ; typedef void* WXHDC ; typedef void* WXHMENU ; @@ -1911,7 +1924,7 @@ typedef WXHWND WXWidget; typedef unsigned int WXWPARAM; typedef long WXLPARAM; -#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__) +#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); #else typedef int (__stdcall *WXFARPROC)(); @@ -2077,13 +2090,24 @@ typedef GtkWidget *WXWidget; #endif #ifdef __WXGTK20__ +/* Input method thing */ +typedef struct _GtkIMMulticontext GtkIMMulticontext; +#endif // __WXGTK20__ + +#endif // __WXGTK__ + +#if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE) +#define wxUSE_PANGO 1 +#else +#define wxUSE_PANGO 0 +#endif + +#if wxUSE_PANGO /* Stand-ins for Pango types */ typedef struct _PangoContext PangoContext; typedef struct _PangoLayout PangoLayout; typedef struct _PangoFontDescription PangoFontDescription; -#endif // GTK+ 2.0 - -#endif // GTK +#endif #ifdef __WXMGL__ typedef struct window_t *WXWidget;