On Jul 19, 2010, at 1:32 PM, Jason Kraftcheck wrote:
Passing the root set here could be confusing ("ah I see, everything is always added to the root set since I always have to pass it here. Oh wait, sometimes I don't have to pass it here, does that mean that this entity won't be added to the root set?")
I think this was one of the reasons that Tim argued that the function accept any set in the serial case. It would be less confusing than documenting a special case where an app need always pass the same redundant value (when working in serial.)
The problem with accepting any set is that you don't want people to use it for some other purpose in serial and then find they have to change their code to do the right thing in parallel.
I suppose we could pass a pointer to the handle, such that the pointer could be NULL. I'm not sure that that would be any less confusing than using the root set, through. And we already use the root set handle in exactly the same way in iMesh_loadMesh.
I'd say that using the root set to mean both "no set" and "the set that contains everything" is confusing. In iMesh_loadMesh (and most other places I saw when I looked quickly) you can say that it means "everything in the instance", which is the same as the root set. However if there are places (now or in the future) where there is a meaningful difference between the two things, that usage could become problematic.
How does it mean 'the set that contains everything' in the *load*Mesh case?
Since the root set does contain everything and that's the set you're passing, thus you did add the entities into the set you passed in. Yes, the mesh entities get added to the root set anyhow, but it's at least a little consistent (although I do think that passing a NULL set here would be more clear). mark