From: Dirk R. <dre...@ia...> - 2004-04-06 19:23:09
|
On Sun, 2004-04-04 at 22:47, Chad Austin wrote: > Dirk Reiners wrote: > > Not yet. Interesting idea, though. If would be possible to check all > > FCPointers, give that we have the global FC list. I don't see a way to > > make sure that the MField data actually points to something useful, but > > that is probably not going to be a problem unless something goes > > seriously wrong. For most cases making sure the FC pointers are correct > > should cover it. > > Cool. Can you give me some pointers as to where I should start implementing > this? And where this function would reside? To get the global FC list, you can just call FieldContainerFactory::the()->getFieldContainerStore(). It will give you a pointer to the vector of FieldContainerPtrs. If it's not in this list, it doesn't exist. The most generic solution would be to check the values of all fields that contain FCPtrs to make sure their contents are either NullFC or in the list, and then recurse, watching out for loops. The problem right now is that there's no easy way to distinguish Fields with FCPtrs from other Fields. The hack is to check the type name and see if it ends in "Ptr". Not nice, but works right now. I would probably turn it into a GraphOp, maybe call it VerifyGraphOp. In the long run this might also check Geometry consistency and other things. It doesn't have to a GraphOp, as it could do the recursion through the children itself, but I think it wouldn't hurt to have it available as a GraphOp, that would make it easier to integaret into other processes. Yours Dirk |