// Author: Vadim Zeitlin
// Modified by:
// Created: 2005-01-08
-// RCS-ID: $Id$
// Copyright: (c) 2005 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_MSW_STACKWALK_H_
#define _WX_MSW_STACKWALK_H_
+#include "wx/arrstr.h"
+
// these structs are declared in windows headers
struct _CONTEXT;
struct _EXCEPTION_POINTERS;
{
private:
wxStackFrame *ConstCast() const
- { return wx_const_cast(wxStackFrame *, this); }
+ { return const_cast<wxStackFrame *>(this); }
size_t DoGetParamCount() const { return m_paramTypes.GetCount(); }
// helper for debug API: it wants to have addresses as DWORDs
size_t GetSymAddr() const
{
- return wx_reinterpret_cast(size_t, m_address);
+ return reinterpret_cast<size_t>(m_address);
}
private:
class WXDLLIMPEXP_BASE wxStackWalker : public wxStackWalkerBase
{
public:
- wxStackWalker() { }
+ // we don't use ctor argument, it is for compatibility with Unix version
+ // only
+ wxStackWalker(const char * WXUNUSED(argv0) = NULL) { }
- virtual void Walk(size_t skip = 1);
- virtual void WalkFromException();
+ virtual void Walk(size_t skip = 1, size_t maxDepth = wxSTACKWALKER_MAX_DEPTH);
+#if wxUSE_ON_FATAL_EXCEPTION
+ virtual void WalkFromException(size_t maxDepth = wxSTACKWALKER_MAX_DEPTH);
+#endif // wxUSE_ON_FATAL_EXCEPTION
// enumerate stack frames from the given context
- void WalkFrom(const _CONTEXT *ctx, size_t skip = 1);
- void WalkFrom(const _EXCEPTION_POINTERS *ep, size_t skip = 1);
+ void WalkFrom(const _CONTEXT *ctx, size_t skip = 1, size_t maxDepth = wxSTACKWALKER_MAX_DEPTH);
+ void WalkFrom(const _EXCEPTION_POINTERS *ep, size_t skip = 1, size_t maxDepth = wxSTACKWALKER_MAX_DEPTH);
};
#endif // _WX_MSW_STACKWALK_H_