added and documented wx_const/static_cast<>

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-04-16 10:30:07 +00:00
parent 4d4f4290ea
commit f29fe16932
4 changed files with 59 additions and 19 deletions

View File

@@ -235,6 +235,8 @@ the corresponding topic.
\helpref{wxWakeUpIdle}{wxwakeupidle}\\
\helpref{wxWriteResource}{wxwriteresource}\\
\helpref{wxYield}{wxyield}\\
\helpref{wx\_const\_cast}{wxconstcastraw}\\
\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\helpref{\_}{underscore}\\
\helpref{\_T}{underscoret}
@@ -3289,6 +3291,7 @@ supports {\it const\_cast} or into an old, C-style cast, otherwise.
\wxheading{See also}
\helpref{wx\_const\_cast}{wxconstcastraw}\\
\helpref{wxDynamicCast}{wxdynamiccast}\\
\helpref{wxStaticCast}{wxstaticcast}
@@ -3376,10 +3379,42 @@ This macro checks that the cast is valid in debug mode (an assert failure will
result if {\tt wxDynamicCast(ptr, classname) == NULL}) and then returns the
result of executing an equivalent of {\tt static\_cast<classname *>(ptr)}.
\wxheading{See also}
\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\helpref{wxDynamicCast}{wxdynamiccast}\\
\helpref{wxConstCast}{wxconstcast}
\membersection{wx\_const\_cast}\label{wxconstcastraw}
\func{T}{wx\_const\_cast}{T, x}
Same as \texttt{const\_cast<T>(x)} if the compiler supports const cast or
\texttt{(T)x} for old compilers. Unlike \helpref{wxConstCast}{wxconstcast},
the cast it to the type \arg{T} and not to \texttt{T *} and also the order of
arguments is the same as for the standard cast.
\wxheading{See also}
\helpref{wx\_static\_cast}{wxstaticcastraw}\\
\membersection{wx\_static\_cast}\label{wxstaticcastraw}
\func{T}{wx\_static\_cast}{T, x}
Same as \texttt{static\_cast<T>(x)} if the compiler supports static cast or
\texttt{(T)x} for old compilers. Unlike \helpref{wxStaticCast}{wxstaticcast},
there are no checks being done and the meaning of the macro arguments is exactly
the same as for the standard static cast, i.e. \arg{T} is the full type name and
star is not appended to it.
\wxheading{See also}
\helpref{wx\_const\_cast}{wxconstcastraw}\\
\section{Log functions}\label{logfunctions}

View File

@@ -283,12 +283,21 @@ typedef int wxWindowID;
#endif
#endif /* HAVE_CXX_CASTS */
#ifdef HAVE_CONST_CAST
#define wxConstCast(obj, className) const_cast<className *>(obj)
#ifdef HAVE_STATIC_CAST
#define wx_static_cast(t, x) static_cast<t>(x)
#else
#define wxConstCast(obj, className) ((className *)(obj))
#define wx_static_cast(t, x) ((t)(x))
#endif
#ifdef HAVE_CONST_CAST
#define wx_const_cast(t, x) const_cast<t>(x)
#else
#define wx_const_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)
#ifndef HAVE_STD_WSTRING
#if defined(__VISUALC__) && (__VISUALC__ >= 1100)
/* VC++ 6.0 and 5.0 have std::wstring (what about earlier versions?) */

View File

@@ -57,11 +57,7 @@ typedef int wxEventType;
// this is used to make the event table entry type safe, so that for an event
// handler only a function with proper parameter list can be given.
#ifdef HAVE_STATIC_CAST
#define wxStaticCastEvent(type, val) static_cast<type>(val)
#else
#define wxStaticCastEvent(type, val) ((type)(val))
#endif
#define wxStaticCastEvent(type, val) wx_static_cast(type, val)
// in previous versions of wxWindows the event types used to be constants
// which created difficulties with custom/user event types definition

View File

@@ -544,7 +544,7 @@ public:
// get the runtime identity of this object
wxClassInfo *GetClassInfo() const
{
return const_cast<wxClassInfo*>((const wxClassInfo*)m_classInfo);
return wx_const_cast(wxClassInfo *, m_classInfo);
}
wxObject* GetSuperClassInstance() const