Hi,
I'm trying to wrap the following class:
class Node
{
public:
virtual ~Node();
virtual void compute();
void incRef();
void decRef();
private:
unsigned _refCount
};
As you can see, the class is reference counted. In most places in my
code, I pass around Node* pointers. I rarely call incRef() and
decRef() to avoid overhead. I only call incRef() and decRef() in
places where they are absolutely needed. For instance:
void addNode(Node* n)
stores a pointer to n and calls n->incRef(). Likewise:
void remNode()
removes its copy of the Node pointer and calls n->decRef().
Finally:
Node* getNode()
Returns a pointer to the Node stored by addNode(). It does _not_ call
n->incRef().
Now, let's say I wrapped the three functions above with Boost.Python.
I'm looking for the following reference counting behavior when doing
the following in Python:
0>> x = Node() # refs = 1
1>> addNode(x) # refs = 2
2>> y = getNode() # refs = 3
3>> del x # refs = 2
4>> del y # refs = 1
5>> remNode() # refs = 0
How do I wrap Node such that I get the reference counting behavior
above? I took a look at:
http://wiki.python.org/moin/boost.python/PointersAndSmartPointers
but at first glance it doesn't appear to be what I want. I'm not
using smart pointers, instead I'm manually incrementing and
decrementing the reference count.
Thanks in advance for any help.
nathan
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig