added wxEXPLICIT macro

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2002-07-16 12:03:44 +00:00
parent a0a26e4316
commit 986ecc861c
8 changed files with 910 additions and 696 deletions

View File

@ -144,6 +144,53 @@ AC_DEFUN([WX_CPP_BOOL],
fi
])
dnl ---------------------------------------------------------------------------
dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
dnl keyword and defines HAVE_EXPLICIT if this is the case
dnl ---------------------------------------------------------------------------
AC_DEFUN([WX_CPP_EXPLICIT],
[
AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
wx_cv_explicit,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl do the test in 2 steps: first check that the compiler knows about the
dnl explicit keyword at all and then verify that it really honours it
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
],
[
return 0;
],
[
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
static void TakeFoo(const Foo& foo) { }
],
[
TakeFoo(17);
return 0;
],
wx_cv_explicit=no,
wx_cv_explicit=yes
)
],
wx_cv_explicit=no
)
AC_LANG_RESTORE
])
if test "$wx_cv_explicit" = "yes"; then
AC_DEFINE(HAVE_EXPLICIT)
fi
])
dnl ---------------------------------------------------------------------------
dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
dnl ---------------------------------------------------------------------------

47
aclocal.m4 vendored
View File

@ -156,6 +156,53 @@ AC_DEFUN([WX_CPP_BOOL],
fi
])
dnl ---------------------------------------------------------------------------
dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
dnl keyword and defines HAVE_EXPLICIT if this is the case
dnl ---------------------------------------------------------------------------
AC_DEFUN([WX_CPP_EXPLICIT],
[
AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
wx_cv_explicit,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl do the test in 2 steps: first check that the compiler knows about the
dnl explicit keyword at all and then verify that it really honours it
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
],
[
return 0;
],
[
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
static void TakeFoo(const Foo& foo) { }
],
[
TakeFoo(17);
return 0;
],
wx_cv_explicit=no,
wx_cv_explicit=yes
)
],
wx_cv_explicit=no
)
AC_LANG_RESTORE
])
if test "$wx_cv_explicit" = "yes"; then
AC_DEFINE(HAVE_EXPLICIT)
fi
])
dnl ---------------------------------------------------------------------------
dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
dnl ---------------------------------------------------------------------------

1479
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1406,6 +1406,9 @@ WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH))
dnl check whether C++ compiler supports bool built-in type
WX_CPP_BOOL
dnl check whether C++ compiler supports explicit keyword
WX_CPP_EXPLICIT
dnl ---------------------------------------------------------------------------
dnl Define search path for includes and libraries: all headers and libs will be
dnl looked for in all directories of this path

View File

@ -171,6 +171,7 @@ wxBase:
- added static wxFontMapper::Get() accessor (use of wxTheFontMapper is now
deprecated)
- added wxShutdown() function (Marco Cavallini)
- added wxEXPLICIT macro
Unix (Base/GUI):

View File

@ -67,6 +67,7 @@ the corresponding topic.
\helpref{wxError}{wxerror}\\
\helpref{wxExecute}{wxexecute}\\
\helpref{wxExit}{wxexit}\\
\helpref{wxEXPLICIT}{wxexplicit}\\
\helpref{wxFAIL\_MSG}{wxfailmsg}\\
\helpref{wxFAIL}{wxfail}\\
\helpref{wxFatalError}{wxfatalerror}\\
@ -2100,6 +2101,13 @@ The clipboard must have previously been opened for this call to succeed.
\section{Miscellaneous functions}\label{miscellany}
\membersection{wxEXPLICIT}\label{wxexplicit}
{\tt wxEXPLICIT} is a macro which expands to the C++ {\tt explicit} keyword if
the compiler supports it or nothing otherwise. Thus, it can be used even in the
code which might have to be compiled with an old compiler without support for
this language feature but still take advantage of it when it is available.
\membersection{::wxNewId}\label{wxnewid}
\func{long}{wxNewId}{\void}

View File

@ -210,7 +210,7 @@ typedef short int WXTYPE;
// 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
// the cast itself is recommended. Note that this type can't be unsigned
// because -1 is a valid (and largely used) value for window id.
// because wxID_ANY == -1 is a valid (and largely used) value for window id.
typedef int wxWindowID;
// ----------------------------------------------------------------------------
@ -229,6 +229,20 @@ typedef int wxWindowID;
#define wxUSE_NESTED_CLASSES 0
#endif
// check for explicit keyword support
#ifndef HAVE_EXPLICIT
// TODO: add more compiler tests here
#if defined(__VISUALC__) && (__VISUALC__ > 1020)
#define HAVE_EXPLICIT
#endif
#endif // !HAVE_EXPLICIT
#ifdef HAVE_EXPLICIT
#define wxEXPLICIT explicit
#else // !HAVE_EXPLICIT
#define wxEXPLICIT
#endif // HAVE_EXPLICIT/!HAVE_EXPLICIT
// ----------------------------------------------------------------------------
// portable calling conventions macros
// ----------------------------------------------------------------------------

View File

@ -129,6 +129,11 @@
*/
#undef HAVE_BOOL
/*
* Define if your compiler supports the explicit keyword
*/
#undef HAVE_EXPLICIT
/*
* Use regex support
*/