ArcGIS Procedural Runtime  3.2.10650
ShapeIterator.h
1 /*
2  COPYRIGHT (c) 2012-2024 Esri R&D Center Zurich
3  TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
4  Unpublished material - all rights reserved under the
5  Copyright Laws of the United States and applicable international
6  laws, treaties, and conventions.
7 
8  For additional information, contact:
9  Environmental Systems Research Institute, Inc.
10  Attn: Contracts and Legal Services Department
11  380 New York Street
12  Redlands, California, 92373
13  USA
14 
15  email: contracts@esri.com
16 */
17 
18 #ifndef PRTX_SHAPEITERATOR_H_
19 #define PRTX_SHAPEITERATOR_H_
20 
21 #include "prtx/prtx.h"
22 #include "prtx/Shape.h"
23 #include "prtx/GenerateContext.h"
24 
25 #include <memory>
26 
27 
28 namespace prtx {
29 
38 class PRTX_EXPORTS_API ShapeIterator {
39 public:
43  virtual ShapePtr getNext() = 0;
44 
45 protected:
46  virtual ~ShapeIterator() {}
47  ShapeIterator() {}
48 };
49 
50 
51 class DepthFirstIterator;
52 typedef std::shared_ptr<DepthFirstIterator> DepthFirstIteratorPtr;
53 
57 class PRTX_EXPORTS_API DepthFirstIterator : public ShapeIterator {
58 public:
64  static DepthFirstIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
65 
66 protected:
68 
69 public:
70  virtual ~DepthFirstIterator();
71 };
72 
73 
75 typedef std::shared_ptr<BreadthFirstIterator> BreadthFirstIteratorPtr;
76 
80 class PRTX_EXPORTS_API BreadthFirstIterator : public ShapeIterator {
81 public:
87  static BreadthFirstIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
88 
89 protected:
91 
92 public:
93  virtual ~BreadthFirstIterator();
94 };
95 
96 
97 class LeafIterator;
98 typedef std::shared_ptr<LeafIterator> LeafIteratorPtr;
99 
103 class PRTX_EXPORTS_API LeafIterator : public ShapeIterator {
104 public:
110  static LeafIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
111 
112 protected:
113  LeafIterator();
114 
115 public:
116  virtual ~LeafIterator();
117 };
118 
119 
121 typedef std::shared_ptr<InitialShapeIterator> InitialShapeIteratorPtr;
122 
128 class PRTX_EXPORTS_API InitialShapeIterator : public ShapeIterator {
129 public:
135  static InitialShapeIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
136 
137 protected:
139 
140 public:
141  virtual ~InitialShapeIterator();
142 };
143 
144 
146 typedef std::shared_ptr<SelectedShapesIterator> SelectedShapesIteratorPtr;
147 
154 class PRTX_EXPORTS_API SelectedShapesIterator : public ShapeIterator {
155 public:
162  static SelectedShapesIteratorPtr create(GenerateContext& context, size_t initialShapeIndex, const std::vector<int32_t>& selectedShapes);
163 
164 protected:
166 
167 public:
168  virtual ~SelectedShapesIterator();
169 };
170 
171 
172 class CGAPrintIterator;
173 typedef std::shared_ptr<CGAPrintIterator> CGAPrintIteratorPtr;
174 
178 class PRTX_EXPORTS_API CGAPrintIterator : public ShapeIterator {
179 public:
185  static CGAPrintIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
186 
187 protected:
189 
190 public:
191  virtual ~CGAPrintIterator();
192 };
193 
194 
195 class CGAErrorIterator;
196 typedef std::shared_ptr<CGAErrorIterator> CGAErrorIteratorPtr;
197 
201 class PRTX_EXPORTS_API CGAErrorIterator : public ShapeIterator {
202 public:
208  static CGAErrorIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
209 
214  virtual void getAssetsErrors(prtx::AssetErrorPtrVector& errors) = 0;
215 
216 protected:
218 
219 public:
220  virtual ~CGAErrorIterator();
221 };
222 
223 
224 class CGAReportIterator;
225 typedef std::shared_ptr<CGAReportIterator> CGAReportIteratorPtr;
226 
230 class PRTX_EXPORTS_API CGAReportIterator : public ShapeIterator {
231 public:
237  static CGAReportIteratorPtr create(GenerateContext& context, size_t initialShapeIndex);
238 
239 protected:
241 
242 public:
243  virtual ~CGAReportIterator();
244 };
245 
246 
247 } // namespace
248 
249 
250 
251 #endif /* PRTX_SHAPEITERATOR_H_ */
Definition: ShapeIterator.h:103
Definition: ShapeIterator.h:154
Definition: GenerateContext.h:42
Definition: ShapeIterator.h:38
Definition: ShapeIterator.h:230
Definition: ShapeIterator.h:178
The Procedural Runtime eXtension namespace. The prtx namespace contains the tools to extend the Proce...
Definition: AnnotationBuilder.h:35
Definition: ShapeIterator.h:128
std::shared_ptr< Shape > ShapePtr
shared pointer to a Shape
Definition: Shape.h:41
Definition: ShapeIterator.h:201
Definition: ShapeIterator.h:80
Definition: ShapeIterator.h:57