14 using iterator_category = std::forward_iterator_tag;
15 using difference_type = std::ptrdiff_t;
18 Iterator(std::vector<std::shared_ptr<geo::Primitive>> &primitives,
19 TransformClass transformClass,
size_t primIdx);
25 return a.primIdx_ == b.primIdx_ && a.offset_ == b.offset_;
27 friend bool operator!=(
const Iterator &a,
const Iterator &b) {
return !(a == b); }
30 std::vector<std::shared_ptr<geo::Primitive>> &primitives_;
31 TransformClass transformClass_;
34 std::shared_ptr<ga::Attribute> curAttrib_;
40 Transforms(std::vector<std::shared_ptr<geo::Primitive>> &primitives,
41 TransformClass transformClass)
42 : primitives_(primitives), transformClass_(transformClass) {}
44 Iterator begin() {
return Iterator(primitives_, transformClass_, 0); }
45 Iterator end() {
return Iterator(primitives_, transformClass_, primitives_.size()); }
48 std::vector<std::shared_ptr<geo::Primitive>> &primitives_;
49 TransformClass transformClass_;
52 void addPrimitive(std::shared_ptr<enzo::geo::Primitive> primitive);
53 void attemptMerge(std::shared_ptr<geo::Primitive> prim);
55 std::shared_ptr<enzo::geo::Primitive> getPrimitive(
unsigned int index);
56 std::shared_ptr<const enzo::geo::Primitive> getPrimitive(
unsigned int index)
const;
57 std::shared_ptr<geo::Primitive> getPrimAtPath(
const std::string &path);
58 std::shared_ptr<const geo::Primitive> getPrimAtPath(
const std::string &path)
const;
60 const std::vector<std::shared_ptr<enzo::geo::Primitive>> &getPrimitives()
const {
63 std::vector<std::shared_ptr<enzo::geo::Primitive>> getPrimitives(enzo::geo::PrimType type)
const;
65 Transforms getTransforms(TransformClass transformClass) {
66 return Transforms(primitives_, transformClass);
70 NodePacket deepCopy()
const;
73 std::vector<std::shared_ptr<enzo::geo::Primitive>> primitives_;