Re: TECH QVLib object deletion

Gavin Bell ([email protected])
Thu, 18 May 1995 17:12:42 -0700


QvLib has no object deletion because deleting objects that are multiply
instanced isn't straightforward. For example, consider this VRML scene:

Separator {
DEF SeparatorOne Separator {
DEF SomeObject Separator {
... lots of stuff...
}
}
DEF SeparatorTwo Separator {
USE SomeObject
}
}

What happens if you delete SeparatorOne? Is the SomeObject object deleted?
If it is, it had better be removed from SeparatorTwo. If it isn't, some
mechanism is needed to know whether or not objects are multiply instanced.

Inventor solves these problems by reference counting nodes. There are other
ways of solving the problem-- garbage collection or storing a list of parents
and not allowing any node with parents to be deleted are two that come to
mind immediately. Perhaps we should have left the reference counting
mechanism in QvLib; instead, we expected that QvLib users would want to
implement their own deletion mechanism...