]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Misc script updates
[wxWidgets.git] / include / wx / defs.h
index d033683829ce4edeb7a7cd2cfb713e67cf306b56..59d8729291182ea2bd1b9ef8faa4d914532b34ef 100644 (file)
 /*  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__) && \
-      !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__WXCOCOA__) && \
-      !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \
-      wxUSE_GUI
+#   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 */
@@ -205,7 +211,7 @@ 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!). Usign wxGetWindowId() which does */
+/*  (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;
@@ -264,6 +270,9 @@ typedef int wxWindowID;
     #ifndef HAVE_CONST_CAST
         #define HAVE_CONST_CAST
     #endif
+    #ifndef HAVE_REINTERPRET_CAST
+        #define HAVE_REINTERPRET_CAST
+    #endif
     #ifndef HAVE_STATIC_CAST
         #define HAVE_STATIC_CAST
     #endif
@@ -281,6 +290,12 @@ typedef int wxWindowID;
     #define wx_const_cast(t, x) ((t)(x))
 #endif
 
+#ifdef HAVE_REINTERPRET_CAST
+    #define wx_reinterpret_cast(t, x) reinterpret_cast<t>(x)
+#else
+    #define wx_reinterpret_cast(t, x) ((t)(x))
+#endif
+
 /* for consistency with wxStatic/DynamicCast defined in wx/object.h */
 #define wxConstCast(obj, className) wx_const_cast(className *, obj)
 
@@ -308,6 +323,50 @@ typedef int wxWindowID;
     #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 */
 /*  ---------------------------------------------------------------------------- */
@@ -399,7 +458,9 @@ 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__
 #include <stddef.h>
+#endif
 
 /*  delete pointer if it is not NULL and NULL it afterwards */
 /*  (checking that it's !NULL before passing it to delete is just a */
@@ -561,6 +622,7 @@ enum
         typedef int wxCoord;
 #endif /*  wxUSE_COMPATIBLE_COORD_TYPES/!wxUSE_COMPATIBLE_COORD_TYPES */
 
+enum {  wxDefaultCoord = -1 };
 
 /*  ---------------------------------------------------------------------------- */
 /*  define fixed length types */
@@ -687,9 +749,9 @@ typedef wxUint16 wxWord;
         typedef int wxInt32;
         typedef unsigned int wxUint32;
 
-               #if defined(__MACH__) && !defined(SIZEOF_WCHAR_T)
-                       #define SIZEOF_WCHAR_T 4
-               #endif
+        #if defined(__MACH__) && !defined(SIZEOF_WCHAR_T)
+            #define SIZEOF_WCHAR_T 4
+        #endif
         #if wxUSE_WCHAR_T && !defined(SIZEOF_WCHAR_T)
             /*  also assume that sizeof(wchar_t) == 2 (under Unix the most */
             /*  common case is 4 but there configure would have defined */
@@ -722,6 +784,28 @@ typedef wxUint32 wxDword;
     #error "Pointers can't be stored inside integer types."
 #endif
 
+#ifdef __cplusplus
+/* And also define a simple function to cast pointer to it. */
+inline wxUIntPtr wxPtrToUInt(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
+     */
+#ifdef __VISUALC__
+    #pragma warning(disable: 4311) /* pointer truncation from '' to '' */
+#endif
+
+    return wx_reinterpret_cast(wxUIntPtr, p);
+
+#ifdef __VISUALC__
+    #pragma warning(default: 4311)
+#endif
+}
+#endif /*__cplusplus*/
+
+
 /*  64 bit */
 
 /*  NB: we #define and not typedef wxLongLong_t because we want to be able to */
@@ -808,6 +892,24 @@ typedef float wxFloat32;
     typedef double wxDouble;
 #endif
 
+/*
+    Some (non standard) compilers typedef wchar_t as an existing type instead
+    of treating it as a real fundamental type, set wxWCHAR_T_IS_REAL_TYPE to 0
+    for them and to 1 for all the others.
+ */
+#if wxUSE_WCHAR_T
+    /*
+        VC++ typedefs wchar_t as unsigned short by default, that is unless
+        /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED is
+        defined.
+     */
+#   if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED)
+#       define wxWCHAR_T_IS_REAL_TYPE 0
+#   else /* compiler having standard-conforming wchar_t */
+#       define wxWCHAR_T_IS_REAL_TYPE 1
+#   endif
+#endif /* wxUSE_WCHAR_T */
+
 /*  ---------------------------------------------------------------------------- */
 /*  byte ordering related definition and macros */
 /*  ---------------------------------------------------------------------------- */
@@ -1029,8 +1131,12 @@ enum wxStretch
     wxFIXED_MINSIZE           = 0x8000,
     wxTILE                    = 0xc000,
 
-    // for compatibility only, default now, don't use explicitly any more
-    wxADJUST_MINSIZE          = 0x0000
+    /* for compatibility only, default now, don't use explicitly any more */
+#if WXWIN_COMPATIBILITY_2_4
+    wxADJUST_MINSIZE          = 0x00100000
+#else
+    wxADJUST_MINSIZE          = 0
+#endif
 };
 
 /*  border flags: the values are chosen for backwards compatibility */
