X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f11bdd03b9623a61bfe3137beeefd7b1256bb9a1..6d9022fe3bb50a75b9b5eaf5cf32558e518ba310:/include/wx/defs.h?ds=sidebyside diff --git a/include/wx/defs.h b/include/wx/defs.h index 7f603a5422..a3ea865ebd 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -13,182 +13,30 @@ #define _WX_DEFS_H_ #ifdef __GNUG__ - #pragma interface "defs.h" +#pragma interface "defs.h" #endif // ---------------------------------------------------------------------------- // compiler and OS identification // ---------------------------------------------------------------------------- -// first define Windows symbols if they're not defined on the command line: we -// can autodetect everything we need if _WIN32 is defined -#if defined(_WIN32) || defined(WIN32) || defined(__NT__) - #ifndef __WXMSW__ - #define __WXMSW__ - #endif - - #ifndef __WIN32__ - #define __WIN32__ - #endif - - // Win95 means Win95-style UI, i.e. Win9x/NT 4+ - #if !defined(__WIN95__) && defined(WINVER) && (WINVER >= 0x0400) - #define __WIN95__ - #endif -#endif // Win32 - -#ifdef __WXWINE__ - #ifndef __WIN32__ - #define __WIN32__ - #endif - #ifndef __WIN95__ - #define __WIN95__ - #endif - #ifndef STRICT - #define STRICT - #endif -#endif // WINE - -#if defined(TWIN32) && !defined(__TWIN32__) - #define __TWIN32__ -#endif // Twin32 - -#include "wx/setup.h" - -// old C++ headers (like ) declare classes in the global namespace -// while the new, standard ones (like ) do it in std:: namespace -// -// using this macro allows constuctions like "wxSTD iostream" to work in -// either case -#if !wxUSE_IOSTREAMH - #define wxSTD std:: -#else - #define wxSTD -#endif +#include "wx/platform.h" -// just in case they were defined in setup.h -#ifdef PACKAGE -#undef PACKAGE -#endif - -#ifdef VERSION -#undef VERSION +// Make sure the environment is set correctly +#if defined(__WXMSW__) && defined(__X__) +#error "Target can't be both X and Windows" +#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ + !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ + !defined(__WXMGL__) && !defined(__WXX11__) && wxUSE_GUI +#ifdef __UNIX__ +#error "No Target! You should use wx-config program for compilation flags!" +#else // !Unix +#error "No Target! You should use supplied makefiles for compilation!" +#endif // Unix/!Unix #endif -// OS: first test for generic Unix defines, then for particular flavours and -// finally for Unix-like systems -#if defined(__UNIX__) || defined(__unix) || defined(__unix__) || \ - defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) || \ - defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \ - defined(__EMX__) || defined(__VMS) || defined(__BEOS__) - - #define __UNIX_LIKE__ - - // Helps SGI compilation, apparently - #ifdef __SGI__ - #ifdef __GNUG__ - #define __need_wchar_t - #else // !gcc - // Note I use the term __SGI_CC__ for both cc and CC, its not a good - // idea to mix gcc and cc/CC, the name mangling is different - #define __SGI_CC__ - #endif // gcc/!gcc - #endif // SGI - - #if defined(sun) || defined(__SUN__) - #ifndef __GNUG__ - #ifndef __SUNCC__ - #define __SUNCC__ - #endif // Sun CC - #endif - #endif // Sun - - #ifdef __EMX__ - #define OS2EMX_PLAIN_CHAR - #endif - - // define __HPUX__ for HP-UX where standard macro is __hpux - #if defined(__hpux) && !defined(__HPUX__) - #define __HPUX__ - #endif // HP-UX - - #if defined(__WXMAC__) && defined(__DARWIN__) - // Mac OS X - - // Some code has been added to workaround defects(?) in the - // bundled gcc compiler. These corrections are identified by: - // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) - - #include - #endif // __WXMAC__ && __DARWIN__ -#elif defined(applec) || \ - defined(THINK_C) || \ - (defined(__MWERKS__) && !defined(__INTEL__)) - // MacOS -#elif defined(__WXMAC__) && defined(__DARWIN__) - // Mac OS X - #define __UNIX_LIKE__ - - // Some code has been added to workaround defects(?) in the - // bundled gcc compiler. These corrections are identified by: - // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) - - #include -#elif defined(__OS2__) - #if defined(__IBMCPP__) - #define __VISAGEAVER__ __IBMCPP__ - #endif - #ifndef __WXOS2__ - #define __WXOS2__ - #endif - #ifndef __WXPM__ - #define __WXPM__ - #endif - - // Place other OS/2 compiler environment defines here - #if defined(__VISAGECPP__) - // VisualAge is the only thing that understands _Optlink - #define LINKAGEMODE _Optlink - #endif - #define wxSIZE_T_IS_UINT -#else // Windows - #ifndef __WINDOWS__ - #define __WINDOWS__ - #endif // Windows - - // to be changed for Win64! - #ifndef __WIN32__ - #define __WIN16__ - #endif - - // define another standard symbol for Microsoft Visual C++: the standard one - // (_MSC_VER) is also defined by Metrowerks compiler - #if defined(_MSC_VER) && !defined(__MWERKS__) - #define __VISUALC__ _MSC_VER - #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__) - #define __BORLANDC__ - #elif defined(__WATCOMC__) - #elif defined(__SC__) - #define __SYMANTECC__ - #endif // compiler - - // size_t is the same as unsigned int for all Windows compilers we know, - // so define it if it hadn't been done by configure yet - #if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) - #define wxSIZE_T_IS_UINT - #endif -#endif // OS - -// if we're on a Unix system but didn't use configure (so that setup.h didn't -// define __UNIX__), do define __UNIX__ now -#if !defined(__UNIX__) && defined(__UNIX_LIKE__) - #define __UNIX__ -#endif // Unix - -// LINKAGEMODE mode is empty for everyting except OS/2 -#ifndef LINKAGEMODE - #define LINKAGEMODE -#endif // LINKAGEMODE +// include the feature test macros +#include "wx/features.h" // suppress some Visual C++ warnings #ifdef __VISUALC__ @@ -210,8 +58,8 @@ // suppress some Watcom C++ warnings #ifdef __WATCOMC__ -# pragma warning 849 9 // Disable 'virtual function hidden' -# pragma warning 549 9 // Disable 'operand contains compiler generated information' +# pragma warning 849 9 // Disable 'virtual function hidden' +# pragma warning 549 9 // Disable 'operand contains compiler generated information' #endif // __VISUALC__ // suppress some Salford C++ warnings @@ -223,72 +71,20 @@ # pragma suppress 571 // Virtual function hiding #endif // __SALFORDC__ -#if defined(__VISUALC__) && !defined(WIN32) - // VC1.5 does not have LPTSTR type - #define LPTSTR LPSTR - #define LPCTSTR LPCSTR -#endif // VC++ 1.5 - -// Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, -// so define it ourselves (newer versions do it for all files, though, and -// don't allow it to be redefined) -#ifdef __DECCXX - #if !defined(__VMS) && !defined(__cplusplus) - #define __cplusplus - #endif -#endif // __DECCXX - -// Resolves linking problems under HP-UX -#if defined(__HPUX__) && defined(__GNUG__) - #define va_list __gnuc_va_list -#endif // HP-UX - -// This macro can be used to check that the version of mingw32 compiler is -// at least maj.min -#if defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || defined( __CYGWIN__ ) - #include "wx/msw/gccpriv.h" -#else - #undef wxCHECK_W32API_VERSION - #define wxCHECK_W32API_VERSION(maj, min) (0) -#endif - -#if defined(__HPUX__) && !defined(__WXGTK__) - #ifndef __WXMOTIF__ - #define __WXMOTIF__ - #endif // __WXMOTIF__ -#endif - -#if defined(__WXMOTIF__) - #define __X__ -#endif - -// Make sure the environment is set correctly -#if defined(__WXMSW__) && defined(__X__) - #error "Target can't be both X and Windows" -#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ - !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ - !defined(__WXQT__) && !defined(__WXMGL__) && wxUSE_GUI - #ifdef __UNIX__ - #error "No Target! You should use wx-config program for compilation flags!" - #else // !Unix - #error "No Target! You should use supplied makefiles for compilation!" - #endif // Unix/!Unix -#endif - -#include "wx/version.h" - // ---------------------------------------------------------------------------- -// compatibility defines +// wxWindows version and compatibility defines // ---------------------------------------------------------------------------- +#include "wx/version.h" + // possibility to build non GUI apps is new, so don't burden ourselves with // compatibility code #if !wxUSE_GUI - #undef WXWIN_COMPATIBILITY_2 - #undef WXWIN_COMPATIBILITY_2_2 +#undef WXWIN_COMPATIBILITY_2 +#undef WXWIN_COMPATIBILITY_2_2 - #define WXWIN_COMPATIBILITY_2 0 - #define WXWIN_COMPATIBILITY_2_2 0 +#define WXWIN_COMPATIBILITY_2 0 +#define WXWIN_COMPATIBILITY_2_2 0 #endif // !GUI // ============================================================================ @@ -296,17 +92,40 @@ // ============================================================================ // ---------------------------------------------------------------------------- -// check for native bool type and TRUE/FALSE constants +// compiler defects workarounds // ---------------------------------------------------------------------------- -// define boolean constants if not done yet -#ifndef TRUE - #define TRUE 1 +#if defined(__VISUALC__) && !defined(WIN32) + // VC1.5 does not have LPTSTR type +#define LPTSTR LPSTR +#define LPCTSTR LPCSTR +#elif defined(__BORLANDC__) && !defined(__WIN32__) +#ifndef LPTSTR +#define LPTSTR LPSTR #endif - -#ifndef FALSE - #define FALSE 0 +#ifndef LPCTSTR +#define LPCTSTR LPSTR #endif +#endif + + +/* + Digital Unix C++ compiler only defines this symbol for .cxx and .hxx files, + so define it ourselves (newer versions do it for all files, though, and + don't allow it to be redefined) + */ +#if defined(__DECCXX) && !defined(__VMS) && !defined(__cplusplus) +#define __cplusplus +#endif /* __DECCXX */ + +// Resolves linking problems under HP-UX when compiling with gcc/g++ +#if defined(__HPUX__) && defined(__GNUG__) +#define va_list __gnuc_va_list +#endif // HP-UX + +// ---------------------------------------------------------------------------- +// check for native bool type and TRUE/FALSE constants +// ---------------------------------------------------------------------------- // Add more tests here for Windows compilers that already define bool // (under Unix, configure tests for this) @@ -315,6 +134,9 @@ #if (__MWERKS__ >= 0x1000) && __option(bool) #define HAVE_BOOL #endif + #elif defined(__APPLE__) && defined(__APPLE_CC__) + // Apple bundled gcc supports bool + #define HAVE_BOOL #elif defined(__VISUALC__) && (__VISUALC__ == 1020) // in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed) // but not implemented, so we must #define it @@ -345,15 +167,31 @@ #endif // compilers #endif // HAVE_BOOL -#if !defined(HAVE_BOOL) && !defined(bool) +#if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS) // NB: of course, this doesn't replace the standard type, because, for // example, overloading based on bool/int parameter doesn't work and // so should be avoided in portable programs -#ifndef VMS -typedef unsigned int bool; -#endif + typedef unsigned int bool; #endif // bool +#ifdef __cplusplus + // define boolean constants: don't use true/false here as not all compilers + // support them + #undef TRUE + #undef FALSE + #define TRUE ((bool)1) + #define FALSE ((bool)0) +#else // !__cplusplus + // the definitions above don't work for C sources + #ifndef TRUE + #define TRUE 1 + #endif + + #ifndef FALSE + #define FALSE 0 + #endif +#endif // C++/!C++ + typedef short int WXTYPE; // special care should be taken with this type under Windows where the real @@ -363,18 +201,20 @@ typedef short int WXTYPE; // because -1 is a valid (and largely used) value for window id. typedef int wxWindowID; -// Macro to cut down on compiler warnings. -#if REMOVE_UNUSED_ARG - #define WXUNUSED(identifier) /* identifier */ -#else // stupid, broken compiler - #define WXUNUSED(identifier) identifier -#endif +// ---------------------------------------------------------------------------- +// other feature tests +// ---------------------------------------------------------------------------- -// some arguments are only used in debug mode, but unused in release one -#ifdef __WXDEBUG__ - #define WXUNUSED_UNLESS_DEBUG(param) param +// Every ride down a slippery slope begins with a single step.. +// +// Yes, using nested classes is indeed against our coding standards in +// general, but there are places where you can use them to advantage +// without totally breaking ports that cannot use them. If you do, then +// wrap it in this guard, but such cases should still be relatively rare. +#ifndef __WIN16__ + #define wxUSE_NESTED_CLASSES 1 #else - #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) + #define wxUSE_NESTED_CLASSES 0 #endif // ---------------------------------------------------------------------------- @@ -395,6 +235,11 @@ typedef int wxWindowID; #define wxSTDCALL #endif // platform +// LINKAGEMODE mode is empty for everyting except OS/2 +#ifndef LINKAGEMODE + #define LINKAGEMODE +#endif // LINKAGEMODE + // wxCALLBACK should be used for the functions which are called back by // Windows (such as compare function for wxListCtrl) #if defined(__WIN32__) && !defined(__WXMICROWIN__) @@ -404,16 +249,19 @@ typedef int wxWindowID; #define wxCALLBACK #endif // platform -// callling convention for the qsort(3) callback +// generic calling convention for the extern "C" functions #if defined(__VISUALC__) - #define wxCMPFUNC_CONV _cdecl + #define wxC_CALLING_CONV _cdecl #elif defined(__VISAGECPP__) - #define wxCMPFUNC_CONV _Optlink + #define wxC_CALLING_CONV _Optlink #else // !Visual C++ - #define wxCMPFUNC_CONV + #define wxC_CALLING_CONV #endif // compiler +// callling convention for the qsort(3) callback +#define wxCMPFUNC_CONV wxC_CALLING_CONV + // compatibility :-( #define CMPFUNC_CONV wxCMPFUNC_CONV @@ -422,62 +270,53 @@ typedef int wxWindowID; // ---------------------------------------------------------------------------- #if defined(__WXMSW__) - -// __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well as VC++ and gcc -#if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) -# ifdef WXMAKINGDLL -# define WXDLLEXPORT __declspec( dllexport ) -# define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type -# define WXDLLEXPORT_CTORFN -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT __declspec( dllimport ) -# define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type -# define WXDLLEXPORT_CTORFN -# else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -# endif -#else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -#endif - + // __declspec works in BC++ 5 and later, Watcom C++ 11.0 and later as well + // as VC++ and gcc + #if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNUC__) || defined(__WATCOMC__) + #define WXEXPORT __declspec(dllexport) + #define WXIMPORT __declspec(dllimport) + #else // compiler doesn't support __declspec() + #define WXEXPORT + #define WXIMPORT + #endif #elif defined(__WXPM__) + #if defined (__WATCOMC__) + #define WXEXPORT __declspec(dllexport) + // __declspec(dllimport) prepends __imp to imported symbols. We do NOT + // want that! + #define WXIMPORT + #elif (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) + #define WXEXPORT _Export + #define WXIMPORT _Export + #endif +#elif defined(__WXMAC__) + #ifdef __MWERKS__ + #define WXEXPORT __declspec(export) + #define WXIMPORT __declspec(import) + #endif +#endif -# if (!(defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ))) - -# ifdef WXMAKINGDLL -# define WXDLLEXPORT _Export -# define WXDLLEXPORT_DATA(type) _Export type -# define WXDLLEXPORT_CTORFN -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT _Export -# define WXDLLEXPORT_DATA(type) _Export type -# define WXDLLEXPORT_CTORFN -# else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -# endif - -# else - -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN - -# endif - -#else // !(MSW or OS2) - -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN - +// for other platforms/compilers we don't anything +#ifndef WXEXPORT + #define WXEXPORT + #define WXIMPORT #endif +// WXDLLEXPORT maps to export declaration when building the DLL, to import +// declaration if using it or to nothing at all if we don't use wxWin DLL +#ifdef WXMAKINGDLL + #define WXDLLEXPORT WXEXPORT + #define WXDLLEXPORT_DATA(type) WXEXPORT type + #define WXDLLEXPORT_CTORFN +#elif defined(WXUSINGDLL) + #define WXDLLEXPORT WXIMPORT + #define WXDLLEXPORT_DATA(type) WXIMPORT type + #define WXDLLEXPORT_CTORFN +#else // not making nor using DLL + #define WXDLLEXPORT + #define WXDLLEXPORT_DATA(type) type + #define WXDLLEXPORT_CTORFN +#endif // For ostream, istream ofstream #if defined(__BORLANDC__) && defined( _RTLDLL ) @@ -491,8 +330,8 @@ class WXDLLEXPORT wxObject; class WXDLLEXPORT wxEvent; #endif - /** symbolic constant used by all Find()-like functions returning positive - integer on success as failure indicator */ +// symbolic constant used by all Find()-like functions returning positive +// integer on success as failure indicator #define wxNOT_FOUND (-1) // ---------------------------------------------------------------------------- @@ -504,38 +343,36 @@ class WXDLLEXPORT wxEvent; #include "wx/debug.h" #endif -// NULL declaration +// NULL declaration: it must be defined as 0 for C++ programs (in particular, +// it must not be defined as "(void *)0" which is standard for C but completely +// breaks C++ code) #include -//@{ -/// delete pointer if it is not NULL and NULL it afterwards +// Macro to cut down on compiler warnings. +#if REMOVE_UNUSED_ARG + #define WXUNUSED(identifier) /* identifier */ +#else // stupid, broken compiler + #define WXUNUSED(identifier) identifier +#endif + +// some arguments are only used in debug mode, but unused in release one +#ifdef __WXDEBUG__ + #define WXUNUSED_UNLESS_DEBUG(param) param +#else + #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) +#endif + +// delete pointer if it is not NULL and NULL it afterwards // (checking that it's !NULL before passing it to delete is just a // a question of style, because delete will do it itself anyhow, but it might // be considered as an error by some overzealous debugging implementations of // the library, so we do it ourselves) -#if defined(__SGI_CC__) -// Okay this is bad styling, but the native SGI compiler is very picky, it -// wont let you compare/assign between a NULL (void *) and another pointer -// type. To be really clean we'd need to pass in another argument, the type -// of p. -// Also note the use of 0L, this would allow future possible 64bit support -// (as yet untested) by ensuring that we zero all the bits in a pointer -// (which is always the same length as a long (at least with the LP64 standard) -// --- offer aug 98 -#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; } -#else #define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; } -#endif /* __SGI__CC__ */ // delete an array and NULL it (see comments above) -#if defined(__SGI_CC__) -// see above comment. -#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; } -#else -#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; } -#endif /* __SGI__CC__ */ +#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = NULL; } -/// size of statically declared array +// size of statically declared array #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) // ---------------------------------------------------------------------------- @@ -591,16 +428,17 @@ enum wxMOTIF_X, // OSF Motif 1.x.x wxCOSE_X, // OSF Common Desktop Environment wxNEXTSTEP, // NeXTStep - wxMACINTOSH, // Apple System 7 and 8 + wxMAC, // Apple Mac OS 8/9/X with Mac paths + wxMAC_DARWIN, // Apple Mac OS X with Unix paths wxBEOS, // BeOS wxGTK, // GTK on X wxGTK_WIN32, // GTK on Win32 wxGTK_OS2, // GTK on OS/2 wxGTK_BEOS, // GTK on BeOS - wxQT, // Qt wxGEOS, // GEOS wxOS2_PM, // OS/2 Workplace wxWINDOWS, // Windows or WfW + wxMICROWINDOWS, // MicroWindows wxPENWINDOWS, // Windows for Pen Computing wxWINDOWS_NT, // Windows NT wxWIN32S, // Windows 32S API @@ -610,8 +448,10 @@ enum wxMGL_X, // MGL on X wxMGL_WIN32, // MGL on Win32 wxMGL_OS2, // MGL on OS/2 + wxMGL_DOS, // MGL on MS-DOS wxWINDOWS_OS2, // Native OS/2 PM - wxUNIX // wxBase under Unix + wxUNIX, // wxBase under Unix + wxX11 // Plain X11 and Universal widgets }; // ---------------------------------------------------------------------------- @@ -639,47 +479,53 @@ enum #define wxInt8 char signed #define wxUint8 char unsigned -#ifdef __WIN16__ -#define wxInt16 int signed -#define wxUint16 int unsigned -#define wxInt32 long signed -#define wxUint32 long unsigned -#endif - -#ifdef __WIN32__ -#define wxInt16 short signed -#define wxUint16 short unsigned -#define wxInt32 int signed -#define wxUint32 int unsigned -#endif - -#ifdef __WXMAC__ -#define wxInt16 short signed -#define wxUint16 short unsigned -#define wxInt32 int signed -#define wxUint32 int unsigned -#endif - -#ifdef __WXOS2__ -#define wxInt16 short signed -#define wxUint16 short unsigned -#define wxInt32 int signed -#define wxUint32 int unsigned -#endif +#ifdef __WINDOWS__ + #if defined(__WIN16__) + #define wxInt16 int signed + #define wxUint16 int unsigned + #define wxInt32 long signed + #define wxUint32 long unsigned + #elif defined(__WIN32__) + #define wxInt16 short signed + #define wxUint16 short unsigned + #define wxInt32 int signed + #define wxUint32 int unsigned + #else + // Win64 will have different type sizes + #error "Please define a 32 bit type" + #endif +#else // !Windows + // SIZEOF_XXX are defined by configure + #if defined(SIZEOF_INT) && (SIZEOF_INT == 4) + #define wxInt16 short signed + #define wxUint16 short unsigned + #define wxInt32 int signed + #define wxUint32 int unsigned + #elif defined(SIZEOF_INT) && (SIZEOF_INT == 2) + #define wxInt16 int signed + #define wxUint16 int unsigned + #define wxInt32 long signed + #define wxUint32 long unsigned + #else + // assume sizeof(int) == 4 - what else can we do + wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes); -#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__) - #if defined(SIZEOF_INT) - /* well, this shouldn't happen... */ - #define wxInt16 short signed - #define wxUint16 short unsigned - #define wxInt32 int signed - #define wxUint32 int unsigned - #else - #define wxInt16 short signed - #define wxUint16 short unsigned - #define wxInt32 int signed - #define wxUint32 int unsigned - #endif + #define wxInt16 short signed + #define wxUint16 short unsigned + #define wxInt32 int signed + #define wxUint32 int unsigned + #endif +#endif // Win/!Win + +#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) +#define wxInt64 long signed +#define wxUint64 long unsigned +#elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) +#define wxInt64 long long signed +#define wxUint64 long long unsigned +#else // FIXME: what else can we do here aside from implementing wxULongLong +#define wxInt64 wxLongLong +#define wxUint64 wxULongLong #endif #define wxByte wxUint8 @@ -778,6 +624,76 @@ typedef float wxFloat32 ; #endif // machine specific byte swapping +#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) +#define wxUINT64_SWAP_ALWAYS(val) \ + ((wxUint64) ( \ + (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \ + (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \ + (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \ + (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \ + (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \ + (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56))) + +#define wxINT64_SWAP_ALWAYS(val) \ + ((wxInt64) ( \ + (((wxUint64) (val) & (wxUint64) 0x00000000000000ffUL) << 56) | \ + (((wxUint64) (val) & (wxUint64) 0x000000000000ff00UL) << 40) | \ + (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000UL) << 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00000000ff000000UL) << 8) | \ + (((wxUint64) (val) & (wxUint64) 0x000000ff00000000UL) >> 8) | \ + (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000UL) >> 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00ff000000000000UL) >> 40) | \ + (((wxUint64) (val) & (wxUint64) 0xff00000000000000UL) >> 56))) + +#elif defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) +#define wxUINT64_SWAP_ALWAYS(val) \ + ((wxUint64) ( \ + (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \ + (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \ + (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \ + (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \ + (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \ + (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56))) + +#define wxINT64_SWAP_ALWAYS(val) \ + ((wxInt64) ( \ + (((wxUint64) (val) & (wxUint64) 0x00000000000000ffULL) << 56) | \ + (((wxUint64) (val) & (wxUint64) 0x000000000000ff00ULL) << 40) | \ + (((wxUint64) (val) & (wxUint64) 0x0000000000ff0000ULL) << 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00000000ff000000ULL) << 8) | \ + (((wxUint64) (val) & (wxUint64) 0x000000ff00000000ULL) >> 8) | \ + (((wxUint64) (val) & (wxUint64) 0x0000ff0000000000ULL) >> 24) | \ + (((wxUint64) (val) & (wxUint64) 0x00ff000000000000ULL) >> 40) | \ + (((wxUint64) (val) & (wxUint64) 0xff00000000000000ULL) >> 56))) + +#else +#define wxUINT64_SWAP_ALWAYS(val) \ + ((wxUint64) ( \ + ((wxULongLong(val) & wxULongLong(0L, 0x000000ffU)) << 56) | \ + ((wxULongLong(val) & wxULongLong(0L, 0x0000ff00U)) << 40) | \ + ((wxULongLong(val) & wxULongLong(0L, 0x00ff0000U)) << 24) | \ + ((wxULongLong(val) & wxULongLong(0L, 0xff000000U)) << 8) | \ + ((wxULongLong(val) & wxULongLong(0x000000ffL, 0U)) >> 8) | \ + ((wxULongLong(val) & wxULongLong(0x0000ff00L, 0U)) >> 24) | \ + ((wxULongLong(val) & wxULongLong(0x00ff0000L, 0U)) >> 40) | \ + ((wxULongLong(val) & wxULongLong(0xff000000L, 0U)) >> 56))) + +#define wxINT64_SWAP_ALWAYS(val) \ + ((wxInt64) ( \ + ((wxLongLong(val) & wxLongLong(0L, 0x000000ffU)) << 56) | \ + ((wxLongLong(val) & wxLongLong(0L, 0x0000ff00U)) << 40) | \ + ((wxLongLong(val) & wxLongLong(0L, 0x00ff0000U)) << 24) | \ + ((wxLongLong(val) & wxLongLong(0L, 0xff000000U)) << 8) | \ + ((wxLongLong(val) & wxLongLong(0x000000ffL, 0U)) >> 8) | \ + ((wxLongLong(val) & wxLongLong(0x0000ff00L, 0U)) >> 24) | \ + ((wxLongLong(val) & wxLongLong(0x00ff0000L, 0U)) >> 40) | \ + ((wxLongLong(val) & wxLongLong(0xff000000L, 0U)) >> 56))) +#endif + #ifdef WORDS_BIGENDIAN #define wxUINT16_SWAP_ON_BE(val) wxUINT16_SWAP_ALWAYS(val) #define wxINT16_SWAP_ON_BE(val) wxINT16_SWAP_ALWAYS(val) @@ -787,6 +703,8 @@ typedef float wxFloat32 ; #define wxINT32_SWAP_ON_BE(val) wxINT32_SWAP_ALWAYS(val) #define wxUINT32_SWAP_ON_LE(val) (val) #define wxINT32_SWAP_ON_LE(val) (val) + #define wxUINT64_SWAP_ON_BE(val) wxUINT64_SWAP_ALWAYS(val) + #define wxUINT64_SWAP_ON_LE(val) (val) #else #define wxUINT16_SWAP_ON_LE(val) wxUINT16_SWAP_ALWAYS(val) #define wxINT16_SWAP_ON_LE(val) wxINT16_SWAP_ALWAYS(val) @@ -796,6 +714,8 @@ typedef float wxFloat32 ; #define wxINT32_SWAP_ON_LE(val) wxINT32_SWAP_ALWAYS(val) #define wxUINT32_SWAP_ON_BE(val) (val) #define wxINT32_SWAP_ON_BE(val) (val) + #define wxUINT64_SWAP_ON_LE(val) wxUINT64_SWAP_ALWAYS(val) + #define wxUINT64_SWAP_ON_BE(val) (val) #endif // ---------------------------------------------------------------------------- @@ -978,6 +898,24 @@ enum wxBorder // descend into all subwindows #define wxWS_EX_VALIDATE_RECURSIVELY 0x00000001 +// wxCommandEvents and the objects of the derived classes are forwarded to the +// parent window and so on recursively by default. Using this flag for the +// given window allows to block this propagation at this window, i.e. prevent +// the events from being propagated further upwards. The dialogs have this +// flag on by default. +#define wxWS_EX_BLOCK_EVENTS 0x00000002 + +// don't use this window as an implicit parent for the other windows: this must +// be used with transient windows as otherwise there is the risk of creating a +// dialog/frame with this window as a parent which would lead to a crash if the +// parent is destroyed before the child +#define wxWS_EX_TRANSIENT 0x00000004 + +// Use this style to add a context-sensitive help to the window (currently for +// Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used) +#define wxFRAME_EX_CONTEXTHELP 0x00000004 +#define wxDIALOG_EX_CONTEXTHELP 0x00000004 + /* * wxFrame/wxDialog style flags */ @@ -985,7 +923,7 @@ enum wxBorder #define wxICONIZE 0x4000 #define wxMINIMIZE wxICONIZE #define wxMAXIMIZE 0x2000 -// free value: 0x1000 + // free flag value: 0x1000 #define wxSYSTEM_MENU 0x0800 #define wxMINIMIZE_BOX 0x0400 #define wxMAXIMIZE_BOX 0x0200 @@ -1000,18 +938,12 @@ enum wxBorder // deprecated versions defined for compatibility reasons #define wxRESIZE_BOX wxMAXIMIZE_BOX #define wxTHICK_FRAME wxRESIZE_BORDER +#define wxFRAME_FLOAT_ON_PARENT wxFRAME_TOOL_WINDOW // obsolete styles, unused any more -#define wxDIALOG_MODAL 0x0020 +#define wxDIALOG_MODAL 0x0020 // free flag value 0x0020 #define wxDIALOG_MODELESS 0x0000 -// deprecated flag, don't use any more, defined for compatibility only -#define wxFRAME_FLOAT_ON_PARENT 0 - -// Context-sensitive help -#define wxFRAME_EX_CONTEXTHELP 0x00000004 -#define wxDIALOG_EX_CONTEXTHELP 0x00000004 - /* * MDI parent frame style flags * Can overlap with some of the above. @@ -1028,7 +960,7 @@ enum wxBorder wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \ wxCAPTION | wxCLIP_CHILDREN) -#ifdef __WXMSW__ +#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMGL__) # define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU | wxCAPTION) #else // Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU @@ -1050,17 +982,6 @@ enum wxBorder # define wxEXT_DIALOG_STYLE (wxDEFAULT_DIALOG_STYLE|wxED_CLIENT_MARGIN|wxED_STATIC_LINE) #endif -/* - * wxToolBar style flags - */ -#define wxTB_HORIZONTAL wxHORIZONTAL -#define wxTB_VERTICAL wxVERTICAL -#define wxTB_3DBUTTONS 0x0010 -// Flatbar/Coolbar under Win98/ GTK 1.2 -#define wxTB_FLAT 0x0020 -// use native docking under GTK -#define wxTB_DOCKABLE 0x0040 - /* * wxMenuBar style flags */ @@ -1092,32 +1013,10 @@ enum wxBorder #define wxLB_HSCROLL wxHSCROLL // always show an entire number of rows #define wxLB_INT_HEIGHT 0x0800 -/* - * wxTextCtrl style flags - */ -// the flag bits 0x0001, 2, 4 and 8 are free but should be used only for the -// things which don't make sense for a text control used by wxTextEntryDialog -// because they would otherwise conflict with wxOK, wxCANCEL, wxCENTRE -#define wxTE_READONLY 0x0010 -#define wxTE_MULTILINE 0x0020 -#define wxTE_PROCESS_TAB 0x0040 -// this style means to use RICHEDIT control and does something only under wxMSW -// and Win32 and is silently ignored under all other platforms -#define wxTE_RICH 0x0080 -#define wxTE_NO_VSCROLL 0x0100 -#define wxTE_AUTO_SCROLL 0x0200 -#define wxTE_PROCESS_ENTER 0x0400 -#define wxTE_PASSWORD 0x0800 - -// use wxHSCROLL to not wrap text at all, wxTE_LINEWRAP to wrap it at any -// position and wxTE_WORDWRAP to wrap at words boundary -#define wxTE_DONTWRAP wxHSCROLL -#define wxTE_LINEWRAP 0x0800 -#define wxTE_WORDWRAP 0x0000 // it's just == !wxHSCROLL // deprecated synonyms -#define wxPROCESS_ENTER wxTE_PROCESS_ENTER -#define wxPASSWORD wxTE_PASSWORD +#define wxPROCESS_ENTER 0x0400 // wxTE_PROCESS_ENTER +#define wxPASSWORD 0x0800 // wxTE_PASSWORD /* * wxComboBox style flags @@ -1180,21 +1079,6 @@ enum wxBorder #define wxSB_HORIZONTAL wxHORIZONTAL #define wxSB_VERTICAL wxVERTICAL -/* - * wxTreeCtrl flags - */ -#define wxTR_HAS_BUTTONS 0x0004 -#define wxTR_EDIT_LABELS 0x0008 -#define wxTR_LINES_AT_ROOT 0x0010 - -#define wxTR_SINGLE 0x0000 -#define wxTR_MULTIPLE 0x0020 -#define wxTR_EXTENDED 0x0040 -#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 -#define wxTR_NO_LINES 0x0100 -#define wxTR_MAC_BUTTONS 0x0200 -#define wxTR_ROW_LINES 0x0400 - /* * wxSpinButton flags. * Note that a wxSpinCtrl is sometimes defined as @@ -1218,6 +1102,7 @@ enum wxBorder #define wxSP_3DBORDER 0x0200 #define wxSP_FULLSASH 0x0400 #define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH) +#define wxSP_SASH_AQUA 0x0800 /* * wxNotebook flags @@ -1237,6 +1122,17 @@ enum wxBorder #define wxTC_OWNERDRAW 0x0040 #define wxTC_MULTILINE wxNB_MULTILINE +// wxToolBar style flags +#define wxTB_HORIZONTAL wxHORIZONTAL // == 0x0004 +#define wxTB_VERTICAL wxVERTICAL // == 0x0008 +#define wxTB_3DBUTTONS 0x0010 +#define wxTB_FLAT 0x0020 // supported only under Win98+/GTK +#define wxTB_DOCKABLE 0x0040 // use native docking under GTK +#define wxTB_NOICONS 0x0080 // don't show the icons +#define wxTB_TEXT 0x0100 // show the text +#define wxTB_NODIVIDER 0x0200 // don't show the divider (Windows) +#define wxTB_NOALIGN 0x0400 // no automatic alignment (Windows) + /* * wxStatusBar95 flags */ @@ -1272,19 +1168,10 @@ enum wxBorder #define wxPD_REMAINING_TIME 0x0040 /* - * wxHtmlWindow flags + * wxDirDialog styles */ -#define wxHW_SCROLLBAR_NEVER 0x0002 -#define wxHW_SCROLLBAR_AUTO 0x0004 -/* - * wxCalendarCtrl flags - */ -#define wxCAL_SUNDAY_FIRST 0x0000 -#define wxCAL_MONDAY_FIRST 0x0001 -#define wxCAL_SHOW_HOLIDAYS 0x0002 -#define wxCAL_NO_YEAR_CHANGE 0x0004 -#define wxCAL_NO_MONTH_CHANGE 0x000c // no month change => no year change +#define wxDD_NEW_DIR_BUTTON 0x0080 /* * extended dialog specifiers. these values are stored in a different @@ -1294,13 +1181,14 @@ enum wxBorder */ // wxCENTRE already defined as 0x00000001 +#define wxYES 0x00000002 #define wxOK 0x00000004 -#define wxYES_NO 0x00000008 +#define wxNO 0x00000008 +#define wxYES_NO (wxYES | wxNO) #define wxCANCEL 0x00000010 -#define wxYES 0x00000020 -#define wxNO 0x00000040 + +#define wxYES_DEFAULT 0x00000000 // has no effect (default) #define wxNO_DEFAULT 0x00000080 -#define wxYES_DEFAULT 0x00000000 // has no effect #define wxICON_EXCLAMATION 0x00000100 #define wxICON_HAND 0x00000200 @@ -1347,6 +1235,7 @@ enum wxBorder #define wxID_HELP_COMMANDS 5015 #define wxID_HELP_PROCEDURES 5016 #define wxID_HELP_CONTEXT 5017 +#define wxID_CLOSE_ALL 5018 #define wxID_CUT 5030 #define wxID_COPY 5031 @@ -1386,14 +1275,34 @@ enum wxBorder #define wxID_RETRY 5116 #define wxID_IGNORE 5117 -// IDs used by generic file dialog (11 consecutive starting from this value) +// System menu IDs (used by wxUniv): +#define wxID_SYSTEM_MENU 5200 +#define wxID_CLOSE_FRAME 5201 +#define wxID_MOVE_FRAME 5202 +#define wxID_RESIZE_FRAME 5203 +#define wxID_MAXIMIZE_FRAME 5204 +#define wxID_ICONIZE_FRAME 5205 +#define wxID_RESTORE_FRAME 5206 + +// IDs used by generic file dialog (13 consecutive starting from this value) #define wxID_FILEDLGG 5900 + #define wxID_HIGHEST 5999 // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- +// menu and toolbar item kinds +enum wxItemKind +{ + wxITEM_SEPARATOR = -1, + wxITEM_NORMAL, + wxITEM_CHECK, + wxITEM_RADIO, + wxITEM_MAX +}; + // hit test results enum wxHitTest { @@ -1554,6 +1463,7 @@ enum wxDataFormatId wxDF_FILENAME = 15, /* CF_HDROP */ wxDF_LOCALE = 16, wxDF_PRIVATE = 20, + wxDF_HTML = 30, /* Note: does not correspond to CF_ constant */ wxDF_MAX }; @@ -1580,8 +1490,8 @@ enum wxKeyCode WXK_MENU, WXK_PAUSE, WXK_CAPITAL, - WXK_PRIOR, /* Page up */ - WXK_NEXT, /* Page down */ + WXK_PRIOR, // Page up + WXK_NEXT, // Page down WXK_END, WXK_HOME, WXK_LEFT, @@ -1802,7 +1712,7 @@ typedef enum { #endif // macro to specify "All Files" on different platforms -#if defined(__WXMSW__) +#if defined(__WXMSW__) || defined(__WXPM__) # define wxALL_FILES_PATTERN "*.*" # define wxALL_FILES gettext_noop("All files (*.*)|*.*") #else @@ -1818,6 +1728,26 @@ typedef enum { #ifdef __WXMAC__ +typedef unsigned char WXCOLORREF[6]; +typedef void* WXHBITMAP; +typedef void* WXHMETAFILE ; +typedef void* WXHICON ; +typedef void* WXHCURSOR ; +typedef void* WXHRGN ; +typedef void* WXRECTPTR ; +typedef void* WXPOINTPTR ; +typedef void* WXHWND ; +typedef void* WXEVENTREF ; +typedef void* WXAPPLEEVENTREF ; +typedef void* WXHDC ; +typedef void* WXHMENU ; +typedef unsigned int WXUINT; +typedef unsigned long WXDWORD; +typedef unsigned short WXWORD; + +typedef void* WXWidget ; +typedef void* WXWindow ; +/* typedef WindowPtr WXHWND; typedef Handle WXHANDLE; typedef CIconHandle WXHICON; @@ -1830,16 +1760,11 @@ typedef CursHandle WXHCURSOR; typedef RgnHandle WXHRGN; //typedef unsigned long WXHACCEL; //typedef unsigned long WXHINSTANCE; -typedef GWorldPtr WXHBITMAP; //typedef unsigned long WXHIMAGELIST; //typedef unsigned long WXHGLOBAL; typedef GrafPtr WXHDC; -typedef unsigned int WXUINT; -typedef unsigned long WXDWORD; -typedef unsigned short WXWORD; //typedef unsigned int WXWPARAM; //typedef long WXLPARAM; -typedef RGBColor WXCOLORREF; //typedef void * WXRGNDATA; //typedef void * WXMSG; //typedef unsigned long WXHCONV; @@ -1851,7 +1776,7 @@ typedef int (*WXFARPROC)(); typedef WindowPtr WXWindow; typedef ControlHandle WXWidget; - +*/ #endif #if defined(__WXMSW__) || defined(__WXPM__) @@ -1889,17 +1814,7 @@ typedef unsigned long WXHDC; typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; -#ifdef __WXMSW__ -typedef unsigned int WXWPARAM; -typedef long WXLPARAM; -#else -# define WXWPARAM MPARAM -# define WXLPARAM MPARAM -# define RECT RECTL -# define LOGFONT FATTRS -# define LOWORD SHORT1FROMMP -# define HIWORD SHORT2FROMMP -#endif // __WXMSW__ + typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG; @@ -1911,7 +1826,38 @@ typedef void * WXDRAWITEMSTRUCT; typedef void * WXMEASUREITEMSTRUCT; typedef void * WXLPCREATESTRUCT; +typedef WXHWND WXWidget; + +#endif // MSW or OS2 + + +#ifdef __WXMSW__ +typedef unsigned int WXWPARAM; +typedef long WXLPARAM; + +#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__) +typedef int (*WXFARPROC)(); +#else +typedef int (__stdcall *WXFARPROC)(); +#endif +#endif // __WXMSW__ + + #if defined(__WXPM__) +#ifdef __EMX__ +/* Need a well-known type for WXFARPROC + below. MPARAM is typedef'ed too late. */ +#define WXWPARAM void * +#define WXLPARAM void * +#else +#define WXWPARAM MPARAM +#define WXLPARAM MPARAM +#endif +#define RECT RECTL +#define LOGFONT FATTRS +#define LOWORD SHORT1FROMMP +#define HIWORD SHORT2FROMMP + typedef unsigned long WXMPARAM; typedef unsigned long WXMSGID; typedef void* WXRESULT; @@ -1934,7 +1880,10 @@ typedef unsigned short WORD; // WIN32 graphics types for OS/2 GPI // RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def -#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16))) +// WARNING: The OS/2 headers typedef BYTE simply as 'char'; if the default is signed, all +// hell will break loose! +//#define OS2RGB(r,g,b) ((DWORD ((BYTE) (b) | ((WORD) (g) << 8)) | (((DWORD)(BYTE)(r)) << 16))) +#define OS2RGB(r,g,b) ((DWORD)((unsigned char)(b) | ((unsigned char)(g) << 8)) | ((unsigned char)(r) << 16)) typedef unsigned long COLORREF; #define GetBValue(rgb) ((BYTE)((rgb) >> 16)) @@ -1956,42 +1905,27 @@ typedef struct tagLOGPALETTE WORD palNumentries; WORD PALETTEENTRY[1]; } LOGPALETTE; -#endif //__WXPM__ -#if defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__) - typedef int (*WXFARPROC)(); -#elif defined(__WIN32__) - typedef int (__stdcall *WXFARPROC)(); -#elif defined(__WXPM__) -# if defined(__VISAGECPP__) && (__IBMCPP__ < 400 || __IBMC__ < 400 ) +#if (defined(__VISAGECPP__) && (__IBMCPP__ < 400)) || defined (__WATCOMC__) // VA 3.0 for some reason needs base data types when typedefing a proc proto??? - typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*); -# else - typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM); -# endif +typedef void* (_System *WXFARPROC)(unsigned long, unsigned long, void*, void*); #else - typedef int (*WXFARPROC)(); +#ifdef __EMX__ +#define _System #endif - -typedef WXHWND WXWidget; - -#if defined(__BORLANDC__) && !defined(__WIN32__) -# ifndef LPTSTR -# define LPTSTR LPSTR -# endif -# ifndef LPCTSTR -# define LPCTSTR LPSTR -# endif +typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM); #endif -#endif // MSW or OS2 +#endif //__WXPM__ + -#ifdef __WXMOTIF__ +#if defined(__WXMOTIF__) || defined(__WXX11__) /* Stand-ins for X/Xt/Motif types */ typedef void* WXWindow; typedef void* WXWidget; typedef void* WXAppContext; typedef void* WXColormap; +typedef void* WXColor; typedef void WXDisplay; typedef void WXEvent; typedef void* WXCursor; @@ -2001,7 +1935,6 @@ typedef void* WXGC; typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; -typedef void* WXCursor; typedef void* WXFontList; typedef unsigned long Atom; /* this might fail on a few architectures */ @@ -2009,6 +1942,7 @@ typedef unsigned long Atom; /* this might fail on a few architectures */ #endif // Motif #ifdef __WXGTK__ + /* Stand-ins for GLIB types */ typedef char gchar; typedef signed char gint8; @@ -2019,23 +1953,28 @@ typedef void* gpointer; typedef struct _GSList GSList; /* Stand-ins for GDK types */ -typedef gulong GdkAtom; typedef struct _GdkColor GdkColor; typedef struct _GdkColormap GdkColormap; typedef struct _GdkFont GdkFont; typedef struct _GdkGC GdkGC; +typedef struct _GdkVisual GdkVisual; + #ifdef __WXGTK20__ - typedef struct _GdkDrawable GdkWindow; - typedef struct _GdkDrawable GdkBitmap; - typedef struct _GdkDrawable GdkPixmap; -#else - typedef struct _GdkWindow GdkWindow; - typedef struct _GdkWindow GdkBitmap; - typedef struct _GdkWindow GdkPixmap; -#endif +typedef struct _GdkAtom *GdkAtom; +typedef struct _GdkDrawable GdkWindow; +typedef struct _GdkDrawable GdkBitmap; +typedef struct _GdkDrawable GdkPixmap; +#else // GTK+ 1.2 +typedef gulong GdkAtom; +typedef struct _GdkWindow GdkWindow; +typedef struct _GdkWindow GdkBitmap; +typedef struct _GdkWindow GdkPixmap; +#endif // GTK+ 1.2/2.0 + typedef struct _GdkCursor GdkCursor; typedef struct _GdkRegion GdkRegion; typedef struct _GdkDragContext GdkDragContext; + #ifdef HAVE_XIM typedef struct _GdkIC GdkIC; typedef struct _GdkICAttr GdkICAttr; @@ -2066,11 +2005,12 @@ typedef GtkWidget *WXWidget; typedef struct _PangoContext PangoContext; typedef struct _PangoLayout PangoLayout; typedef struct _PangoFontDescription PangoFontDescription; -#endif +#endif // GTK+ 2.0 + #endif // GTK #ifdef __WXMGL__ -typedef void *WXWidget; // FIXME_MGL - type-safe +typedef struct window_t *WXWidget; #endif // MGL // This is required because of clashing macros in windows.h, which may be