What I'd really like to do is to be able to replace ref_ptr<T> with shared_ptr<T>/weak_ptr<T>, although this is a non-trivial refactoring. The code typedefs ref_ptr<T> away in a number of places, so it's not 100% obvious where it is being used.
The callback code also uses ref_ptr<T> extensively -- that's probably a candidate for the Boost mixin enable_shared_from_this<T>, which is now part of C++0x TR1. It is used to embed a weak_ptr<T> to 'this' in every class which is potentially shared as a refcounted object. The object can then use the shared_from_this<T>() template method member to obtain a shared_ptr<T> to itself without bumping the refcount itself. The reason Boost users usually do this is to return the shared_ptr<T> to the object in situations where it would otherwise return or pass its 'this' pointer. We don't want the object to embed a shared_ptr<T> to itself, because this means there is a dangling refcount; this is why the embedded weak_ptr<T> is declared 'mutable'. There are a number of places in the code where we use refcounting, or we need it and it isn't there; the ref_ptr<T>& semantics are potentially harmful, as the intent isn't clear, especially for folk who are either new to the code, or are getting back into it after being away for months. _______________________________________________ Xorp-hackers mailing list [email protected] http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