@@ -1175,6 +1281,9 @@ enum wxBorder
 #define wxFRAME_EX_CONTEXTHELP  0x00000004
 #define wxDIALOG_EX_CONTEXTHELP 0x00000004
 
+/*  Create a window which is attachable to another top level window */
+#define wxFRAME_DRAWER          0x0020
+
 /*
  * MDI parent frame style flags
  * Can overlap with some of the above.
@@ -1305,6 +1414,27 @@ enum wxBorder
 #define wxNB_RIGHT            0x0040
 #define wxNB_BOTTOM           0x0080
 #define wxNB_MULTILINE        0x0100
+#define wxNB_DEFAULT          wxNB_TOP
+
+/*
+ * wxListbook flags
+ */
+#define wxLB_DEFAULT          0x0
+#define wxLB_TOP              0x1
+#define wxLB_BOTTOM           0x2
+#define wxLB_LEFT             0x4
+#define wxLB_RIGHT            0x8
+#define wxLB_ALIGN_MASK       0xf
+
+/*
+ * wxChoicebook flags
+ */
+#define wxCHB_DEFAULT         0x0
+#define wxCHB_TOP             0x1
+#define wxCHB_BOTTOM          0x2
+#define wxCHB_LEFT            0x4
+#define wxCHB_RIGHT           0x8
+#define wxCHB_ALIGN_MASK      0xf
 
 /*
  * wxTabCtrl flags
@@ -1392,6 +1522,17 @@ enum wxBorder
 #define  wxMORE                 0x00010000
 #define  wxSETUP                0x00020000
 
+/*
+ * Background styles. See wxWindow::SetBackgroundStyle
+ */
+
+enum wxBackgroundStyle
+{
+  wxBG_STYLE_SYSTEM,
+  wxBG_STYLE_COLOUR,
+  wxBG_STYLE_CUSTOM
+};
+
 /*  ---------------------------------------------------------------------------- */
 /*  standard IDs */
 /*  ---------------------------------------------------------------------------- */
@@ -1466,7 +1607,7 @@ enum
     wxID_FILE8,
     wxID_FILE9,
 
-    /*  Standard button IDs */
+    /*  Standard button and menu IDs */
     wxID_OK = 5100,
     wxID_CANCEL,
     wxID_APPLY,
@@ -1485,6 +1626,31 @@ enum
     wxID_ABORT,
     wxID_RETRY,
     wxID_IGNORE,
+    wxID_ADD,
+    wxID_REMOVE,
+
+    wxID_UP,
+    wxID_DOWN,
+    wxID_HOME,
+    wxID_REFRESH,
+    wxID_STOP,
+    wxID_INDEX,
+
+    wxID_BOLD,
+    wxID_ITALIC,
+    wxID_JUSTIFY_CENTER,
+    wxID_JUSTIFY_FILL,
+    wxID_JUSTIFY_RIGHT,
+    wxID_JUSTIFY_LEFT,
+    wxID_UNDERLINE,
+    wxID_INDENT,
+    wxID_UNINDENT,
+    wxID_ZOOM_100,
+    wxID_ZOOM_FIT,
+    wxID_ZOOM_IN,
+    wxID_ZOOM_OUT,
+    wxID_UNDELETE,
+    wxID_REVERT_TO_SAVED,
 
     /*  System menu IDs (used by wxUniv): */
     wxID_SYSTEM_MENU = 5200,
@@ -2005,8 +2171,8 @@ 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;
@@ -2133,7 +2299,7 @@ typedef unsigned short  WXWORD;
 
 typedef unsigned long   WXCOLORREF;
 typedef void *          WXRGNDATA;
-typedef void *          WXMSG;
+typedef struct tagMSG   WXMSG;
 typedef void *          WXHCONV;
 typedef void *          WXHKEY;
 typedef void *          WXHTREEITEM;
@@ -2336,7 +2502,7 @@ typedef struct _GdkICAttr       GdkICAttr;
 
 /* Stand-ins for GTK types */
 typedef struct _GtkWidget         GtkWidget;
-typedef struct _GtkStyle          GtkStyle;
+typedef struct _GtkRcStyle        GtkRcStyle;
 typedef struct _GtkAdjustment     GtkAdjustment;
 typedef struct _GtkList           GtkList;
 typedef struct _GtkToolbar        GtkToolbar;
@@ -2354,11 +2520,6 @@ typedef GtkWidget *WXWidget;
 #define GTK_CLASS_TYPE(klass) ((klass)->type)
 #endif
 
-#ifdef __WXGTK20__
-/* Input method thing */
-typedef struct _GtkIMMulticontext    GtkIMMulticontext;
-#endif /*  __WXGTK20__ */
-
 #endif /*  __WXGTK__ */
 
 #if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE)