#ifndef _WX_DEFS_H_
#define _WX_DEFS_H_
-// NOTE: this symbol will be replaced with "WXWIN_COMPATIBILITY_3_0" as soon
-// as the development branch for 3.1 is created
+/*
+ NOTE: this symbol will be replaced with "WXWIN_COMPATIBILITY_3_0" as soon
+ as the development branch for 3.1 is created
+ */
#define FUTURE_WXWIN_COMPATIBILITY_3_0 1
#define wxDEPRECATED_FUTURE( x ) x
# pragma warning(disable:4514) /* unreferenced inline func has been removed */
# pragma warning(disable:4710) /* function not inlined */
- // TODO: this warning should really be enabled as it can be genuinely
- // useful, check where does it occur in wxWidgets
+ /*
+ TODO: this warning should really be enabled as it can be genuinely
+ useful, check where does it occur in wxWidgets
+ */
#pragma warning(disable: 4127) /* conditional expression is constant */
/* There are too many false positivies for this one, particularly when
class 'bar'" */
# pragma warning(disable:4251)
+ /*
+ This is a similar warning which occurs when deriving from standard
+ containers. MSDN even mentions that it can be ignored in this case
+ (albeit only in debug build while the warning is the same in release
+ too and seems equally harmless).
+ */
+#if wxUSE_STD_CONTAINERS
+# pragma warning(disable:4275)
+#endif /* wxUSE_STD_CONTAINERS */
+
# ifdef __VISUALC5__
/* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */
/* is buggy, and occurs for code that does actually get executed */
*/
#ifdef __VISUALC6__
#pragma warning(disable: 4284)
- #endif // VC6
+ #endif /* VC6 */
/*
When compiling with VC++ 7 /Wp64 option we get thousands of warnings for
#define va_list __gnuc_va_list
#endif /* HP-UX */
+/* Prevents conflicts between sys/types.h and winsock.h with Cygwin, */
+/* when using Windows sockets. */
+#ifdef __CYGWIN__
+#define __USE_W32_SOCKETS
+#endif
+
/* ---------------------------------------------------------------------------- */
/* check for native bool type and TRUE/FALSE constants */
/* ---------------------------------------------------------------------------- */
#endif
#endif
+#ifndef HAVE_TR1_TYPE_TRAITS
+ #if defined(__VISUALC__) && (_MSC_FULL_VER >= 150030729)
+ #define HAVE_TR1_TYPE_TRAITS
+ #endif
+#endif
+
/* provide replacement for C99 va_copy() if the compiler doesn't have it */
/* could be already defined by configure or the user */
#ifndef HAVE_WOSTREAM
- // Mingw <= 3.4 and all versions of Cygwin as well as any gcc version (so
- // far) targeting PalmOS don't have std::wostream
+ /*
+ Mingw <= 3.4 and all versions of Cygwin as well as any gcc version (so
+ far) targeting PalmOS don't have std::wostream
+ */
#if defined(__PALMOS__) || \
(defined(__MINGW32__) && !wxCHECK_GCC_VERSION(4, 0)) || \
defined(__CYGWIN__)
#define wxNO_WOSTREAM
#endif
- // VC++ doesn't have it in the old iostream library
+ /* VC++ doesn't have it in the old iostream library */
#if defined(__VISUALC__) && wxUSE_IOSTREAMH
#define wxNO_WOSTREAM
#endif
#undef wxNO_WOSTREAM
#endif /* HAVE_WOSTREAM */
-// ----------------------------------------------------------------------------
-// other C++ features
-// ----------------------------------------------------------------------------
+/* ---------------------------------------------------------------------------- */
+/* other C++ features */
+/* ---------------------------------------------------------------------------- */
#ifndef HAVE_PARTIAL_SPECIALIZATION
- // be optimistic by default
+ /* be optimistic by default */
#define HAVE_PARTIAL_SPECIALIZATION
#endif
#if __VISUALC__ < 1310
#undef HAVE_PARTIAL_SPECIALIZATION
#endif
-#endif // __VISUALC__
+#endif /* __VISUALC__ */
#ifndef HAVE_TEMPLATE_OVERLOAD_RESOLUTION
- // assume the compiler can use type or const expressions as template
- // arguments if it supports partial specialization -- except if it's a
- // Borland one which can't
+ /* assume the compiler can use type or const expressions as template
+ arguments if it supports partial specialization -- except if it's a
+ Borland one which can't */
#if defined(HAVE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
#define HAVE_TEMPLATE_OVERLOAD_RESOLUTION
- #endif // __BORLANDC__
-#endif // !defined(HAVE_TEMPLATE_OVERLOAD_RESOLUTION)
+ #endif /* (HAVE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__) */
+#endif /* !defined(HAVE_TEMPLATE_OVERLOAD_RESOLUTION) */
/* ---------------------------------------------------------------------------- */
/* portable calling conventions macros */
#define SIZEOF_VOID_P 4
#define SIZEOF_SIZE_T 4
#elif defined(__WINDOWS__)
- /* Win64 uses LLP64 model and so ints and longs have the same size as in */
- /* Win32 */
#if defined(__WIN32__)
typedef int wxInt32;
typedef unsigned int wxUint32;
- /* Assume that if SIZEOF_INT is defined that all the other ones except
- SIZEOF_SIZE_T, are too. See next #if below. */
+ /*
+ Win64 uses LLP64 model and so ints and longs have the same size as
+ in Win32.
+ */
#ifndef SIZEOF_INT
#define SIZEOF_INT 4
+ #endif
+
+ #ifndef SIZEOF_LONG
#define SIZEOF_LONG 4
+ #endif
+
+ #ifndef SIZEOF_WCHAR_T
+ /* Windows uses UTF-16 */
#define SIZEOF_WCHAR_T 2
+ #endif
+ #ifndef SIZEOF_SIZE_T
/*
- under Win64 sizeof(size_t) == 8 and so it is neither unsigned
+ Under Win64 sizeof(size_t) == 8 and so it is neither unsigned
int nor unsigned long!
*/
#ifdef __WIN64__
#define wxSIZE_T_IS_UINT
#endif
#undef wxSIZE_T_IS_ULONG
+ #endif
+ #ifndef SIZEOF_VOID_P
#ifdef __WIN64__
#define SIZEOF_VOID_P 8
#else /* Win32 */
#define SIZEOF_VOID_P 4
#endif /* Win64/32 */
- #endif /* !defined(SIZEOF_INT) */
-
- /*
- If Python.h was included first, it defines all of the SIZEOF's above
- except for SIZEOF_SIZE_T, so we need to do it here to avoid
- triggering the #error in the ssize_t typedefs below...
- */
- #ifndef SIZEOF_SIZE_T
- #ifdef __WIN64__
- #define SIZEOF_SIZE_T 8
- #else /* Win32 */
- #define SIZEOF_SIZE_T 4
- #endif
#endif
#else
#error "Unsupported Windows version"
#define wxULongLong_t unsigned wxLongLong_t
#endif
- /* these macros allow to define 64 bit constants in a portable way */
- #define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
- #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
+ /*
+ wxLL() and wxULL() macros allow to define 64 bit constants in a
+ portable way.
+ */
+ #ifndef wxCOMPILER_BROKEN_CONCAT_OPER
+ #define wxLL(x) wxCONCAT(x, wxLongLongSuffix)
+ #define wxULL(x) wxCONCAT(x, wxCONCAT(u, wxLongLongSuffix))
+ #else
+ /*
+ Currently only Borland compiler has broken concatenation operator
+ and this compiler is known to use [u]i64 suffix.
+ */
+ #define wxLL(x) wxAPPEND_i64(x)
+ #define wxULL(x) wxAPPEND_ui64(x)
+ #endif
typedef wxLongLong_t wxInt64;
typedef wxULongLong_t wxUint64;
#define wxHAS_INT64 1
+ #ifndef wxLongLongIsLong
+ #define wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ #endif
#elif wxUSE_LONGLONG
/* these macros allow to define 64 bit constants in a portable way */
#define wxLL(x) wxLongLong(x)
#ifdef __UNIX__
#include <sys/types.h>
#endif
-#else // !HAVE_SSIZE_T
+#else /* !HAVE_SSIZE_T */
#if SIZEOF_SIZE_T == 4
typedef wxInt32 ssize_t;
#elif SIZEOF_SIZE_T == 8
#define HAVE_SSIZE_T
#endif
-// we can't rely on Windows _W64 being defined as windows.h may not be included
-// so define our own equivalent: this should be used with types like WXLPARAM
-// or WXWPARAM which are 64 bit under Win64 to avoid warnings each time we cast
-// it to a pointer or a handle (which results in hundreds of warnings as Win32
-// API often passes pointers in them)
+/*
+ We can't rely on Windows _W64 being defined as windows.h may not be
+ included so define our own equivalent: this should be used with types
+ like WXLPARAM or WXWPARAM which are 64 bit under Win64 to avoid warnings
+ each time we cast it to a pointer or a handle (which results in hundreds
+ of warnings as Win32 API often passes pointers in them)
+ */
#if wxCHECK_VISUALC_VERSION(7)
#define wxW64 __w64
#else
#endif
#endif
+/* ---------------------------------------------------------------------------- */
+/* template workarounds for buggy compilers */
+/* ---------------------------------------------------------------------------- */
+
+#if defined(__GNUC__) && !wxCHECK_GCC_VERSION( 3, 4 )
+ /* GCC <= 3.4 has buggy template support */
+# define wxUSE_MEMBER_TEMPLATES 0
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER <= 1200
+ /* MSVC <= 6.0 has buggy template support */
+# define wxUSE_MEMBER_TEMPLATES 0
+# define wxUSE_FUNC_TEMPLATE_POINTER 0
+#endif
+
+#ifndef wxUSE_MEMBER_TEMPLATES
+# define wxUSE_MEMBER_TEMPLATES 1
+#endif
+
+#ifndef wxUSE_FUNC_TEMPLATE_POINTER
+# define wxUSE_FUNC_TEMPLATE_POINTER 1
+#endif
+
+#if wxUSE_MEMBER_TEMPLATES
+# define wxTEMPLATED_MEMBER_CALL( method, type ) method<type>()
+# define wxTEMPLATED_MEMBER_FIX( type )
+#else
+# define wxTEMPLATED_MEMBER_CALL( method, type ) method((type*)NULL)
+# define wxTEMPLATED_MEMBER_FIX( type ) type* =NULL
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER <= 1200
+# define wxTEMPLATED_FUNCTION_FIX( type ), wxTEMPLATED_MEMBER_FIX(type)
+# define wxINFUNC_CLASS_TYPE_FIX( type ) typedef type type;
+#else
+# define wxTEMPLATED_FUNCTION_FIX( type )
+# define wxINFUNC_CLASS_TYPE_FIX( type )
+#endif
+
/* ---------------------------------------------------------------------------- */
/* Geometric flags */
/* ---------------------------------------------------------------------------- */
enum wxAlignment
{
- // 0 is a valid wxAlignment value (both wxALIGN_LEFT and wxALIGN_TOP use
- // it) so define a symbolic name for an invalid alignment value which can
- // be assumed to be different from anything else
+ /*
+ 0 is a valid wxAlignment value (both wxALIGN_LEFT and wxALIGN_TOP
+ use it) so define a symbolic name for an invalid alignment value
+ which can be assumed to be different from anything else
+ */
wxALIGN_INVALID = -1,
wxALIGN_NOT = 0x0000,
/* misc. flags for wxSizer items */
enum wxSizerFlagBits
{
- // wxADJUST_MINSIZE doesn't do anything any more but we still define it for
- // compatibility. Notice that it may be also predefined (as 0, hopefully)
- // in the user code in order to use it even in !WXWIN_COMPATIBILITY_2_8
- // builds so don't redefine it in such case.
+ /*
+ wxADJUST_MINSIZE doesn't do anything any more but we still define
+ it for compatibility. Notice that it may be also predefined (as 0,
+ hopefully) in the user code in order to use it even in
+ !WXWIN_COMPATIBILITY_2_8 builds so don't redefine it in such case.
+ */
#if WXWIN_COMPATIBILITY_2_8 && !defined(wxADJUST_MINSIZE)
wxADJUST_MINSIZE = 0,
#endif
* Some styles are used across more than one group,
* so the values mustn't clash with others in the group.
* Otherwise, numbers can be reused across groups.
- *
- * From version 1.66:
- * Window (cross-group) styles now take up the first half
- * of the flag, and control-specific styles the
- * second half.
- *
+ */
+
+/*
+ Summary of the bits used by various styles.
+
+ High word, containing styles which can be used with many windows:
+
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | \_ wxFULL_REPAINT_ON_RESIZE
+ | | | | | | | | | | | | | | \____ wxPOPUP_WINDOW
+ | | | | | | | | | | | | | \_______ wxWANTS_CHARS
+ | | | | | | | | | | | | \__________ wxTAB_TRAVERSAL
+ | | | | | | | | | | | \_____________ wxTRANSPARENT_WINDOW
+ | | | | | | | | | | \________________ wxBORDER_NONE
+ | | | | | | | | | \___________________ wxCLIP_CHILDREN
+ | | | | | | | | \______________________ wxALWAYS_SHOW_SB
+ | | | | | | | \_________________________ wxBORDER_STATIC
+ | | | | | | \____________________________ wxBORDER_SIMPLE
+ | | | | | \_______________________________ wxBORDER_RAISED
+ | | | | \__________________________________ wxBORDER_SUNKEN
+ | | | \_____________________________________ wxBORDER_{DOUBLE,THEME}
+ | | \________________________________________ wxCAPTION/wxCLIP_SIBLINGS
+ | \___________________________________________ wxHSCROLL
+ \______________________________________________ wxVSCROLL
+
+
+ Low word style bits is class-specific meaning that the same bit can have
+ different meanings for different controls (e.g. 0x10 is wxCB_READONLY
+ meaning that the control can't be modified for wxComboBox but wxLB_SORT
+ meaning that the control should be kept sorted for wxListBox, while
+ wxLB_SORT has a different value -- and this is just fine).
*/
/*
/*
* wxSpinButton flags.
- * Note that a wxSpinCtrl is sometimes defined as
- * a wxTextCtrl, and so the flags must be different
- * from wxTextCtrl's.
+ * Note that a wxSpinCtrl is sometimes defined as a wxTextCtrl, and so the
+ * flags shouldn't overlap with wxTextCtrl flags that can be used for a single
+ * line controls (currently we reuse wxTE_CHARWRAP and wxTE_RICH2 neither of
+ * which makes sense for them).
*/
#define wxSP_HORIZONTAL wxHORIZONTAL /* 4 */
#define wxSP_VERTICAL wxVERTICAL /* 8 */
-#define wxSP_ARROW_KEYS 0x1000
-#define wxSP_WRAP 0x2000
+#define wxSP_ARROW_KEYS 0x4000
+#define wxSP_WRAP 0x8000
/*
* wxTabCtrl flags
*/
enum wxBackgroundStyle
{
- // background is erased in the EVT_ERASE_BACKGROUND handler or using the
- // system default background if no such handler is defined (this is the
- // default style)
+ /*
+ background is erased in the EVT_ERASE_BACKGROUND handler or using
+ the system default background if no such handler is defined (this
+ is the default style)
+ */
wxBG_STYLE_ERASE,
- // background is erased by the system, no EVT_ERASE_BACKGROUND event is
- // generated at all
+ /*
+ background is erased by the system, no EVT_ERASE_BACKGROUND event
+ is generated at all
+ */
wxBG_STYLE_SYSTEM,
- // background is erased in EVT_PAINT handler and not erased at all before
- // it, this should be used if the paint handler paints over the entire
- // window to avoid flicker
+ /*
+ background is erased in EVT_PAINT handler and not erased at all
+ before it, this should be used if the paint handler paints over
+ the entire window to avoid flicker
+ */
wxBG_STYLE_PAINT,
- // this is a Mac-only style, don't use in portable code
+ /* this is a Mac-only style, don't use in portable code */
wxBG_STYLE_TRANSPARENT,
- // this style is deprecated and doesn't do anything, don't use
+ /* this style is deprecated and doesn't do anything, don't use */
wxBG_STYLE_COLOUR,
- // this style is deprecated and is synonymous with wxBG_STYLE_PAINT, use
- // the new name
+ /*
+ this style is deprecated and is synonymous with
+ wxBG_STYLE_PAINT, use the new name
+ */
wxBG_STYLE_CUSTOM = wxBG_STYLE_PAINT
};
wxID_MDI_WINDOW_NEXT,
wxID_MDI_WINDOW_LAST = wxID_MDI_WINDOW_NEXT,
+ /* OS X system menu ids */
+ wxID_OSX_MENU_FIRST = 5250,
+ wxID_OSX_HIDE = wxID_OSX_MENU_FIRST,
+ wxID_OSX_HIDEOTHERS,
+ wxID_OSX_SHOWALL,
+ wxID_OSX_MENU_LAST = wxID_OSX_SHOWALL,
+
/* IDs used by generic file dialog (13 consecutive starting from this value) */
wxID_FILEDLGG = 5900,
wxTRANSPARENT,
/* Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! */
- /* Note also that stippling a Pen IS meaningfull, because a Line is */
+ /* Note also that stippling a Pen IS meaningful, because a Line is */
wxSTIPPLE_MASK_OPAQUE, /* mask is used for blitting monochrome using text fore and back ground colors */
wxSTIPPLE_MASK, /* mask is used for masking areas in the stipple bitmap (TO DO) */
/* drawn with a Pen, and without any Brush -- and it can be stippled. */
wxDF_MAX
};
-/* Virtual keycodes */
+/* Key codes */
enum wxKeyCode
{
- WXK_BACK = 8, // backspace
+ WXK_NONE = 0,
+
+ WXK_CONTROL_A = 1,
+ WXK_CONTROL_B,
+ WXK_CONTROL_C,
+ WXK_CONTROL_D,
+ WXK_CONTROL_E,
+ WXK_CONTROL_F,
+ WXK_CONTROL_G,
+ WXK_CONTROL_H,
+ WXK_CONTROL_I,
+ WXK_CONTROL_J,
+ WXK_CONTROL_K,
+ WXK_CONTROL_L,
+ WXK_CONTROL_M,
+ WXK_CONTROL_N,
+ WXK_CONTROL_O,
+ WXK_CONTROL_P,
+ WXK_CONTROL_Q,
+ WXK_CONTROL_R,
+ WXK_CONTROL_S,
+ WXK_CONTROL_T,
+ WXK_CONTROL_U,
+ WXK_CONTROL_V,
+ WXK_CONTROL_W,
+ WXK_CONTROL_X,
+ WXK_CONTROL_Y,
+ WXK_CONTROL_Z,
+
+ WXK_BACK = 8, /* backspace */
WXK_TAB = 9,
WXK_RETURN = 13,
WXK_ESCAPE = 27,
#endif
#if defined(__CYGWIN__) && defined(__WXMSW__)
-# if wxUSE_STL || defined(wxUSE_STD_STRING)
+# if wxUSE_STD_CONTAINERS || defined(wxUSE_STD_STRING)
/*
NASTY HACK because the gethostname in sys/unistd.h which the gnu
stl includes and wx builds with by default clash with each other
typedef const void * CFTypeRef;
-// typedef const struct __CFString * CFStringRef;
+/* typedef const struct __CFString * CFStringRef; */
#define DECLARE_WXOSX_OPAQUE_CFREF( name ) typedef struct __##name* name##Ref;
#define DECLARE_WXOSX_OPAQUE_CONST_CFREF( name ) typedef const struct __##name* name##Ref;
#endif
-#endif // __WXMAC__
+#endif /* __WXMAC__ */
#if defined(__WXPALMOS__)
typedef struct _GtkAdjustment GtkAdjustment;
typedef struct _GtkList GtkList;
typedef struct _GtkToolbar GtkToolbar;
-typedef struct _GtkTooltips GtkTooltips;
typedef struct _GtkNotebook GtkNotebook;
typedef struct _GtkNotebookPage GtkNotebookPage;
typedef struct _GtkAccelGroup GtkAccelGroup;
private: \
classname& operator=(const classname&)
-// deprecated variants _not_ requiring a semicolon after them
+/* deprecated variants _not_ requiring a semicolon after them */
#define DECLARE_NO_COPY_CLASS(classname) \
wxDECLARE_NO_COPY_CLASS(classname);
#define DECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg) \