]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/private/object.h
add a scoped_ptr-like wxGtkObject class which calls g_object_unref() automatically...
[wxWidgets.git] / include / wx / gtk / private / object.h
diff --git a/include/wx/gtk/private/object.h b/include/wx/gtk/private/object.h
new file mode 100644 (file)
index 0000000..404dc08
--- /dev/null
@@ -0,0 +1,36 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/private/object.h
+// Purpose:     wxGtkObject class declaration
+// Author:      Vadim Zeitlin
+// Created:     2008-08-27
+// RCS-ID:      $Id$
+// Copyright:   (c) 2008 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_PRIVATE_OBJECT_H_
+#define _WX_GTK_PRIVATE_OBJECT_H_
+
+// ----------------------------------------------------------------------------
+// Convenience class for calling g_object_unref() automatically
+// ----------------------------------------------------------------------------
+
+template <typename T>
+class wxGtkObject
+{
+public:
+    explicit wxGtkObject(T *p) : m_ptr(p) { }
+    ~wxGtkObject() { g_object_unref(m_ptr); }
+
+    operator T *() const { return m_ptr; }
+
+private:
+    T * const m_ptr;
+
+    // copying could be implemented by using g_object_ref() but for now there
+    // is no need for it so don't implement it
+    DECLARE_NO_COPY_CLASS(wxGtkObject)
+};
+
+#endif // _WX_GTK_PRIVATE_OBJECT_H_
+