Commit: 6e3e0f8c7fbc96ca03f7521214c38ac56858e046
Author: Hugo Sales
Date:   Mon Jun 3 16:28:44 2019 +0100
Branches: soc-2019-fast-io
https://developer.blender.org/rB6e3e0f8c7fbc96ca03f7521214c38ac56858e046

[Fast import/export] Fixed loose_edge_iterator

===================================================================

M       release/datafiles/locale
M       release/scripts/addons
M       release/scripts/addons_contrib
M       source/blender/editors/io/intern/common.hpp

===================================================================

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 2eab3be9bbd..ad82c4ce43e 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 2eab3be9bbdb2d27e36cfde38fdcba5fc264f223
+Subproject commit ad82c4ce43ef2801ef51e75af1f9702992478b02
diff --git a/release/scripts/addons b/release/scripts/addons
index 53e11f6552d..d79fa2c042e 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 53e11f6552dfd2defbf2b5c4fd1621d3dfdb6129
+Subproject commit d79fa2c042e34e1639030b06ff762673a0a68803
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 0409b81f454..4af87c687bc 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 0409b81f45445c2934ad223e430ca7d8970ae5f0
+Subproject commit 4af87c687bc1afa2968f13602897782d5c5d622a
diff --git a/source/blender/editors/io/intern/common.hpp 
b/source/blender/editors/io/intern/common.hpp
index 814184bb27e..9b7aa398e70 100644
--- a/source/blender/editors/io/intern/common.hpp
+++ b/source/blender/editors/io/intern/common.hpp
@@ -204,16 +204,28 @@ namespace common {
 
        struct edge_iter : pointer_iterator<MEdge> {
                edge_iter(const Mesh * const m) : pointer_iterator(m->medge, 
m->totedge) {}
+               edge_iter(const pointer_iterator<MEdge> &pi) : 
pointer_iterator(pi) {}
+               edge_iter(pointer_iterator<MEdge> &&pi) : pointer_iterator(pi) 
{}
        };
 
-       // TODO someone This can't work. Merge dereference_iterator and 
pointer_iterator
-       struct loose_edge_iter : edge_iter {
-               using edge_iter::edge_iter;
-               MEdge dereference() {
-                       while(this->it->flag & ME_LOOSEEDGE)
-                               ++this->it;
-                       return *(this->it);
+       struct loose_edge_iter : public 
boost::iterator_adaptor<loose_edge_iter, edge_iter,
+                                                               MEdge, 
std::bidirectional_iterator_tag> {
+               explicit loose_edge_iter(const Mesh * const m, const edge_iter 
&e)
+                       : loose_edge_iter::iterator_adaptor_(e), mesh(m) {}
+               explicit loose_edge_iter(const Mesh * const m) : 
loose_edge_iter(m, edge_iter(m)) {}
+               loose_edge_iter begin() const { return loose_edge_iter(mesh); }
+               loose_edge_iter end()   const { return loose_edge_iter(mesh, 
this->base().end()); }
+               void increment() {
+                       do {
+                               ++this->base_reference();
+                       } while(!(this->base()->flag & ME_LOOSEEDGE));
                }
+               void decrement() {
+                       do {
+                               --this->base_reference();
+                       } while(!(this->base()->flag & ME_LOOSEEDGE));
+               }
+               const Mesh * const mesh;
        };
 
        // TODO someone G.is_break

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to