X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0c133e13b36a923c65f94499554e432bc3a0daa..cde23b64b5194f0d71cf16c85ea33d28419c815f:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 835eeae759..7f43f5391a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -141,6 +141,9 @@ #ifndef _CRT_NON_CONFORMING_SWPRINTFS #define _CRT_NON_CONFORMING_SWPRINTFS 1 #endif + #ifndef _SCL_SECURE_NO_WARNINGS + #define _SCL_SECURE_NO_WARNINGS 1 + #endif #endif /* VC++ 8 */ #endif /* __VISUALC__ */ @@ -303,8 +306,7 @@ typedef short int WXTYPE; #if defined(__VISUALC__) && (__VISUALC__ >= 1100) /* VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) */ #define HAVE_STD_WSTRING - #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ - && wxCHECK_GCC_VERSION(3, 3) + #elif defined(__MINGW32__) && wxCHECK_GCC_VERSION(3, 3) /* GCC 3.1 has std::wstring; 3.0 never was in MinGW, 2.95 hasn't it */ #define HAVE_STD_WSTRING #endif @@ -374,10 +376,11 @@ typedef short int WXTYPE; #ifndef HAVE_WOSTREAM - // Mingw <= 3.4 and any version (so far) when targetting 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(__MINGW32__) && !wxCHECK_GCC_VERSION(4, 0)) || \ + defined(__CYGWIN__) #define wxNO_WOSTREAM #endif @@ -474,19 +477,19 @@ typedef short int WXTYPE; /* ---------------------------------------------------------------------------- */ /* Printf-like attribute definitions to obtain warnings with GNU C/C++ */ -#ifndef ATTRIBUTE_PRINTF +#ifndef WX_ATTRIBUTE_PRINTF # if defined(__GNUC__) && !wxUSE_UNICODE -# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) +# define WX_ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) # else -# define ATTRIBUTE_PRINTF(m, n) +# define WX_ATTRIBUTE_PRINTF(m, n) # endif -# 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 /* !defined(ATTRIBUTE_PRINTF) */ +# define WX_ATTRIBUTE_PRINTF_1 WX_ATTRIBUTE_PRINTF(1, 2) +# define WX_ATTRIBUTE_PRINTF_2 WX_ATTRIBUTE_PRINTF(2, 3) +# define WX_ATTRIBUTE_PRINTF_3 WX_ATTRIBUTE_PRINTF(3, 4) +# define WX_ATTRIBUTE_PRINTF_4 WX_ATTRIBUTE_PRINTF(4, 5) +# define WX_ATTRIBUTE_PRINTF_5 WX_ATTRIBUTE_PRINTF(5, 6) +#endif /* !defined(WX_ATTRIBUTE_PRINTF) */ /* Macro to issue warning when using deprecated functions with gcc3 or MSVC7: */ @@ -503,7 +506,7 @@ typedef short int WXTYPE; handle the deprecation attribute even in the constructor. doesn't seem to work on Apple's gcc 4.0.1 unless using -O0 */ -#if defined( __DARWIN__ ) && !defined(__WXDEBUG__) +#if wxCHECK_GCC_VERSION(3, 4) || defined( __DARWIN__ ) #define wxDEPRECATED_CONSTRUCTOR(x) x #else #define wxDEPRECATED_CONSTRUCTOR(x) wxDEPRECATED( inline x) @@ -519,6 +522,11 @@ typedef short int WXTYPE; */ #define wxDEPRECATED_INLINE(func, body) wxDEPRECATED(func) { body } +/* + A macro to define a simple deprecated accessor. + */ +#define wxDEPRECATED_ACCESSOR(func, what) wxDEPRECATED_INLINE(func, return what;) + /* Special variant of the macro above which should be used for the functions which are deprecated but called by wx itself: this often happens with @@ -530,8 +538,16 @@ typedef short int WXTYPE; # define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x) #endif -/* everybody gets the assert and other debug macros */ -#include "wx/debug.h" +/* + Combination of the two variants above: should be used for deprecated + functions which are defined inline and are used by wxWidgets itself. + */ +#ifdef WXBUILDING +# define wxDEPRECATED_BUT_USED_INTERNALLY_INLINE(func, body) func { body } +#else +# define wxDEPRECATED_BUT_USED_INTERNALLY_INLINE(func, body) \ + wxDEPRECATED(func) { body } +#endif /* 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 */ @@ -541,6 +557,10 @@ typedef short int WXTYPE; #endif #ifdef __cplusplus + +// everybody gets the assert and other debug macros +#include "wx/debug.h" + // delete pointer if it is not NULL and NULL it afterwards template inline void wxDELETE(T*& ptr) @@ -584,6 +604,10 @@ typedef short int WXTYPE; /* integer on success as failure indicator */ #define wxNOT_FOUND (-1) +/* the default value for some length parameters meaning that the string is */ +/* NUL-terminated */ +#define wxNO_LEN ((size_t)-1) + /* ---------------------------------------------------------------------------- */ /* macros dealing with comparison operators */ /* ---------------------------------------------------------------------------- */ @@ -649,13 +673,6 @@ typedef short int WXTYPE; #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 - /* some arguments are not used in unicode mode */ #if wxUSE_UNICODE #define WXUNUSED_IN_UNICODE(param) WXUNUSED(param) @@ -907,16 +924,20 @@ typedef wxUint16 wxWord; /* also define C99-like sized MIN/MAX constants */ #define wxINT8_MIN CHAR_MIN #define wxINT8_MAX CHAR_MAX +#define wxUINT8_MAX UCHAR_MAX #define wxINT16_MIN SHRT_MIN #define wxINT16_MAX SHRT_MAX +#define wxUINT16_MAX USHRT_MAX #if SIZEOF_INT == 4 #define wxINT32_MIN INT_MIN #define wxINT32_MAX INT_MAX + #define wxUINT32_MAX UINT_MAX #elif SIZEOF_LONG == 4 #define wxINT32_MIN LONG_MIN #define wxINT32_MAX LONG_MAX + #define wxUINT32_MAX ULONG_MAX #else #error "Unknown 32 bit type" #endif @@ -924,11 +945,13 @@ typedef wxUint16 wxWord; typedef wxUint32 wxDword; #ifdef LLONG_MAX - #define wxINT64_MAX LLONG_MAX #define wxINT64_MIN LLONG_MIN + #define wxINT64_MAX LLONG_MAX + #define wxUINT64_MAX ULLONG_MAX #else - #define wxINT64_MAX wxLL(9223372036854775807) #define wxINT64_MIN (wxLL(-9223372036854775807)-1) + #define wxINT64_MAX wxLL(9223372036854775807) + #define wxUINT64_MAX wxULL(0xFFFFFFFFFFFFFFFF) #endif /* 64 bit */ @@ -955,28 +978,28 @@ typedef wxUint32 wxDword; #if (defined(__VISUALC__) && defined(__WIN32__)) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("I64") + #define wxLongLongFmtSpec "I64" #elif defined(__BORLANDC__) && defined(__WIN32__) && (__BORLANDC__ >= 0x520) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("L") + #define wxLongLongFmtSpec "L" #elif (defined(__WATCOMC__) && (defined(__WIN32__) || defined(__DOS__) || defined(__OS2__))) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 - #define wxLongLongFmtSpec _T("L") + #define wxLongLongFmtSpec "L" #elif defined(__DIGITALMARS__) #define wxLongLong_t __int64 #define wxLongLongSuffix LL - #define wxLongLongFmtSpec _T("ll") + #define wxLongLongFmtSpec "ll" #elif defined(__MINGW32__) #define wxLongLong_t long long #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("I64") + #define wxLongLongFmtSpec "I64" #elif defined(__MWERKS__) #if __option(longlong) #define wxLongLong_t long long #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") + #define wxLongLongFmtSpec "ll" #else #error "The 64 bit integer support in CodeWarrior has been disabled." #error "See the documentation on the 'longlong' pragma." @@ -988,7 +1011,7 @@ typedef wxUint32 wxDword; #define wxLongLong_t long long #endif /* __WXPALMOS6__ */ #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") + #define wxLongLongFmtSpec "ll" #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 #define wxLongLong_t long long #elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ @@ -998,11 +1021,11 @@ typedef wxUint32 wxDword; (defined(__DJGPP__) && __DJGPP__ >= 2) #define wxLongLong_t long long #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") + #define wxLongLongFmtSpec "ll" #elif defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) #define wxLongLong_t long #define wxLongLongSuffix l - #define wxLongLongFmtSpec _T("l") + #define wxLongLongFmtSpec "l" #define wxLongLongIsLong #endif @@ -1072,6 +1095,9 @@ typedef wxUint32 wxDword; #else #error "error defining ssize_t, size_t is not 4 or 8 bytes" #endif + + /* prevent ssize_t redefinitions in other libraries */ + #define HAVE_SSIZE_T #endif // we can't rely on Windows _W64 being defined as windows.h may not be included @@ -1440,6 +1466,11 @@ enum wxDirection 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 + wxALIGN_INVALID = -1, + wxALIGN_NOT = 0x0000, wxALIGN_CENTER_HORIZONTAL = 0x0100, wxALIGN_CENTRE_HORIZONTAL = wxALIGN_CENTER_HORIZONTAL, @@ -1683,9 +1714,10 @@ enum wxBorder #define wxLB_MULTIPLE 0x0040 #define wxLB_EXTENDED 0x0080 /* wxLB_OWNERDRAW is Windows-only */ +#define wxLB_NEEDED_SB 0x0000 #define wxLB_OWNERDRAW 0x0100 -#define wxLB_NEEDED_SB 0x0200 -#define wxLB_ALWAYS_SB 0x0400 +#define wxLB_ALWAYS_SB 0x0200 +#define wxLB_NO_SB 0x0400 #define wxLB_HSCROLL wxHSCROLL /* always show an entire number of rows */ #define wxLB_INT_HEIGHT 0x0800 @@ -1757,11 +1789,6 @@ enum wxBorder #define wxTC_MULTILINE 0x0200 /* == wxNB_MULTILINE */ #define wxTC_OWNERDRAW 0x0400 -/* - * wxStatusBar95 flags - */ -#define wxST_SIZEGRIP 0x0010 - /* * wxStaticBitmap flags */ @@ -1803,7 +1830,6 @@ enum wxBorder #define wxICON_INFORMATION 0x00000800 #define wxICON_STOP wxICON_HAND #define wxICON_ASTERISK wxICON_INFORMATION -#define wxICON_MASK (0x00000100|0x00000200|0x00000400|0x00000800) #define wxFORWARD 0x00001000 #define wxBACKWARD 0x00002000 @@ -1811,17 +1837,40 @@ enum wxBorder #define wxHELP 0x00008000 #define wxMORE 0x00010000 #define wxSETUP 0x00020000 +#define wxICON_NONE 0x00040000 + +#define wxICON_MASK \ + (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE) /* * Background styles. See wxWindow::SetBackgroundStyle */ - enum wxBackgroundStyle { - wxBG_STYLE_SYSTEM, - wxBG_STYLE_COLOUR, - wxBG_STYLE_CUSTOM, - wxBG_STYLE_TRANSPARENT + // 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 + 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 + wxBG_STYLE_PAINT, + + + // 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 + wxBG_STYLE_COLOUR, + + // this style is deprecated and is synonymous with wxBG_STYLE_PAINT, use + // the new name + wxBG_STYLE_CUSTOM = wxBG_STYLE_PAINT }; /* @@ -2209,12 +2258,12 @@ enum wxKeyCode WXK_DELETE = 127, /* values from 128 to 255 are reserved for ASCII extended characters - (note that there isn't a real widely used standard for the meaning + (note that there isn't a single fixed standard for the meaning of these values; avoid them in portable apps!) */ - /* These are, by design, not compatible with unicode characters. + /* These are not compatible with unicode characters. If you want to get a unicode character from a key event, use - wxKeyEvent::GetUnicodeKey instead. */ + wxKeyEvent::GetUnicodeKey */ WXK_START = 300, WXK_LBUTTON, WXK_RBUTTON, @@ -2488,14 +2537,17 @@ typedef enum wxPAPER_PENV_7_ROTATED, /* PRC Envelope #7 Rotated 230 x 160 mm */ wxPAPER_PENV_8_ROTATED, /* PRC Envelope #8 Rotated 309 x 120 mm */ wxPAPER_PENV_9_ROTATED, /* PRC Envelope #9 Rotated 324 x 229 mm */ - wxPAPER_PENV_10_ROTATED /* PRC Envelope #10 Rotated 458 x 324 m */ + wxPAPER_PENV_10_ROTATED, /* PRC Envelope #10 Rotated 458 x 324 m */ + wxPAPER_A0, /* A0 Sheet 841 x 1189 mm */ + wxPAPER_A1 /* A1 Sheet 594 x 841 mm */ } wxPaperSize; /* Printing orientation */ -#ifndef wxPORTRAIT -#define wxPORTRAIT 1 -#define wxLANDSCAPE 2 -#endif +enum wxPrintOrientation +{ + wxPORTRAIT = 1, + wxLANDSCAPE +}; /* Duplex printing modes */ @@ -2613,8 +2665,8 @@ typedef unsigned short WXWORD; typedef WX_OPAQUE_TYPE(PicHandle ) * WXHMETAFILE ; #if wxOSX_USE_CARBON -typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ; -typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ; +typedef struct OpaqueControlRef* WXWidget ; +typedef struct OpaqueWindowPtr* WXWindow ; typedef struct __AGLPixelFormatRec *WXGLPixelFormat; typedef struct __AGLContextRec *WXGLContext; #endif @@ -2627,16 +2679,24 @@ typedef void* WXDisplay; 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; + +DECLARE_WXOSX_OPAQUE_CONST_CFREF( CFString ) typedef struct __CFString * CFMutableStringRef; -typedef struct __CFRunLoopSource * CFRunLoopSourceRef; +DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoopSource ) +DECLARE_WXOSX_OPAQUE_CONST_CFREF( CTFont ) +DECLARE_WXOSX_OPAQUE_CONST_CFREF( CTFontDescriptor ) -#define DECLARE_WXMAC_OPAQUE_CGREF( name ) typedef struct name* name##Ref; +#define DECLARE_WXOSX_OPAQUE_CGREF( name ) typedef struct name* name##Ref; -DECLARE_WXMAC_OPAQUE_CGREF( CGColor ) -DECLARE_WXMAC_OPAQUE_CGREF( CGImage ) -DECLARE_WXMAC_OPAQUE_CGREF( CGContext ) +DECLARE_WXOSX_OPAQUE_CGREF( CGColor ) +DECLARE_WXOSX_OPAQUE_CGREF( CGImage ) +DECLARE_WXOSX_OPAQUE_CGREF( CGContext ) +DECLARE_WXOSX_OPAQUE_CGREF( CGFont ) typedef CGColorRef WXCOLORREF; typedef CGImageRef WXCGIMAGEREF; @@ -2737,6 +2797,8 @@ DECLARE_WXCOCOA_OBJC_CLASS(NSColorPanel); DECLARE_WXCOCOA_OBJC_CLASS(NSControl); DECLARE_WXCOCOA_OBJC_CLASS(NSCursor); DECLARE_WXCOCOA_OBJC_CLASS(NSEvent); +DECLARE_WXCOCOA_OBJC_CLASS(NSFont); +DECLARE_WXCOCOA_OBJC_CLASS(NSFontDescriptor); DECLARE_WXCOCOA_OBJC_CLASS(NSFontPanel); DECLARE_WXCOCOA_OBJC_CLASS(NSImage); DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager); @@ -2783,9 +2845,15 @@ typedef WX_NSOpenGLContext WXGLContext; DECLARE_WXCOCOA_OBJC_CLASS(UIWindow); DECLARE_WXCOCOA_OBJC_CLASS(UIView); DECLARE_WXCOCOA_OBJC_CLASS(UIFont); +DECLARE_WXCOCOA_OBJC_CLASS(UIImage); +DECLARE_WXCOCOA_OBJC_CLASS(UIEvent); +DECLARE_WXCOCOA_OBJC_CLASS(NSSet); +DECLARE_WXCOCOA_OBJC_CLASS(EAGLContext); typedef WX_UIWindow WXWindow; typedef WX_UIView WXWidget; +typedef WX_EAGLContext WXGLContext; +typedef WX_NSString* WXGLPixelFormat; #endif @@ -3112,9 +3180,11 @@ typedef const void* WXWidget; /* This is required because of clashing macros in windows.h, which may be */ /* included before or after wxWidgets classes, and therefore must be */ /* disabled here before any significant wxWidgets headers are included. */ +#ifdef __cplusplus #ifdef __WXMSW__ #include "wx/msw/winundef.h" #endif /* __WXMSW__ */ +#endif /* __cplusplus */ /* include the feature test macros */ @@ -3134,6 +3204,11 @@ typedef const void* WXWidget; classname(const classname&); \ classname& operator=(const classname&) +#define wxDECLARE_NO_COPY_TEMPLATE_CLASS_2(classname, arg1, arg2) \ + private: \ + classname(const classname&); \ + classname& operator=(const classname&) + #define wxDECLARE_NO_ASSIGN_CLASS(classname) \ private: \ classname& operator=(const classname&)