]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
added wxWeakRef<T> (slightly modified patch 1860953)
[wxWidgets.git] / include / wx / defs.h
index ad5e2a6ab5683dc635f99850d8b1a1dedf969742..4d4b4bbf695329285c3d461a7c5aba219921f832 100644 (file)
     #endif /* VC++ 8 */
 #endif /*  __VISUALC__ */
 
-/*  suppress some Salford C++ warnings */
-#ifdef __SALFORDC__
-#   pragma suppress 353             /*  Possible nested comments */
-#   pragma suppress 593             /*  Define not used */
-#   pragma suppress 61              /*  enum has no name (doesn't suppress!) */
-#   pragma suppress 106             /*  unnamed, unused parameter */
-#   pragma suppress 571             /*  Virtual function hiding */
-#endif /*  __SALFORDC__ */
-
 /*  suppress some Borland C++ warnings */
 #ifdef __BORLANDC__
 #   pragma warn -inl                /*  Functions containing reserved words and certain constructs are not expanded inline */
             #define false ((bool)0)
         #endif
         #define HAVE_BOOL
+    #elif defined(__WXPALMOS__)
+        /*  Palm OS supports bool */
+        #define HAVE_BOOL
     #endif /*  compilers */
 #endif /*  HAVE_BOOL */
 
 
 typedef short int WXTYPE;
 
-/*  special care should be taken with this type under Windows where the real */
-/*  window id is unsigned, so we must always do the cast before comparing them */
-/*  (or else they would be always different!). Using wxGetWindowId() which does */
-/*  the cast itself is recommended. Note that this type can't be unsigned */
-/*  because wxID_ANY == -1 is a valid (and largely used) value for window id. */
-typedef int wxWindowID;
 
 /*  ---------------------------------------------------------------------------- */
 /*  other feature tests */
@@ -563,7 +551,7 @@ typedef int wxWindowID;
 /*  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 */
 /*  breaks C++ code) */
-#ifndef __HANDHELDPC__
+#if !defined(__HANDHELDPC__) && !defined(__PALMOS__)
 #include <stddef.h>
 #endif
 
@@ -751,7 +739,9 @@ enum {  wxDefaultCoord = -1 };
 /*  ---------------------------------------------------------------------------- */
 
 #if defined(__WXPALMOS__) || defined(__MINGW32__)
+  #if !defined(__MWERKS__)
     #include <sys/types.h>
+  #endif
 #endif
 
 /*  chars are always one byte (by definition), shorts are always two (in */
@@ -807,7 +797,9 @@ typedef wxUint16 wxWord;
     #define SIZEOF_LONG 4
     #define SIZEOF_WCHAR_T 2
     #define SIZEOF_SIZE_T 4
-    #define wxSIZE_T_IS_UINT
+    #ifdef __WXPALMOS6__
+        #define wxSIZE_T_IS_UINT
+    #endif
     #define SIZEOF_VOID_P 4
     #define SIZEOF_SIZE_T 4
 #elif defined(__WINDOWS__)
@@ -1058,7 +1050,11 @@ inline void *wxUIntToPtr(wxUIntPtr p)
         #error "See the documentation on the 'longlong' pragma."
     #endif
 #elif defined(__WXPALMOS__)
-    #define wxLongLong_t int64_t
+    #if defined(__WXPALMOS6__)
+        #define wxLongLong_t int64_t
+    #else
+        #define wxLongLong_t long long
+    #endif /* __WXPALMOS6__ */
     #define wxLongLongSuffix ll
     #define wxLongLongFmtSpec _T("ll")
 #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400
@@ -1082,7 +1078,11 @@ inline void *wxUIntToPtr(wxUIntPtr p)
 #ifdef wxLongLong_t
 
     #ifdef __WXPALMOS__
+    #if defined(__WXPALMOS6__)
         #define wxULongLong_t uint64_t
+    #else
+        #define wxULongLong_t unsigned long long
+    #endif /* __WXPALMOS6__ */
     #else
         #define wxULongLong_t unsigned wxLongLong_t
     #endif
@@ -1776,8 +1776,19 @@ enum
        These ids delimit the range used by automatically-generated ids
        (i.e. those used when wxID_ANY is specified during construction).
      */
