[Bf-blender-cvs] [6e3e0f8c7fb] soc-2019-fast-io: [Fast import/export] Fixed loose_edge_iterator
Hugo Sales
noreply at git.blender.org
Thu Jun 6 15:25:37 CEST 2019
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
More information about the Bf-blender-cvs
mailing list