diff --git a/Doc/changelog.docu b/Doc/changelog.docu index 9e7727ee..573c79a0 100644 --- a/Doc/changelog.docu +++ b/Doc/changelog.docu @@ -17,6 +17,7 @@ Core Tools diff --git a/src/OpenMesh/Core/Mesh/ArrayItems.hh b/src/OpenMesh/Core/Mesh/ArrayItems.hh index 503fc735..1d1488cd 100644 --- a/src/OpenMesh/Core/Mesh/ArrayItems.hh +++ b/src/OpenMesh/Core/Mesh/ArrayItems.hh @@ -97,6 +97,7 @@ struct ArrayItems //TODO: should be selected with config.h define typedef Halfedge_with_prev Halfedge; + typedef Halfedge_without_prev HalfedgeNoPrev; typedef GenProg::Bool2Type HasPrevHalfedge; //-------------------------------------------------------- internal edge type diff --git a/src/OpenMesh/Core/Mesh/AttribKernelT.hh b/src/OpenMesh/Core/Mesh/AttribKernelT.hh index 6e67bc2b..10a46c08 100644 --- a/src/OpenMesh/Core/Mesh/AttribKernelT.hh +++ b/src/OpenMesh/Core/Mesh/AttribKernelT.hh @@ -75,10 +75,30 @@ public: //---------------------------------------------------------------- item types + enum Attribs { + VAttribs = MeshItems::VAttribs, + HAttribs = MeshItems::HAttribs, + EAttribs = MeshItems::EAttribs, + FAttribs = MeshItems::FAttribs + }; + typedef MeshItems MeshItemsT; typedef Connectivity ConnectivityT; typedef typename Connectivity::Vertex Vertex; - typedef typename Connectivity::Halfedge Halfedge; + + //Define Halfedge based on PrevHalfedge. + typedef typename GenProg::IF< + (bool)(HAttribs & Attributes::PrevHalfedge), + typename Connectivity::Halfedge, + typename Connectivity::HalfedgeNoPrev + >::Result Halfedge; + typedef typename GenProg::IF< + (bool)(HAttribs & Attributes::PrevHalfedge), + GenProg::Bool2Type, + GenProg::Bool2Type + >::Result HasPrevHalfedge; + + //typedef typename Connectivity::Halfedge Halfedge; typedef typename Connectivity::Edge Edge; typedef typename Connectivity::Face Face; @@ -98,12 +118,6 @@ public: typedef AttribKernelT AttribKernel; - enum Attribs { - VAttribs = MeshItems::VAttribs, - HAttribs = MeshItems::HAttribs, - EAttribs = MeshItems::EAttribs, - FAttribs = MeshItems::FAttribs - }; typedef VPropHandleT DataVPropHandle; typedef HPropHandleT DataHPropHandle;