+#if defined(__WXMSW__) || wxUSE_AUTOID_MANAGEMENT
+    /*
+       On MSW the range is always restricted no matter if id management
+       is used or not because the native window ids are limited to short
+       range.  On other platforms the range is only restricted if id
+       management is used so the reference count buffer won't be so big.
+     */
     wxID_AUTO_LOWEST = -32000,
     wxID_AUTO_HIGHEST = -2000,
+#else
+    wxID_AUTO_LOWEST = -1000000,
+    wxID_AUTO_HIGHEST = -2000,
+#endif
 
     /* no id matches this one when compared to it */
     wxID_NONE = -3,
@@ -1913,6 +1924,19 @@ enum
     wxID_HIGHEST = 5999
 };
 
+/*  ---------------------------------------------------------------------------- */
+/*  wxWindowID type (after wxID_XYZ enum, platform detection, and dlimpexp.h)    */
+/*  ---------------------------------------------------------------------------- */
+
+/*  special care should be taken with this type under Windows where the real */
+/*  window id is unsigned, so we must always do the cast before comparing them */
+/*  (or else they would be always different!). Using wxGetWindowId() which does */
+/*  the cast itself is recommended. Note that this type can't be unsigned */
+/*  because wxID_ANY == -1 is a valid (and largely used) value for window id. */
+#ifdef __cplusplus
+    #include "wx/windowid.h"
+#endif
+
 /*  ---------------------------------------------------------------------------- */
 /*  other constants */
 /*  ---------------------------------------------------------------------------- */
@@ -2500,11 +2524,8 @@ enum wxUpdateUI
 
 #define WX_OPAQUE_TYPE( name ) struct wxOpaque##name
 
-typedef unsigned char WXCOLORREF[6];
-typedef void*       WXCGIMAGEREF;
 typedef void*       WXHBITMAP;
 typedef void*       WXHCURSOR;
-typedef void*       WXHRGN;
 typedef void*       WXRECTPTR;
 typedef void*       WXPOINTPTR;
 typedef void*       WXHWND;
@@ -2512,20 +2533,21 @@ typedef void*       WXEVENTREF;
 typedef void*       WXEVENTHANDLERREF;
 typedef void*       WXEVENTHANDLERCALLREF;
 typedef void*       WXAPPLEEVENTREF;
-typedef void*       WXHDC;
 typedef void*       WXHMENU;
+
 typedef unsigned int    WXUINT;
 typedef unsigned long   WXDWORD;
 typedef unsigned short  WXWORD;
 
-typedef WX_OPAQUE_TYPE(CIconHandle ) * WXHICON ;
 typedef WX_OPAQUE_TYPE(PicHandle ) * WXHMETAFILE ;
 typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ;
 typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ;
 
 typedef void*       WXDisplay;
 
-// a few native types
+/*
+ * core frameworks
+ */
 
 typedef const void * CFTypeRef;
 
@@ -2534,13 +2556,34 @@ typedef struct __CFString * CFMutableStringRef;
 
 typedef struct __CFRunLoopSource * CFRunLoopSourceRef;
 
+#define DECLARE_WXMAC_OPAQUE_CGREF( name ) typedef struct name* name##Ref;
+
+DECLARE_WXMAC_OPAQUE_CGREF( CGColor )
+DECLARE_WXMAC_OPAQUE_CGREF( CGImage )
+DECLARE_WXMAC_OPAQUE_CGREF( CGContext )
+
+typedef CGColorRef    WXCOLORREF;
+typedef CGImageRef    WXCGIMAGEREF;
+typedef CGContextRef  WXHDC;
+
+/*
+ * carbon
+ */
+
+typedef const struct __HIShape * HIShapeRef;
+typedef struct __HIShape * HIMutableShapeRef;
+
 #define DECLARE_WXMAC_OPAQUE_REF( name ) typedef struct Opaque##name* name;
 
-DECLARE_WXMAC_OPAQUE_REF( PasteboardRef );
+DECLARE_WXMAC_OPAQUE_REF( PasteboardRef )
+DECLARE_WXMAC_OPAQUE_REF( IconRef )
+
+typedef IconRef WXHICON ;
+typedef HIShapeRef WXHRGN;
 
 #endif
 
-#if defined( __WXCOCOA__ ) || ( defined(__WXMAC__) && defined(__DARWIN__) )
+#if defined( __WXCOCOA__ ) || defined(__WXMAC__) 
 
 /* Definitions of 32-bit/64-bit types
  * These are typedef'd exactly the same way in newer OS X headers so