]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Added helper functions for string -> XmString conversion.
[wxWidgets.git] / include / wx / defs.h
index 1a8b26dc3ba088dbdfd1f74f573f51bba1f2cabe..ff1598c7320dfc5d3d3139093eba0ec279882f45 100644 (file)
     #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
         // Watcom 11+ supports bool
         #define HAVE_BOOL
-    #elif defined(__GNUWIN32__)
+    #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__)
         // Cygwin supports bool
         #define HAVE_BOOL
     #elif defined(__VISAGECPP__)
     typedef unsigned int bool;
 #endif // bool
 
-#ifdef __cplusplus
-    // define boolean constants: don't use true/false here as not all compilers
-    // support them but also redefine TRUE which could have been defined as 1
-    // by previous headers: this would be incorrect as our TRUE is supposed to
-    // be of type bool, just like true, not int
-    //
-    // however if the user code absolutely needs TRUE to be defined in its own
-    // way, it can predefine WX_TRUE_DEFINED to prevent the redefinition here
-    #ifdef TRUE
-        #ifndef WX_TRUE_DEFINED
-            #undef TRUE
-            #undef FALSE
-        #endif
-    #endif
+// deal with TRUE/true stuff: we assume that if the compiler supports bool, it
+// supports true/false as well and that, OTOH, if it does _not_ support bool,
+// it doesn't support these keywords (this is less sure, in particular VC++
+// 4.x could be a problem here)
+#ifndef HAVE_BOOL
+    #define true ((bool)1)
+    #define false ((bool)0)
+#endif
 
-    #ifndef TRUE
-        #define TRUE  ((bool)1)
-        #define FALSE ((bool)0)
-    #endif
-#else // !__cplusplus
-    // the definitions above don't work for C sources
-    #ifndef TRUE
-        #define TRUE 1
-    #endif
+// for backwards compatibility, also define TRUE and FALSE
+//
+// note that these definitions should work both in C++ and C code, so don't
+// use true/false below
+#ifndef TRUE
+    #define TRUE 1
+#endif
 
-    #ifndef FALSE
-        #define FALSE 0
-    #endif
-#endif // C++/!C++
+#ifndef FALSE
+    #define FALSE 0
+#endif
 
 typedef short int WXTYPE;
 
@@ -231,8 +222,12 @@ typedef int wxWindowID;
 
 // check for explicit keyword support
 #ifndef HAVE_EXPLICIT
-    #if defined(__VISUALC__) && (__VISUALC__ > 1200)
-        // VC++ 6.0 has explicit (what about the earlier versions?)
+    #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
+        // VC++ 6.0 and 5.0 have explicit (what about the earlier versions?)
+        #define HAVE_EXPLICIT
+    #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
+          && wxCHECK_GCC_VERSION(2, 95)
+        // GCC 2.95 has explicit, what about earlier versions?
         #define HAVE_EXPLICIT
     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)
         // BC++ 4.52 doesn't support explicit, CBuilder 1 does
@@ -249,12 +244,30 @@ typedef int wxWindowID;
     #define wxEXPLICIT
 #endif // HAVE_EXPLICIT/!HAVE_EXPLICIT
 
+// check for static/const/reinterpret_cast<>()
+#ifndef HAVE_STATIC_CAST
+    #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
+        // VC++ 6.0 and 5.0 have C++ casts (what about the earlier versions?)
+        #define HAVE_CXX_CASTS
+    #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
+          && wxCHECK_GCC_VERSION(2, 95)
+        // GCC 2.95 has C++ casts, what about earlier versions?
+        #define HAVE_CXX_CASTS
+    #endif
+#endif // HAVE_STATIC_CAST
+
+#ifdef HAVE_CXX_CASTS
+    #ifndef HAVE_CONST_CAST
+        #define HAVE_CONST_CAST
+    #endif
+#endif // HAVE_CXX_CASTS
+
 // ----------------------------------------------------------------------------
 // portable calling conventions macros
 // ----------------------------------------------------------------------------
 
 // stdcall is used for all functions called by Windows under Windows
