#ifndef _WX_DEFS_H_
#define _WX_DEFS_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "defs.h"
-#endif
-
/* ---------------------------------------------------------------------------- */
/* compiler and OS identification */
/* ---------------------------------------------------------------------------- */
#endif
#endif /* __VISUALC__ */
-/* 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' */
-#endif /* __VISUALC__ */
-
/* suppress some Salford C++ warnings */
#ifdef __SALFORDC__
# pragma suppress 353 /* Possible nested comments */
#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 wxVaCopy
+ /* if va_copy is a macro or configure detected that we have it, use it */
+ #if defined(va_copy) || defined(HAVE_VA_COPY)
+ #define wxVaCopy va_copy
+ #else /* no va_copy, try to provide a replacement */
+ /*
+ configure tries to determine whether va_list is an array or struct
+ type, but it may not be used under Windows, so deal with a few
+ special cases.
+ */
+
+ #ifdef __WATCOMC__
+ /* Watcom uses array type for va_list except for PPC and Alpha */
+ #if !defined(__PPC__) && !defined(__AXP__)
+ #define VA_LIST_IS_ARRAY
+ #endif
+ #endif /* __WATCOMC__ */
+
+ #if defined(__PPC__) && (defined(_CALL_SYSV) || defined (_WIN32))
+ /*
+ PPC using SysV ABI and NT/PPC are special in that they use an
+ extra level of indirection.
+ */
+ #define VA_LIST_IS_POINTER
+ #endif /* SysV or Win32 on __PPC__ */
+
+ /*
+ note that we use memmove(), not memcpy(), in case anybody tries
+ to do wxVaCopy(ap, ap)
+ */
+ #if defined(VA_LIST_IS_POINTER)
+ #define wxVaCopy(d, s) memmove(*(d), *(s), sizeof(va_list))
+ #elif defined(VA_LIST_IS_ARRAY)
+ #define wxVaCopy(d, s) memmove((d), (s), sizeof(va_list))
+ #else /* we can only hope that va_lists are simple lvalues */
+ #define wxVaCopy(d, s) ((d) = (s))
+ #endif
+ #endif /* va_copy/!va_copy */
+#endif // wxVaCopy
+
+
/* ---------------------------------------------------------------------------- */
/* portable calling conventions macros */
/* ---------------------------------------------------------------------------- */
/* appending the current line number to the given identifier to reduce the */
/* probability of the conflict (it may still happen if this is used in the */
/* headers, hence you should avoid doing it or provide unique prefixes then) */
-#define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__)
+#if defined(__VISUALC__) && (__VISUALC__ >= 1300)
+ /*
+ __LINE__ handling is completely broken in VC++ when using "Edit and
+ Continue" (/ZI option) and results in preprocessor errors if we use it
+ inside the macros. Luckily VC7 has another standard macro which can be
+ used like this and is even better than __LINE__ because it is globally
+ unique.
+ */
+# define wxCONCAT_LINE(text) wxCONCAT(text, __COUNTER__)
+#else /* normal compilers */
+# define wxCONCAT_LINE(text) wxCONCAT(text, __LINE__)
+#endif
#define wxMAKE_UNIQUE_NAME(text) wxCONCAT_LINE(text)
/* symbolic constant used by all Find()-like functions returning positive */
#error "Pointers can't be stored inside integer types."
#endif
-/* And also define a simple function to cast pointer to it. */
-inline wxUIntPtr wxPtrToUInt(void *p)
+#ifdef __cplusplus
+/* And also define a couple of simple functions to cast pointer to/from it. */
+inline wxUIntPtr wxPtrToUInt(const void *p)
{
- // VC++ 7.1 gives warnings about casts such as below even when they're
- // explicit with /Wp64 option, suppress them as we really know what we're
- // doing here
+ /*
+ VC++ 7.1 gives warnings about casts such as below even when they're
+ explicit with /Wp64 option, suppress them as we really know what we're
+ doing here
+ */
#ifdef __VISUALC__
#pragma warning(disable: 4311) /* pointer truncation from '' to '' */
#endif
#endif
}
+inline void *wxUIntToPtr(wxUIntPtr p)
+{
+#ifdef __VISUALC__
+ #pragma warning(disable: 4312) /* conversion to type of greater size */
+#endif
+
+ return wx_reinterpret_cast(void *, p);
+
+#ifdef __VISUALC__
+ #pragma warning(default: 4312)
+#endif
+}
+#endif /*__cplusplus*/
+
/* 64 bit */
#define wxUINT64_SWAP_ON_BE(val) (val)
#endif
-/* Macros to convert from unsigned long to void pointer. */
-/* High order truncation occurs if the respective type is not large enough. */
-#define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0)
-#define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE])
-#define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p)
-
/* ---------------------------------------------------------------------------- */
/* Geometric flags */
/* ---------------------------------------------------------------------------- */
wxFIXED_MINSIZE = 0x8000,
wxTILE = 0xc000,
- // for compatibility only, default now, don't use explicitly any more
+ /* for compatibility only, default now, don't use explicitly any more */
#if WXWIN_COMPATIBILITY_2_4
wxADJUST_MINSIZE = 0x00100000
#else
#define wxDIALOG_EX_CONTEXTHELP 0x00000004
/* Create a window which is attachable to another top level window */
-#define wxFRAME_DRAWER 0x0020
+#define wxFRAME_DRAWER 0x0020
/*
* MDI parent frame style flags
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;
DECLARE_WXCOCOA_OBJC_CLASS(NSBox);
DECLARE_WXCOCOA_OBJC_CLASS(NSButton);
DECLARE_WXCOCOA_OBJC_CLASS(NSColor);
+DECLARE_WXCOCOA_OBJC_CLASS(NSColorPanel);
DECLARE_WXCOCOA_OBJC_CLASS(NSControl);
+DECLARE_WXCOCOA_OBJC_CLASS(NSCursor);
DECLARE_WXCOCOA_OBJC_CLASS(NSEvent);
+DECLARE_WXCOCOA_OBJC_CLASS(NSFontPanel);
DECLARE_WXCOCOA_OBJC_CLASS(NSImage);
DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager);
DECLARE_WXCOCOA_OBJC_CLASS(NSMenu);
+DECLARE_WXCOCOA_OBJC_CLASS(NSMenuExtra);
DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);
DECLARE_WXCOCOA_OBJC_CLASS(NSMutableArray);
DECLARE_WXCOCOA_OBJC_CLASS(NSNotification);
+DECLARE_WXCOCOA_OBJC_CLASS(NSObject);
DECLARE_WXCOCOA_OBJC_CLASS(NSPanel);
DECLARE_WXCOCOA_OBJC_CLASS(NSScrollView);
+DECLARE_WXCOCOA_OBJC_CLASS(NSSound);
+DECLARE_WXCOCOA_OBJC_CLASS(NSStatusItem);
DECLARE_WXCOCOA_OBJC_CLASS(NSTableColumn);
DECLARE_WXCOCOA_OBJC_CLASS(NSTableView);
DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer);