diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h')
-rw-r--r-- | source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h | 1383 |
1 files changed, 703 insertions, 680 deletions
diff --git a/source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h b/source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h index 1b4a98498dd..2c09bde487b 100644 --- a/source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h +++ b/source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h @@ -25,7 +25,7 @@ #include "ViewMap.h" -#include "../system/Iterator.h" //soc +#include "../system/Iterator.h" //soc namespace Freestyle { @@ -47,290 +47,295 @@ namespace Freestyle { namespace ViewVertexInternal { -class edge_const_traits : public Const_traits<ViewVertex::directedViewEdge> -{ -public: - typedef vector<ViewVertex::directedViewEdge> edges_container; - typedef edges_container::const_iterator edges_container_iterator; - typedef vector<ViewVertex::directedViewEdge*> edge_pointers_container; - typedef edge_pointers_container::const_iterator edge_pointers_container_iterator; +class edge_const_traits : public Const_traits<ViewVertex::directedViewEdge> { + public: + typedef vector<ViewVertex::directedViewEdge> edges_container; + typedef edges_container::const_iterator edges_container_iterator; + typedef vector<ViewVertex::directedViewEdge *> edge_pointers_container; + typedef edge_pointers_container::const_iterator edge_pointers_container_iterator; }; -class edge_nonconst_traits : public Nonconst_traits<ViewVertex::directedViewEdge> -{ -public: - typedef vector<ViewVertex::directedViewEdge> edges_container; - typedef edges_container::iterator edges_container_iterator; - typedef vector<ViewVertex::directedViewEdge*> edge_pointers_container; - typedef edge_pointers_container::iterator edge_pointers_container_iterator; +class edge_nonconst_traits : public Nonconst_traits<ViewVertex::directedViewEdge> { + public: + typedef vector<ViewVertex::directedViewEdge> edges_container; + typedef edges_container::iterator edges_container_iterator; + typedef vector<ViewVertex::directedViewEdge *> edge_pointers_container; + typedef edge_pointers_container::iterator edge_pointers_container_iterator; }; template<class Traits> -class edge_iterator_base : public IteratorBase<Traits, InputIteratorTag_Traits> -{ -public: - typedef typename Traits::value_type value_type; - typedef typename Traits::difference_type difference_type; - typedef typename Traits::pointer pointer; - typedef typename Traits::reference reference; - typedef edge_iterator_base<Traits> Self; - typedef typename Traits::edges_container_iterator edges_container_iterator; - typedef typename Traits::edge_pointers_container_iterator edge_pointers_container_iterator; - typedef edge_iterator_base<edge_nonconst_traits> iterator; - typedef edge_iterator_base<edge_const_traits> const_iterator; - -public: - friend class ViewVertex; - friend class TVertex; - friend class NonTVertex; - friend class ViewEdge; - friend class edge_iterator; - -protected: - Nature::VertexNature _Nature; // the nature of the underlying vertex - // T vertex attributes - edge_pointers_container_iterator _tbegin; - edge_pointers_container_iterator _tend; - edge_pointers_container_iterator _tvertex_iter; +class edge_iterator_base : public IteratorBase<Traits, InputIteratorTag_Traits> { + public: + typedef typename Traits::value_type value_type; + typedef typename Traits::difference_type difference_type; + typedef typename Traits::pointer pointer; + typedef typename Traits::reference reference; + typedef edge_iterator_base<Traits> Self; + typedef typename Traits::edges_container_iterator edges_container_iterator; + typedef typename Traits::edge_pointers_container_iterator edge_pointers_container_iterator; + typedef edge_iterator_base<edge_nonconst_traits> iterator; + typedef edge_iterator_base<edge_const_traits> const_iterator; + + public: + friend class ViewVertex; + friend class TVertex; + friend class NonTVertex; + friend class ViewEdge; + friend class edge_iterator; + + protected: + Nature::VertexNature _Nature; // the nature of the underlying vertex + // T vertex attributes + edge_pointers_container_iterator _tbegin; + edge_pointers_container_iterator _tend; + edge_pointers_container_iterator _tvertex_iter; #if 0 - mutable value_type _tvertex_iter; - value_type _feA; - value_type _feB; - value_type _beA; - value_type _beB; + mutable value_type _tvertex_iter; + value_type _feA; + value_type _feB; + value_type _beA; + value_type _beB; #endif - // Non TVertex attributes - edges_container_iterator _begin; - edges_container_iterator _end; - edges_container_iterator _nontvertex_iter; + // Non TVertex attributes + edges_container_iterator _begin; + edges_container_iterator _end; + edges_container_iterator _nontvertex_iter; - typedef IteratorBase<Traits, InputIteratorTag_Traits> parent_class; + typedef IteratorBase<Traits, InputIteratorTag_Traits> parent_class; -public: - inline edge_iterator_base() : parent_class() {} + public: + inline edge_iterator_base() : parent_class() + { + } - inline edge_iterator_base(Nature::VertexNature iNature) : parent_class() - { - _Nature = iNature; - } + inline edge_iterator_base(Nature::VertexNature iNature) : parent_class() + { + _Nature = iNature; + } - edge_iterator_base(const edge_iterator_base<edge_nonconst_traits>& iBrother) : parent_class(iBrother) - { - _Nature = iBrother._Nature; - if (_Nature & Nature::T_VERTEX) { + edge_iterator_base(const edge_iterator_base<edge_nonconst_traits> &iBrother) + : parent_class(iBrother) + { + _Nature = iBrother._Nature; + if (_Nature & Nature::T_VERTEX) { #if 0 - _feA = iBrother._feA; - _feB = iBrother._feB; - _beA = iBrother._beA; - _beB = iBrother._beB; - _tvertex_iter = iBrother._tvertex_iter; + _feA = iBrother._feA; + _feB = iBrother._feB; + _beA = iBrother._beA; + _beB = iBrother._beB; + _tvertex_iter = iBrother._tvertex_iter; #endif - _tbegin = iBrother._tbegin; - _tend = iBrother._tend; - _tvertex_iter = iBrother._tvertex_iter; - } - else { - _begin = iBrother._begin; - _end = iBrother._end; - _nontvertex_iter = iBrother._nontvertex_iter; - } - } - - edge_iterator_base(const edge_iterator_base<edge_const_traits>& iBrother) : parent_class(iBrother) - { - _Nature = iBrother._Nature; - if (_Nature & Nature::T_VERTEX) { + _tbegin = iBrother._tbegin; + _tend = iBrother._tend; + _tvertex_iter = iBrother._tvertex_iter; + } + else { + _begin = iBrother._begin; + _end = iBrother._end; + _nontvertex_iter = iBrother._nontvertex_iter; + } + } + + edge_iterator_base(const edge_iterator_base<edge_const_traits> &iBrother) + : parent_class(iBrother) + { + _Nature = iBrother._Nature; + if (_Nature & Nature::T_VERTEX) { #if 0 - _feA = iBrother._feA; - _feB = iBrother._feB; - _beA = iBrother._beA; - _beB = iBrother._beB; - _tvertex_iter = iBrother._tvertex_iter; + _feA = iBrother._feA; + _feB = iBrother._feB; + _beA = iBrother._beA; + _beB = iBrother._beB; + _tvertex_iter = iBrother._tvertex_iter; #endif - _tbegin = iBrother._tbegin; - _tend = iBrother._tend; - _tvertex_iter = iBrother._tvertex_iter; - } - else { - _begin = iBrother._begin; - _end = iBrother._end; - _nontvertex_iter = iBrother._nontvertex_iter; - } - } - - virtual ~edge_iterator_base() {} - -//protected://FIXME -public: + _tbegin = iBrother._tbegin; + _tend = iBrother._tend; + _tvertex_iter = iBrother._tvertex_iter; + } + else { + _begin = iBrother._begin; + _end = iBrother._end; + _nontvertex_iter = iBrother._nontvertex_iter; + } + } + + virtual ~edge_iterator_base() + { + } + + //protected://FIXME + public: #if 0 - inline edge_iterator_base(value_type ifeA, value_type ifeB, value_type ibeA, value_type ibeB, value_type iter) - : parent_class() - { - _Nature = Nature::T_VERTEX; - _feA = ifeA; - _feB = ifeB; - _beA = ibeA; - _beB = ibeB; - _tvertex_iter = iter; - } + inline edge_iterator_base(value_type ifeA, value_type ifeB, value_type ibeA, value_type ibeB, value_type iter) + : parent_class() + { + _Nature = Nature::T_VERTEX; + _feA = ifeA; + _feB = ifeB; + _beA = ibeA; + _beB = ibeB; + _tvertex_iter = iter; + } #endif - inline edge_iterator_base(edge_pointers_container_iterator begin, edge_pointers_container_iterator end, - edge_pointers_container_iterator iter) - : parent_class() - { - _Nature = Nature::T_VERTEX; - _tbegin = begin; - _tend = end; - _tvertex_iter = iter; - } - - inline edge_iterator_base(edges_container_iterator begin, edges_container_iterator end, - edges_container_iterator iter) - : parent_class() - { - _Nature = Nature::NON_T_VERTEX; - _begin = begin; - _end = end; - _nontvertex_iter = iter; - } - -public: - virtual bool begin() const - { - if (_Nature & Nature::T_VERTEX) - return (_tvertex_iter == _tbegin); - //return (_tvertex_iter == _feA); - else - return (_nontvertex_iter == _begin); - } - - virtual bool end() const - { - if (_Nature & Nature::T_VERTEX) - //return (_tvertex_iter.first == 0); - return (_tvertex_iter == _tend); - else - return (_nontvertex_iter == _end); - } - - // operators - // operator corresponding to ++i - virtual Self& operator++() - { - increment(); - return *this; - } - - // operator corresponding to i++, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - virtual Self operator++(int) - { - Self tmp = *this; - increment(); - return tmp; - } - - // comparibility - virtual bool operator!=(const Self& b) const - { - if (_Nature & Nature::T_VERTEX) - return (_tvertex_iter != b._tvertex_iter); - else - return (_nontvertex_iter != b._nontvertex_iter); - } - - virtual bool operator==(const Self& b) const - { - return !(*this != b); - } - - // dereferencing - virtual reference operator*() const - { - if (_Nature & Nature::T_VERTEX) - //return _tvertex_iter; - return **_tvertex_iter; - else - return (*_nontvertex_iter); - } - - virtual pointer operator->() const - { - return &(operator*()); - } - -protected: - inline void increment() - { - if (_Nature & Nature::T_VERTEX) { - value_type tmp = (**_tvertex_iter); - ++_tvertex_iter; - value_type tmp2 = (**_tvertex_iter); - if (tmp2.first == tmp.first) - ++_tvertex_iter; + inline edge_iterator_base(edge_pointers_container_iterator begin, + edge_pointers_container_iterator end, + edge_pointers_container_iterator iter) + : parent_class() + { + _Nature = Nature::T_VERTEX; + _tbegin = begin; + _tend = end; + _tvertex_iter = iter; + } + + inline edge_iterator_base(edges_container_iterator begin, + edges_container_iterator end, + edges_container_iterator iter) + : parent_class() + { + _Nature = Nature::NON_T_VERTEX; + _begin = begin; + _end = end; + _nontvertex_iter = iter; + } + + public: + virtual bool begin() const + { + if (_Nature & Nature::T_VERTEX) + return (_tvertex_iter == _tbegin); + //return (_tvertex_iter == _feA); + else + return (_nontvertex_iter == _begin); + } + + virtual bool end() const + { + if (_Nature & Nature::T_VERTEX) + //return (_tvertex_iter.first == 0); + return (_tvertex_iter == _tend); + else + return (_nontvertex_iter == _end); + } + + // operators + // operator corresponding to ++i + virtual Self &operator++() + { + increment(); + return *this; + } + + // operator corresponding to i++, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + virtual Self operator++(int) + { + Self tmp = *this; + increment(); + return tmp; + } + + // comparibility + virtual bool operator!=(const Self &b) const + { + if (_Nature & Nature::T_VERTEX) + return (_tvertex_iter != b._tvertex_iter); + else + return (_nontvertex_iter != b._nontvertex_iter); + } + + virtual bool operator==(const Self &b) const + { + return !(*this != b); + } + + // dereferencing + virtual reference operator*() const + { + if (_Nature & Nature::T_VERTEX) + //return _tvertex_iter; + return **_tvertex_iter; + else + return (*_nontvertex_iter); + } + + virtual pointer operator->() const + { + return &(operator*()); + } + + protected: + inline void increment() + { + if (_Nature & Nature::T_VERTEX) { + value_type tmp = (**_tvertex_iter); + ++_tvertex_iter; + value_type tmp2 = (**_tvertex_iter); + if (tmp2.first == tmp.first) + ++_tvertex_iter; #if 0 - // Hack to deal with cusp. the result of a cusp is a TVertex having two identical viewedges. - // In order to iterate properly, we chose to skip these last ones. - if (_feB.first == _beA.first) { - if (_feA.first == _beB.first) { - _tvertex_iter.first = 0; - return; - } - - if (_tvertex_iter.first == _feA.first) - _tvertex_iter.first = _beB.first; - else if (_tvertex_iter.first == _beB.first) - _tvertex_iter.first = 0; - else - _tvertex_iter.first = _feA.first; - return; - } - if (_feA.first == _beB.first) { - if (_feB.first == _beA.first) { - _tvertex_iter.first = 0; - return; - } - - if (_tvertex_iter.first == _feB.first) - _tvertex_iter.first = _beA.first; - else if (_tvertex_iter.first == _beA.first) - _tvertex_iter.first = 0; - else - _tvertex_iter.first = _feB.first; - return; - } - // End of hack - - if (_tvertex_iter.first == _feA.first) { - // we return bea or beb - // choose one of them - _tvertex_iter.first = _feB.first; - return; - } - if (_tvertex_iter.first == _feB.first) { - _tvertex_iter.first = _beA.first; - return; - } - if (_tvertex_iter.first == _beA.first) { - _tvertex_iter.first = _beB.first; - return; - } - if (_tvertex_iter.first == _beB.first) { - _tvertex_iter.first = 0; - return; - } + // Hack to deal with cusp. the result of a cusp is a TVertex having two identical viewedges. + // In order to iterate properly, we chose to skip these last ones. + if (_feB.first == _beA.first) { + if (_feA.first == _beB.first) { + _tvertex_iter.first = 0; + return; + } + + if (_tvertex_iter.first == _feA.first) + _tvertex_iter.first = _beB.first; + else if (_tvertex_iter.first == _beB.first) + _tvertex_iter.first = 0; + else + _tvertex_iter.first = _feA.first; + return; + } + if (_feA.first == _beB.first) { + if (_feB.first == _beA.first) { + _tvertex_iter.first = 0; + return; + } + + if (_tvertex_iter.first == _feB.first) + _tvertex_iter.first = _beA.first; + else if (_tvertex_iter.first == _beA.first) + _tvertex_iter.first = 0; + else + _tvertex_iter.first = _feB.first; + return; + } + // End of hack + + if (_tvertex_iter.first == _feA.first) { + // we return bea or beb + // choose one of them + _tvertex_iter.first = _feB.first; + return; + } + if (_tvertex_iter.first == _feB.first) { + _tvertex_iter.first = _beA.first; + return; + } + if (_tvertex_iter.first == _beA.first) { + _tvertex_iter.first = _beB.first; + return; + } + if (_tvertex_iter.first == _beB.first) { + _tvertex_iter.first = 0; + return; + } #endif - } - else { - ++_nontvertex_iter; - } - } + } + else { + ++_nontvertex_iter; + } + } }; -} // ViewVertexInternal namespace +} // namespace ViewVertexInternal /**********************************/ /* */ @@ -346,435 +351,453 @@ namespace ViewEdgeInternal { /*! Iterators definition */ /*!----------------------*/ template<class Traits> -class edge_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> -{ -public: - typedef typename Traits::value_type value_type; - typedef typename Traits::difference_type difference_type; - typedef typename Traits::pointer pointer; - typedef typename Traits::reference reference; - typedef edge_iterator_base<Traits> Self; - -public: - mutable value_type _ViewEdge; - //friend class edge_iterator_base<Nonconst_traits<ViewEdge*> >; - //friend class edge_iterator_base<Const_traits<ViewEdge*> >; - value_type _first; - bool _orientation; - typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; - -public: - friend class ViewEdge; - inline edge_iterator_base() : parent_class() - { - _orientation = true; - _first = 0; - } - - inline edge_iterator_base(const edge_iterator_base<Nonconst_traits<ViewEdge*> >& iBrother) : parent_class() - { - _ViewEdge = iBrother._ViewEdge; - _first = iBrother._first; - _orientation = iBrother._orientation; - } - - inline edge_iterator_base(const edge_iterator_base<Const_traits<ViewEdge*> >& iBrother) : parent_class() - { - _ViewEdge = iBrother._ViewEdge; - _first = iBrother._first; - _orientation = iBrother._orientation; - } - -//protected://FIXME -public: - inline edge_iterator_base(value_type iEdge, bool orientation = true) : parent_class() - { - _ViewEdge = iEdge; - _first = iEdge; - _orientation = orientation; - } - -public: - virtual Self *clone() const - { - return new edge_iterator_base(*this); - } - - virtual ~edge_iterator_base() {} - -public: - virtual bool orientation() - { - return _orientation; - } - - virtual void set_edge(value_type iVE) - { - _ViewEdge = iVE; - } - - virtual void set_orientation(bool iOrientation) - { - _orientation = iOrientation; - } - - virtual void change_orientation() - { - _orientation = !_orientation; - } - - // operators - // operator corresponding to ++i - inline Self& operator++() - { - //++_ViewEdge->getTimeStamp(); - increment(); - return *this; - } - - // operator corresponding to i++, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator++(int) - { - //++_ViewEdge->getTimeStamp(); - Self tmp = *this; - increment(); - return tmp; - } - - // operator corresponding to --i - inline Self& operator--() - { - //++_ViewEdge->getTimeStamp(); - decrement(); - return *this; - } - - // operator corresponding to i--, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator--(int) - { - //++_ViewEdge->getTimeStamp(); - Self tmp = *this; - decrement(); - return tmp; - } - - // comparibility - virtual bool operator!=(const Self& b) const - { - return (_ViewEdge != b._ViewEdge); - } - - virtual bool operator==(const Self& b) const - { - return !(*this != b); - } - - // dereferencing - virtual reference operator*() const - { - return (_ViewEdge); - } - - virtual pointer operator->() const - { - return &(operator*()); - } - -public: - virtual bool begin() const - { - return (_ViewEdge == _first) ? true : false; - } - - virtual bool end() const - { - return (_ViewEdge == 0) ? true : false; - } - -protected: - virtual void increment() {} - virtual void decrement() {} +class edge_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> { + public: + typedef typename Traits::value_type value_type; + typedef typename Traits::difference_type difference_type; + typedef typename Traits::pointer pointer; + typedef typename Traits::reference reference; + typedef edge_iterator_base<Traits> Self; + + public: + mutable value_type _ViewEdge; + //friend class edge_iterator_base<Nonconst_traits<ViewEdge*> >; + //friend class edge_iterator_base<Const_traits<ViewEdge*> >; + value_type _first; + bool _orientation; + typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; + + public: + friend class ViewEdge; + inline edge_iterator_base() : parent_class() + { + _orientation = true; + _first = 0; + } + + inline edge_iterator_base(const edge_iterator_base<Nonconst_traits<ViewEdge *>> &iBrother) + : parent_class() + { + _ViewEdge = iBrother._ViewEdge; + _first = iBrother._first; + _orientation = iBrother._orientation; + } + + inline edge_iterator_base(const edge_iterator_base<Const_traits<ViewEdge *>> &iBrother) + : parent_class() + { + _ViewEdge = iBrother._ViewEdge; + _first = iBrother._first; + _orientation = iBrother._orientation; + } + + //protected://FIXME + public: + inline edge_iterator_base(value_type iEdge, bool orientation = true) : parent_class() + { + _ViewEdge = iEdge; + _first = iEdge; + _orientation = orientation; + } + + public: + virtual Self *clone() const + { + return new edge_iterator_base(*this); + } + + virtual ~edge_iterator_base() + { + } + + public: + virtual bool orientation() + { + return _orientation; + } + + virtual void set_edge(value_type iVE) + { + _ViewEdge = iVE; + } + + virtual void set_orientation(bool iOrientation) + { + _orientation = iOrientation; + } + + virtual void change_orientation() + { + _orientation = !_orientation; + } + + // operators + // operator corresponding to ++i + inline Self &operator++() + { + //++_ViewEdge->getTimeStamp(); + increment(); + return *this; + } + + // operator corresponding to i++, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator++(int) + { + //++_ViewEdge->getTimeStamp(); + Self tmp = *this; + increment(); + return tmp; + } + + // operator corresponding to --i + inline Self &operator--() + { + //++_ViewEdge->getTimeStamp(); + decrement(); + return *this; + } + + // operator corresponding to i--, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator--(int) + { + //++_ViewEdge->getTimeStamp(); + Self tmp = *this; + decrement(); + return tmp; + } + + // comparibility + virtual bool operator!=(const Self &b) const + { + return (_ViewEdge != b._ViewEdge); + } + + virtual bool operator==(const Self &b) const + { + return !(*this != b); + } + + // dereferencing + virtual reference operator*() const + { + return (_ViewEdge); + } + + virtual pointer operator->() const + { + return &(operator*()); + } + + public: + virtual bool begin() const + { + return (_ViewEdge == _first) ? true : false; + } + + virtual bool end() const + { + return (_ViewEdge == 0) ? true : false; + } + + protected: + virtual void increment() + { + } + virtual void decrement() + { + } }; template<class Traits> -class fedge_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> -{ -public: - typedef typename Traits::value_type value_type; - typedef typename Traits::difference_type difference_type; - typedef typename Traits::pointer pointer; - typedef typename Traits::reference reference; - typedef fedge_iterator_base<Traits> Self; - -public: - typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; - mutable value_type _FEdge; - value_type _first; - value_type _FEdgeB; // last fedge of the view edge - -public: - friend class ViewEdge; - friend class fedge_iterator; - - inline fedge_iterator_base() : parent_class() {} - - inline fedge_iterator_base(const fedge_iterator_base<Nonconst_traits<FEdge*> >& iBrother) : parent_class() - { - _FEdge = iBrother._FEdge; - _first = iBrother._first; - _FEdgeB = iBrother._FEdgeB; - } - - inline fedge_iterator_base(const fedge_iterator_base<Const_traits<FEdge*> >& iBrother) : parent_class() - { - _FEdge = iBrother._FEdge; - _first = iBrother._first; - _FEdgeB = iBrother._FEdgeB; - } - -//protected://FIXME -public: - inline fedge_iterator_base(value_type iEdge, value_type iFEdgeB) : parent_class() - { - _FEdge = iEdge; - _first = iEdge; - _FEdgeB = iFEdgeB; - } - -public: - virtual ~fedge_iterator_base() {} - - // operators - // operator corresponding to ++i. - inline Self& operator++() - { - increment(); - return *this; - } - - // operator corresponding to i++, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator++(int) - { - Self tmp = *this; - increment(); - return tmp; - } - - // operator corresponding to --i - inline Self& operator--() - { - decrement(); - return *this; - } - - // operator corresponding to i--, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator--(int) - { - Self tmp = *this; - decrement(); - return tmp; - } - - // comparibility - virtual bool operator!=(const Self& b) const - { - return (_FEdge != b._FEdge); - } - - virtual bool operator==(const Self& b) const - { - return !(*this != b); - } - - // dereferencing - virtual reference operator*() const - { - return (_FEdge); - } - - virtual pointer operator->() const - { - return &(operator*()); - } - -public: - virtual bool begin() const - { - return (_FEdge == _first) ? true : false; - } - - virtual bool end() const - { - return (_FEdge == 0) ? true : false; - } - -protected: - virtual void increment() - { - _FEdge = _FEdge->nextEdge(); // we don't change or - } - - virtual void decrement() - { - if (0 == _FEdge) { - _FEdge = _FEdgeB; - return; - } - _FEdge = _FEdge->previousEdge(); // we don't change or - } +class fedge_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> { + public: + typedef typename Traits::value_type value_type; + typedef typename Traits::difference_type difference_type; + typedef typename Traits::pointer pointer; + typedef typename Traits::reference reference; + typedef fedge_iterator_base<Traits> Self; + + public: + typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; + mutable value_type _FEdge; + value_type _first; + value_type _FEdgeB; // last fedge of the view edge + + public: + friend class ViewEdge; + friend class fedge_iterator; + + inline fedge_iterator_base() : parent_class() + { + } + + inline fedge_iterator_base(const fedge_iterator_base<Nonconst_traits<FEdge *>> &iBrother) + : parent_class() + { + _FEdge = iBrother._FEdge; + _first = iBrother._first; + _FEdgeB = iBrother._FEdgeB; + } + + inline fedge_iterator_base(const fedge_iterator_base<Const_traits<FEdge *>> &iBrother) + : parent_class() + { + _FEdge = iBrother._FEdge; + _first = iBrother._first; + _FEdgeB = iBrother._FEdgeB; + } + + //protected://FIXME + public: + inline fedge_iterator_base(value_type iEdge, value_type iFEdgeB) : parent_class() + { + _FEdge = iEdge; + _first = iEdge; + _FEdgeB = iFEdgeB; + } + + public: + virtual ~fedge_iterator_base() + { + } + + // operators + // operator corresponding to ++i. + inline Self &operator++() + { + increment(); + return *this; + } + + // operator corresponding to i++, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator++(int) + { + Self tmp = *this; + increment(); + return tmp; + } + + // operator corresponding to --i + inline Self &operator--() + { + decrement(); + return *this; + } + + // operator corresponding to i--, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator--(int) + { + Self tmp = *this; + decrement(); + return tmp; + } + + // comparibility + virtual bool operator!=(const Self &b) const + { + return (_FEdge != b._FEdge); + } + + virtual bool operator==(const Self &b) const + { + return !(*this != b); + } + + // dereferencing + virtual reference operator*() const + { + return (_FEdge); + } + + virtual pointer operator->() const + { + return &(operator*()); + } + + public: + virtual bool begin() const + { + return (_FEdge == _first) ? true : false; + } + + virtual bool end() const + { + return (_FEdge == 0) ? true : false; + } + + protected: + virtual void increment() + { + _FEdge = _FEdge->nextEdge(); // we don't change or + } + + virtual void decrement() + { + if (0 == _FEdge) { + _FEdge = _FEdgeB; + return; + } + _FEdge = _FEdge->previousEdge(); // we don't change or + } }; template<class Traits> -class vertex_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> -{ -public: - typedef typename Traits::value_type value_type; - typedef typename Traits::difference_type difference_type; - typedef typename Traits::pointer pointer; - typedef typename Traits::reference reference; - typedef vertex_iterator_base<Traits> Self; - -protected: - typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; - -public: - mutable value_type _SVertex; - FEdge *_NextFEdge; - FEdge *_PreviousFEdge; - -public: - friend class ViewEdge; - friend class vertex_iterator; - - inline vertex_iterator_base() : parent_class() {} - - inline vertex_iterator_base(const vertex_iterator_base<Const_traits<SVertex*> >& iBrother) : parent_class() - { - _SVertex = iBrother._SVertex; - _NextFEdge = iBrother._NextFEdge; - _PreviousFEdge = iBrother._PreviousFEdge; - } - - inline vertex_iterator_base(const vertex_iterator_base<Nonconst_traits<SVertex*> >& iBrother) : parent_class() - { - _SVertex = iBrother._SVertex; - _NextFEdge = iBrother._NextFEdge; - _PreviousFEdge = iBrother._PreviousFEdge; - } - -//protected://FIXME -public: - inline vertex_iterator_base(value_type iVertex, FEdge *iPreviousFEdge, FEdge *iNextFEdge) : parent_class() - { - _SVertex = iVertex; - _NextFEdge = iNextFEdge; - _PreviousFEdge = iPreviousFEdge; - } - -public: - virtual ~vertex_iterator_base() {} - - virtual bool begin() const - { - return (_PreviousFEdge == 0) ? true : false; - } - - virtual bool end() const - { - return (_SVertex == 0) ? true : false; - } - - // operators - // operator corresponding to ++i - inline Self& operator++() - { - increment(); - return *this; - } - - // operator corresponding to i++, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator++(int) - { - Self tmp = *this; - increment(); - return tmp; - } - - // operator corresponding to --i - inline Self& operator--() - { - decrement(); - return *this; - } - - // operator corresponding to --i, i.e. which returns the value *and then* increments it. - // That's why we store the value in a temp. - inline Self operator--(int) - { - Self tmp = *this; - decrement(); - return tmp; - } - - // comparibility - virtual bool operator!=(const Self& b) const - { - return (_SVertex != b._SVertex); - } - - virtual bool operator==(const Self& b) const - { - return !(*this != b); - } - - // dereferencing - virtual reference operator*() const - { - return (_SVertex); - } - - virtual pointer operator->() const - { - return &(operator*()); - } - -protected: - virtual void increment() - { - if (!_NextFEdge) { - _SVertex = NULL; - return; - } - _SVertex = _NextFEdge->vertexB(); - _PreviousFEdge = _NextFEdge; - _NextFEdge = _NextFEdge->nextEdge(); - } - - virtual void decrement() - { +class vertex_iterator_base : public IteratorBase<Traits, BidirectionalIteratorTag_Traits> { + public: + typedef typename Traits::value_type value_type; + typedef typename Traits::difference_type difference_type; + typedef typename Traits::pointer pointer; + typedef typename Traits::reference reference; + typedef vertex_iterator_base<Traits> Self; + + protected: + typedef IteratorBase<Traits, BidirectionalIteratorTag_Traits> parent_class; + + public: + mutable value_type _SVertex; + FEdge *_NextFEdge; + FEdge *_PreviousFEdge; + + public: + friend class ViewEdge; + friend class vertex_iterator; + + inline vertex_iterator_base() : parent_class() + { + } + + inline vertex_iterator_base(const vertex_iterator_base<Const_traits<SVertex *>> &iBrother) + : parent_class() + { + _SVertex = iBrother._SVertex; + _NextFEdge = iBrother._NextFEdge; + _PreviousFEdge = iBrother._PreviousFEdge; + } + + inline vertex_iterator_base(const vertex_iterator_base<Nonconst_traits<SVertex *>> &iBrother) + : parent_class() + { + _SVertex = iBrother._SVertex; + _NextFEdge = iBrother._NextFEdge; + _PreviousFEdge = iBrother._PreviousFEdge; + } + + //protected://FIXME + public: + inline vertex_iterator_base(value_type iVertex, FEdge *iPreviousFEdge, FEdge *iNextFEdge) + : parent_class() + { + _SVertex = iVertex; + _NextFEdge = iNextFEdge; + _PreviousFEdge = iPreviousFEdge; + } + + public: + virtual ~vertex_iterator_base() + { + } + + virtual bool begin() const + { + return (_PreviousFEdge == 0) ? true : false; + } + + virtual bool end() const + { + return (_SVertex == 0) ? true : false; + } + + // operators + // operator corresponding to ++i + inline Self &operator++() + { + increment(); + return *this; + } + + // operator corresponding to i++, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator++(int) + { + Self tmp = *this; + increment(); + return tmp; + } + + // operator corresponding to --i + inline Self &operator--() + { + decrement(); + return *this; + } + + // operator corresponding to --i, i.e. which returns the value *and then* increments it. + // That's why we store the value in a temp. + inline Self operator--(int) + { + Self tmp = *this; + decrement(); + return tmp; + } + + // comparibility + virtual bool operator!=(const Self &b) const + { + return (_SVertex != b._SVertex); + } + + virtual bool operator==(const Self &b) const + { + return !(*this != b); + } + + // dereferencing + virtual reference operator*() const + { + return (_SVertex); + } + + virtual pointer operator->() const + { + return &(operator*()); + } + + protected: + virtual void increment() + { + if (!_NextFEdge) { + _SVertex = NULL; + return; + } + _SVertex = _NextFEdge->vertexB(); + _PreviousFEdge = _NextFEdge; + _NextFEdge = _NextFEdge->nextEdge(); + } + + virtual void decrement() + { #if 0 - if (!_SVertex) { - _SVertex = _PreviousFEdge->vertexB(); - return; - } + if (!_SVertex) { + _SVertex = _PreviousFEdge->vertexB(); + return; + } #endif - if (!_PreviousFEdge) { - _SVertex = NULL; - return; - } - _SVertex = _PreviousFEdge->vertexA(); - _NextFEdge = _PreviousFEdge; - _PreviousFEdge = _PreviousFEdge->previousEdge(); - } + if (!_PreviousFEdge) { + _SVertex = NULL; + return; + } + _SVertex = _PreviousFEdge->vertexA(); + _NextFEdge = _PreviousFEdge; + _PreviousFEdge = _PreviousFEdge->previousEdge(); + } }; -} // end of namespace ViewEdgeInternal +} // end of namespace ViewEdgeInternal } /* namespace Freestyle */ -#endif // __FREESTYLE_VIEW_MAP_ADVANCED_ITERATORS_H__ +#endif // __FREESTYLE_VIEW_MAP_ADVANCED_ITERATORS_H__ |