-#if defined(__WINDOWS__) && !defined(__WXWINE__)
+#if defined(__WINDOWS__)
     #if defined(__GNUWIN32__)
         #define wxSTDCALL __attribute__((stdcall))
     #else
@@ -391,6 +404,15 @@ class WXDLLEXPORT wxEvent;
 #  endif /* ATTRIBUTE_PRINTF */
 #endif
 
+// Macro to issue warning when using deprecated functions with gcc3 or MSVC7:
+#if wxCHECK_GCC_VERSION(3, 1)
+    #define wxDEPRECATED(x) x __attribute__ ((deprecated))
+#elif defined(__VISUALC__) && (__VISUALC__ >= 1300)
+    #define wxDEPRECATED(x) __declspec(deprecated) x
+#else
+    #define wxDEPRECATED(x) x
+#endif
+
 // everybody gets the assert and other debug macros
 #ifdef __cplusplus
 #include "wx/debug.h"
@@ -976,7 +998,8 @@ enum wxBorder
 #define wxICONIZE               0x4000
 #define wxMINIMIZE              wxICONIZE
 #define wxMAXIMIZE              0x2000
-                                        // free flag value: 0x1000
+#define wxCLOSE_BOX                 0x1000
+
 #define wxSYSTEM_MENU           0x0800
 #define wxMINIMIZE_BOX          0x0400
 #define wxMAXIMIZE_BOX          0x0200
@@ -1010,16 +1033,10 @@ enum wxBorder
 
 #define wxDEFAULT_FRAME_STYLE \
   (wxSYSTEM_MENU | wxRESIZE_BORDER | \
-   wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \
+   wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX | \
    wxCAPTION | wxCLIP_CHILDREN)
 
-#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMGL__)
-#   define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION)
-#else
-//  Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU
-//  here will make a close button appear.
-#   define wxDEFAULT_DIALOG_STYLE  wxCAPTION
-#endif
+#define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)
 
 /*
  * wxExtDialog style flags
@@ -1656,7 +1673,11 @@ enum wxKeyCode
     WXK_NUMPAD_SEPARATOR,
     WXK_NUMPAD_SUBTRACT,
     WXK_NUMPAD_DECIMAL,
-    WXK_NUMPAD_DIVIDE
+    WXK_NUMPAD_DIVIDE,
+
+    WXK_WINDOWS_LEFT,
+    WXK_WINDOWS_RIGHT,
+    WXK_WINDOWS_MENU
 };
 
 // Mapping modes (same values as used by Windows, don't change)
@@ -1824,6 +1845,8 @@ typedef void*       WXRECTPTR ;
 typedef void*       WXPOINTPTR ;
 typedef void*       WXHWND ;
 typedef void*       WXEVENTREF ;
+typedef void*          WXEVENTHANDLERREF ;
+typedef void*       WXEVENTHANDLERCALLREF ; 
 typedef void*       WXAPPLEEVENTREF ;
 typedef void*       WXHDC ;
 typedef void*       WXHMENU ;
@@ -1922,7 +1945,7 @@ typedef WXHWND          WXWidget;
 typedef unsigned int    WXWPARAM;
 typedef long            WXLPARAM;
 
-#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__)
+#if !defined(__WIN32__) || defined(__GNUWIN32__) || defined(__WXMICROWIN__)
 typedef int             (*WXFARPROC)();
 #else
 typedef int             (__stdcall *WXFARPROC)();
@@ -2023,6 +2046,10 @@ typedef void*           WXRegion;
 typedef void*           WXFont;
 typedef void*           WXImage;
 typedef void*           WXFontList;
+typedef void*           WXRendition;
+typedef void*           WXRenderTable;
+typedef void*           WXFontType; /* either a XmFontList or XmRenderTable */
+typedef void*           WXString;
 
 typedef unsigned long   Atom;  /* this might fail on a few architectures */