Author: matt
Date: 2011-01-10 08:56:37 -0800 (Mon, 10 Jan 2011)
New Revision: 8243
Log:
Added destructor code for Wrapper<->Object dependency.
Modified:
branches/branch-3.0-2011/fltk3/Object.h
branches/branch-3.0-2011/fltk3/Wrapper.h
branches/branch-3.0-2011/src/Fl_Widget.cxx
Modified: branches/branch-3.0-2011/fltk3/Object.h
===================================================================
--- branches/branch-3.0-2011/fltk3/Object.h 2011-01-10 16:27:25 UTC (rev
8242)
+++ branches/branch-3.0-2011/fltk3/Object.h 2011-01-10 16:56:37 UTC (rev
8243)
@@ -44,7 +44,7 @@
public:
Object()
: pWrapper(0L) { }
- virtual ~Object() { }
+ virtual ~Object();
Wrapper *wrapper() { return this?pWrapper:0L; }
void wrapper(Wrapper *w) { pWrapper = w; }
};
Modified: branches/branch-3.0-2011/fltk3/Wrapper.h
===================================================================
--- branches/branch-3.0-2011/fltk3/Wrapper.h 2011-01-10 16:27:25 UTC (rev
8242)
+++ branches/branch-3.0-2011/fltk3/Wrapper.h 2011-01-10 16:56:37 UTC (rev
8243)
@@ -79,8 +79,6 @@
namespace fltk3 {
- class Object;
-
/**
* \brief a base class for any kind of langage wrapper around FLTK3.
*/
@@ -90,14 +88,15 @@
public:
Wrapper()
: _p(0L), pVCalls(0) { }
- virtual ~Wrapper() { }
+ virtual ~Wrapper();
unsigned int pVCalls;
- static const unsigned int pVCallWidgetDraw = 1<<0;
- static const unsigned int pVCallWidgetHandle = 1<<1;
- static const unsigned int pVCallWidgetResize = 1<<2;
- static const unsigned int pVCallWidgetShow = 1<<3;
- static const unsigned int pVCallWidgetHide = 1<<4;
+ static const unsigned int pVCallDtor = 1<<0;
+ static const unsigned int pVCallWidgetDraw = 1<<1;
+ static const unsigned int pVCallWidgetHandle = 1<<2;
+ static const unsigned int pVCallWidgetResize = 1<<3;
+ static const unsigned int pVCallWidgetShow = 1<<4;
+ static const unsigned int pVCallWidgetHide = 1<<5;
virtual void draw() { /* call _p->draw() with a flag set */ }
};
Modified: branches/branch-3.0-2011/src/Fl_Widget.cxx
===================================================================
--- branches/branch-3.0-2011/src/Fl_Widget.cxx 2011-01-10 16:27:25 UTC (rev
8242)
+++ branches/branch-3.0-2011/src/Fl_Widget.cxx 2011-01-10 16:56:37 UTC (rev
8243)
@@ -359,6 +359,23 @@
}
+
+fltk3::Object::~Object() {
+ if ( pWrapper && !(pWrapper->pVCalls&Wrapper::pVCallDtor) ) {
+ pWrapper->pVCalls |= Wrapper::pVCallDtor;
+ delete pWrapper;
+ }
+}
+
+fltk3::Wrapper::~Wrapper() {
+ if ( !(pVCalls&pVCallDtor) ) {
+ pVCalls |= pVCallDtor;
+ delete _p;
+ }
+}
+
+
+
//
// End of "$Id$".
//
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit