-/* /////////////////////////////////////////////////////////////////////////// */
-/* 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 */
#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
/* 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
#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
/* 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<className *>(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?) */
/* 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 */
/* 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__)
#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
#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;
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 */
#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")
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 */
/* 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 */
/* id for a separator line in the menu (invalid for normal item) */
enum
{
- wxID_SEPARATOR = -1
+ wxID_SEPARATOR = -2
};
/* Standard menu IDs */
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 */
};
/* ---------------------------------------------------------------------------- */
#ifdef __WXMAC__
+#define WX_OPAQUE_TYPE( name ) struct wxOpaque##name
+
typedef unsigned char WXCOLORREF[6];
typedef void* WXHBITMAP;
typedef void* WXHMETAFILE;
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; */
/* 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__
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;
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;
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)();
#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. */
/* 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);