Code/syntax sugar: let Collection types be treated more like a STL container with begin/end iterators.

This commit is contained in:
Joseph Lenox 2018-07-18 22:25:37 -05:00
parent ccb8204fae
commit 82f227d718
2 changed files with 15 additions and 0 deletions

View File

@ -41,6 +41,14 @@ class ExPolygonCollection
/// ExPolygons and check if at least one contains the point.
bool contains(const Point &point) const;
size_t size() const { return expolygons.size(); }
ExPolygons::iterator begin() { return expolygons.begin(); }
ExPolygons::iterator end() { return expolygons.end(); }
ExPolygons::const_iterator cbegin() const { return expolygons.cbegin();}
ExPolygons::const_iterator cend() const { return expolygons.cend();}
ExPolygon& at(size_t i) { return expolygons.at(i); }
const ExPolygon& at(size_t i) const { return expolygons.at(i); }
};
inline ExPolygonCollection&

View File

@ -31,6 +31,7 @@ class ExtrusionEntityCollection : public ExtrusionEntity
return this->entities.empty();
};
void clear();
size_t size() const { return this->entities.size(); }
void swap (ExtrusionEntityCollection &c);
void append(const ExtrusionEntity &entity);
void append(const ExtrusionEntitiesPtr &entities);
@ -53,6 +54,12 @@ class ExtrusionEntityCollection : public ExtrusionEntity
CONFESS("Calling as_polyline() on a ExtrusionEntityCollection");
return Polyline();
};
ExtrusionEntitiesPtr::iterator begin() { return entities.begin(); }
ExtrusionEntitiesPtr::iterator end() { return entities.end(); }
ExtrusionEntitiesPtr::const_iterator cbegin() const { return entities.cbegin(); }
ExtrusionEntitiesPtr::const_iterator cend() const { return entities.cend(); }
};
}