]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/private/error.h
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / include / wx / gtk / private / error.h
CommitLineData
5a92b561
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: gtk/private/error.h
3// Purpose: Wrapper around GError.
4// Author: Vadim Zeitlin
5// Created: 2012-07-25
5a92b561
VZ
6// Copyright: (c) 2012 Vadim Zeitlin <vadim@wxwidgets.org>
7// Licence: wxWindows licence
8///////////////////////////////////////////////////////////////////////////////
9
10#ifndef _WX_GTK_PRIVATE_ERROR_H_
11#define _WX_GTK_PRIVATE_ERROR_H_
12
13// ----------------------------------------------------------------------------
14// wxGtkError wraps GError and releases it automatically.
15// ----------------------------------------------------------------------------
16
17// Create an object of this class and pass the result of its Out() method to a
18// function taking "GError**", then use GetMessage() if the function returned
19// false.
20class wxGtkError
21{
22public:
23 wxGtkError() { m_error = NULL; }
24 ~wxGtkError() { if ( m_error ) g_error_free(m_error); }
25
26 GError** Out()
27 {
28 // This would result in a GError leak.
29 wxASSERT_MSG( !m_error, wxS("Can't reuse the same object.") );
30
31 return &m_error;
32 }
33
34 wxString GetMessage() const
35 {
36 return wxString::FromUTF8(m_error->message);
37 }
38
39private:
40 GError* m_error;
41
42 wxDECLARE_NO_COPY_CLASS(wxGtkError);
43};
44
45#endif // _WX_GTK_PRIVATE_ERROR_H_