From: John P. <jwp...@gm...> - 2014-01-02 20:25:05
|
On Thu, Jan 2, 2014 at 12:45 PM, Roy Stogner <roy...@ic...>wrote: > > Some static analysis tools pointed me to a few problems with the > Elem::SideIter class - basically there's a correctness mistake that's > masked by a performance mistake. > > This is fixable, but this is also code that I find literally no usage > of in the rest of the library or our example apps. I'm not sure > what's the better option: fix the SideIter code, or simplify the API > by deprecating the SideIter code now and removing it eventually? > I did a cursory search and we don't use boundary_sides_begin/end() at all, so I think I'd be fine deprecating it. I can't recall exactly, but I think I wrote this code to demonstrate the use of Predicate iterators beyond the Mesh class, and not for any particular application. 909 jwpeterson /** 909 jwpeterson * The protected nested SideIter class is used to iterate over the 909 jwpeterson * sides of this Elem. It is a specially designed class since 909 jwpeterson * no sides are actually stored by the element. This iterator-like 909 jwpeterson * class has to provide the following three operations 909 jwpeterson * 1) operator* 909 jwpeterson * 2) operator++ 909 jwpeterson * 3) operator== 909 jwpeterson * The definition can be found at the end of this header file. 909 jwpeterson */ r909 is from 2004! $ svn log -v -r909 ------------------------------------------------------------------------ r909 | jwpeterson | 2004-11-22 14:32:36 -0700 (Mon, 22 Nov 2004) | 4 lines Changed paths: M /trunk/libmesh/.depend M /trunk/libmesh/include/base/multi_predicates.h M /trunk/libmesh/include/base/single_predicates.h M /trunk/libmesh/include/geom/elem.h M /trunk/libmesh/include/mesh/mesh_base.h M /trunk/libmesh/include/mesh/mesh_modification.h M /trunk/libmesh/src/geom/elem.C D /trunk/libmesh/src/mesh/mesh_base_modification.C M /trunk/libmesh/src/mesh/mesh_iterators.C M /trunk/libmesh/src/mesh/mesh_modification.C Moved the all_tri() function to the MeshTools::Modification namespace. Also added the SideIter class as nested class of the Elem to allow for iteration over the sides of an element. This code is not extensively tested yet, and is not used anywhere yet. More to come soon. -- John |