X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34cbe514cf01425bdb928c133404ab7b97a661a4..b76f0023ae275de2d71ed735a95d2ecb81d4ea74:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 82b691fd29..da04c2e305 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1,13 +1,13 @@ -/* /////////////////////////////////////////////////////////////////////////// */ -/* Name: defs.h */ -/* Purpose: Declarations/definitions common to all wx source files */ -/* Author: Julian Smart and others */ -/* Modified by: */ -/* Created: 01/02/97 */ -/* RCS-ID: $Id$ */ -/* Copyright: (c) */ -/* Licence: wxWindows licence */ -/* /////////////////////////////////////////////////////////////////////////// */ +/** +* Name: defs.h +* Purpose: Declarations/definitions common to all wx source files +* Author: Julian Smart and others +* Modified by: Ryan Norton (Converted to C) +* Created: 01/02/97 +* RCS-ID: $Id$ +* Copyright: (c) +* Licence: wxWindows licence +*/ /* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */ @@ -24,19 +24,23 @@ #include "wx/platform.h" +/* RN - only double-check the environment when building in C++ + Shouldn't configure pass the environment to all sub-libs too? */ +#ifdef __cplusplus /* 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__) && \ +# 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(__WXCOCOA__) && \ !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 +# 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 +#endif /*__cplusplus*/ #ifndef __WXWINDOWS__ #define __WXWINDOWS__ 1 @@ -230,11 +234,7 @@ typedef int wxWindowID; /* 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 wxUSE_NESTED_CLASSES 0 -#endif +#define wxUSE_NESTED_CLASSES 1 /* check for explicit keyword support */ #ifndef HAVE_EXPLICIT @@ -262,8 +262,8 @@ typedef int wxWindowID; #define wxEXPLICIT #endif /* HAVE_EXPLICIT/!HAVE_EXPLICIT */ -/* check for static/const/reinterpret_cast<>() */ -#ifndef HAVE_STATIC_CAST +/* check for static/const_cast<>() (we don't use the other ones for now) */ +#ifndef HAVE_CXX_CASTS #if defined(__VISUALC__) && (__VISUALC__ >= 1100) /* VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) */ #define HAVE_CXX_CASTS @@ -272,14 +272,23 @@ typedef int wxWindowID; /* GCC 2.95 has C++ casts, what about earlier versions? */ #define HAVE_CXX_CASTS #endif -#endif /* HAVE_STATIC_CAST */ +#endif /* !HAVE_CXX_CASTS */ #ifdef HAVE_CXX_CASTS #ifndef HAVE_CONST_CAST #define HAVE_CONST_CAST #endif + #ifndef HAVE_STATIC_CAST + #define HAVE_STATIC_CAST + #endif #endif /* HAVE_CXX_CASTS */ +#ifdef HAVE_CONST_CAST + #define wxConstCast(obj, className) const_cast(obj) +#else + #define wxConstCast(obj, className) ((className *)(obj)) +#endif + #ifndef HAVE_STD_WSTRING #if defined(__VISUALC__) && (__VISUALC__ >= 1100) /* VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) */ @@ -553,14 +562,8 @@ enum /* to ensure compatibility with 2.0, we must use long */ #define wxCoord long #else /* !wxUSE_COMPATIBLE_COORD_TYPES */ - #ifdef __WIN16__ - /* under Win16, int is too small, so use long to allow for bigger */ - /* virtual canvases */ - typedef long wxCoord; - #else /* !Win16 */ /* other platforms we support have at least 32bit int - quite enough */ typedef int wxCoord; - #endif /* Win16/!Win16 */ #endif /* wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES */ @@ -618,15 +621,6 @@ typedef wxUint16 wxWord; /* 32bit */ #ifdef __WINDOWS__ - #if defined(__WIN64__) - /* you may remove this #error and try to compile the library, please */ - /* report the results to wx-dev@lists.wxwindows.org if you do! */ - #error "wxWindows hasn't been tested under Win64, continue at your own risk" - - /* the same definitions as for Win32 _should_ work here as only */ - /* sizeof(void *) changes, but it must be tested first */ - #endif /* __WIN64__ */ - /* Win64 uses LLP64 model and so ints and longs have the same size as in */ /* Win32 */ #if defined(__WIN32__) @@ -639,13 +633,25 @@ typedef wxUint16 wxWord; #define SIZEOF_LONG 4 #define SIZEOF_WCHAR_T 2 - #define wxSIZE_T_IS_UINT + /* + under Win64 sizeof(size_t) == 8 and so it is neither unsigned + int nor unsigned long! + */ + #ifdef __WIN64__ + #define SIZEOF_SIZE_T 8 + + #undef wxSIZE_T_IS_UINT + #else /* Win32 */ + #define SIZEOF_SIZE_T 4 + + #define wxSIZE_T_IS_UINT + #endif #undef wxSIZE_T_IS_ULONG #ifdef __WIN64__ - #define SIZEOF_INT_P 8 + #define SIZEOF_VOID_P 8 #else /* Win32 */ - #define SIZEOF_INT_P 4 + #define SIZEOF_VOID_P 4 #endif /* Win64/32 */ #endif /* !defined(SIZEOF_INT) */ #else @@ -674,10 +680,14 @@ typedef wxUint16 wxWord; #error "Unknown sizeof(int) value, what are you compiling for?" #endif #else /* !defined(SIZEOF_INT) */ - /* assume sizeof(int) == 4 -- what else can we do? */ + /* assume default 32bit machine -- what else can we do? */ wxCOMPILE_TIME_ASSERT( sizeof(int) == 4, IntMustBeExactly4Bytes); + wxCOMPILE_TIME_ASSERT( sizeof(size_t) == 4, SizeTMustBeExactly4Bytes); + wxCOMPILE_TIME_ASSERT( sizeof(void *) == 4, PtrMustBeExactly4Bytes); #define SIZEOF_INT 4 + #define SIZEOF_SIZE_T 4 + #define SIZEOF_VOID_P 4 typedef int wxInt32; typedef unsigned int wxUint32; @@ -700,6 +710,22 @@ typedef wxUint16 wxWord; typedef wxUint32 wxDword; +/* + Define an integral type big enough to contain all of long, size_t and void *. + */ +#if SIZEOF_LONG >= SIZEOF_VOID_P && SIZEOF_LONG >= SIZEOF_SIZE_T + /* normal case */ + typedef unsigned long wxUIntPtr; +#elif SIZEOF_SIZE_T >= SIZEOF_VOID_P + /* Win64 case */ + typedef size_t wxUIntPtr; +#else + /* + This should never happen for the current architectures but if you're + using one where it does, please contact wx-dev@lists.wxwindows.org. + */ + #error "Pointers can't be stored inside integer types." +#endif /* 64 bit */ @@ -726,7 +752,7 @@ typedef wxUint32 wxDword; #define wxLongLong_t __int64 #define wxLongLongSuffix i64 #define wxLongLongFmtSpec _T("Ld") -#elif (defined(__WATCOMC__) && defined(__WIN32__)) +#elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__))) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 #define wxLongLongFmtSpec _T("Ld") @@ -1005,8 +1031,11 @@ enum wxStretch wxGROW = 0x2000, wxEXPAND = wxGROW, wxSHAPED = 0x4000, - wxADJUST_MINSIZE = 0x8000, - wxTILE = 0xc000 + // free value: 0x8000 (old wxADJUST_MINSIZE) + wxTILE = 0xc000, + + // for compatibility only, default now, don't use explicitly any more + wxADJUST_MINSIZE = 0x0000 }; /* border flags: the values are chosen for backwards compatibility */ @@ -1085,8 +1114,16 @@ enum wxBorder /* Windows, it won't normally get the dialog navigation key events) */ #define wxWANTS_CHARS 0x00040000 -/* Make window retained (mostly Motif, I think) -- obsolete (VZ)? */ +/* Make window retained (Motif only, see src/generic/scrolwing.cpp) + * This is non-zero only under wxMotif, to avoid a clash with wxPOPUP_WINDOW + * on other platforms + */ + +#ifdef __WXMOTIF__ #define wxRETAINED 0x00020000 +#else +#define wxRETAINED 0x00000000 +#endif #define wxBACKINGSTORE wxRETAINED /* set this flag to create a special popup window: it will be always shown on */ @@ -1414,7 +1451,7 @@ enum /* id for a separator line in the menu (invalid for normal item) */ enum { - wxID_SEPARATOR = -1 + wxID_SEPARATOR = -2 }; /* Standard menu IDs */ @@ -1950,7 +1987,8 @@ enum wxPrintMode wxPRINT_MODE_NONE = 0, wxPRINT_MODE_PREVIEW = 1, /* Preview in external application */ wxPRINT_MODE_FILE = 2, /* Print to file */ - wxPRINT_MODE_PRINTER = 3 /* Send to printer */ + wxPRINT_MODE_PRINTER = 3, /* Send to printer */ + wxPRINT_MODE_STREAM = 4 /* Send postscript data into a stream */ }; /* ---------------------------------------------------------------------------- */ @@ -1990,6 +2028,8 @@ enum wxUpdateUI #ifdef __WXMAC__ +#define WX_OPAQUE_TYPE( name ) struct wxOpaque##name + typedef unsigned char WXCOLORREF[6]; typedef void* WXHBITMAP; typedef void* WXHMETAFILE; @@ -2009,25 +2049,28 @@ typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; -typedef void* WXWidget; -typedef void* WXWindow; + +//typedef void* WXWidget; +//typedef void* WXWindow; +typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ; +typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ; typedef void* WXDisplay; -/* -typedef WindowPtr WXHWND; -typedef Handle WXHANDLE; -typedef CIconHandle WXHICON; + +/* typedef WindowPtr WXHWND; */ +/* typedef Handle WXHANDLE; */ +/* typedef CIconHandle WXHICON; */ /* typedef unsigned long WXHFONT; */ -typedef MenuHandle WXHMENU; +/* typedef MenuHandle WXHMENU; */ /* typedef unsigned long WXHPEN; */ /* typedef unsigned long WXHBRUSH; */ /* typedef unsigned long WXHPALETTE; */ -typedef CursHandle WXHCURSOR; -typedef RgnHandle WXHRGN; +/* typedef CursHandle WXHCURSOR; */ +/* typedef RgnHandle WXHRGN; */ /* typedef unsigned long WXHACCEL; */ /* typedef unsigned long WXHINSTANCE; */ /* typedef unsigned long WXHIMAGELIST; */ /* typedef unsigned long WXHGLOBAL; */ -typedef GrafPtr WXHDC; +/* typedef GrafPtr WXHDC; */ /* typedef unsigned int WXWPARAM; */ /* typedef long WXLPARAM; */ /* typedef void * WXRGNDATA; */ @@ -2037,11 +2080,11 @@ typedef GrafPtr WXHDC; /* typedef void * WXDRAWITEMSTRUCT; */ /* typedef void * WXMEASUREITEMSTRUCT; */ /* typedef void * WXLPCREATESTRUCT; */ -typedef int (*WXFARPROC)(); +/* typedef int (*WXFARPROC)(); */ + +/* typedef WindowPtr WXWindow; */ +/* typedef ControlHandle WXWidget; */ -typedef WindowPtr WXWindow; -typedef ControlHandle WXWidget; -*/ #endif #ifdef __WXCOCOA__ @@ -2105,38 +2148,30 @@ DECLARE_WXCOCOA_OBJC_CLASS(NSView); typedef WX_NSView WXWidget; /* wxWindows BASE definition */ #endif /* __WXCOCOA__ */ -#if defined(__WXMSW__) || defined(__WXPM__) +#ifdef __WXMSW__ /* the keywords needed for WinMain() declaration */ -#ifdef __WIN16__ -# ifdef __VISUALC__ -# define WXFAR __far -# else -# define WXFAR _far -# endif -#else /* Win32 */ -# ifndef WXFAR +#ifndef WXFAR # define WXFAR -# endif -#endif /* Win16/32 */ +#endif -/* Stand-ins for Windows types or OS/2, to avoid #including all of windows.h or os2.h */ -typedef unsigned long WXHWND; -typedef unsigned long WXHANDLE; -typedef unsigned long WXHICON; -typedef unsigned long WXHFONT; -typedef unsigned long WXHMENU; -typedef unsigned long WXHPEN; -typedef unsigned long WXHBRUSH; -typedef unsigned long WXHPALETTE; -typedef unsigned long WXHCURSOR; -typedef unsigned long WXHRGN; -typedef unsigned long WXHACCEL; +/* Stand-ins for Windows types to avoid #including all of windows.h */ +typedef void * WXHWND; +typedef void * WXHANDLE; +typedef void * WXHICON; +typedef void * WXHFONT; +typedef void * WXHMENU; +typedef void * WXHPEN; +typedef void * WXHBRUSH; +typedef void * WXHPALETTE; +typedef void * WXHCURSOR; +typedef void * WXHRGN; +typedef void * WXHACCEL; typedef void WXFAR * WXHINSTANCE; -typedef unsigned long WXHBITMAP; -typedef unsigned long WXHIMAGELIST; -typedef unsigned long WXHGLOBAL; -typedef unsigned long WXHDC; +typedef void * WXHBITMAP; +typedef void * WXHIMAGELIST; +typedef void * WXHGLOBAL; +typedef void * WXHDC; typedef unsigned int WXUINT; typedef unsigned long WXDWORD; typedef unsigned short WXWORD; @@ -2144,9 +2179,9 @@ typedef unsigned short WXWORD; typedef unsigned long WXCOLORREF; typedef void * WXRGNDATA; typedef void * WXMSG; -typedef unsigned long WXHCONV; -typedef unsigned long WXHKEY; -typedef unsigned long WXHTREEITEM; +typedef void * WXHCONV; +typedef void * WXHKEY; +typedef void * WXHTREEITEM; typedef void * WXDRAWITEMSTRUCT; typedef void * WXMEASUREITEMSTRUCT; @@ -2154,12 +2189,15 @@ typedef void * WXLPCREATESTRUCT; typedef WXHWND WXWidget; -#endif /* MSW or OS2 */ - - -#ifdef __WXMSW__ +#ifdef __WIN64__ +typedef unsigned __int64 WXWPARAM; +typedef __int64 WXLPARAM; +typedef __int64 WXLRESULT; +#else typedef unsigned int WXWPARAM; typedef long WXLPARAM; +typedef long WXLRESULT; +#endif #if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); @@ -2170,6 +2208,35 @@ typedef int (__stdcall *WXFARPROC)(); #if defined(__WXPM__) || defined(__EMX__) +#ifdef __WXPM__ +/* Stand-ins for OS/2 types, to avoid #including all of os2.h */ +typedef unsigned long WXHWND; +typedef unsigned long WXHANDLE; +typedef unsigned long WXHICON; +typedef unsigned long WXHFONT; +typedef unsigned long WXHMENU; +typedef unsigned long WXHPEN; +typedef unsigned long WXHBRUSH; +typedef unsigned long WXHPALETTE; +typedef unsigned long WXHCURSOR; +typedef unsigned long WXHRGN; +typedef unsigned long WXHACCEL; +typedef unsigned long WXHBITMAP; +typedef unsigned long WXHDC; +typedef unsigned int WXUINT; +typedef unsigned long WXDWORD; +typedef unsigned short WXWORD; + +typedef unsigned long WXCOLORREF; +typedef void * WXMSG; +typedef unsigned long WXHTREEITEM; + +typedef void * WXDRAWITEMSTRUCT; +typedef void * WXMEASUREITEMSTRUCT; +typedef void * WXLPCREATESTRUCT; + +typedef WXHWND WXWidget; +#endif #ifdef __EMX__ /* Need a well-known type for WXFARPROC below. MPARAM is typedef'ed too late. */ @@ -2238,7 +2305,7 @@ typedef struct tagLOGPALETTE /* 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 -#ifdef __EMX__ +#if defined(__EMX__) && !defined(_System) #define _System #endif typedef WXRESULT (_System *WXFARPROC)(WXHWND, WXMSGID, WXWPARAM, WXLPARAM);