1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    vtkCPExodusIIElementBlockCellIterator.h
5 
6   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7   All rights reserved.
8   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10      This software is distributed WITHOUT ANY WARRANTY; without even
11      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12      PURPOSE.  See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /**
16  * @class   vtkCPExodusIIElementBlockCellIterator
17  * @brief   vtkCellIterator subclass
18  * specialized for vtkCPExodusIIElementBlock.
19  */
20 
21 #ifndef vtkCPExodusIIElementBlockCellIterator_h
22 #define vtkCPExodusIIElementBlockCellIterator_h
23 
24 #include "vtkCellIterator.h"
25 #include "vtkIOExodusModule.h" // For export macro
26 
27 #include "vtkSmartPointer.h" // For smart pointer
28 
29 class vtkCPExodusIIElementBlock;
30 class vtkCPExodusIIElementBlockPrivate;
31 
32 class VTKIOEXODUS_EXPORT vtkCPExodusIIElementBlockCellIterator : public vtkCellIterator
33 {
34 public:
35   typedef vtkCPExodusIIElementBlockPrivate StorageType;
36 
37   static vtkCPExodusIIElementBlockCellIterator* New();
38   vtkTypeMacro(vtkCPExodusIIElementBlockCellIterator, vtkCellIterator);
39   void PrintSelf(ostream& os, vtkIndent indent);
40 
41   bool IsValid();
42   vtkIdType GetCellId();
43 
44 protected:
45   vtkCPExodusIIElementBlockCellIterator();
46   ~vtkCPExodusIIElementBlockCellIterator();
47 
48   void ResetToFirstCell();
49   void IncrementToNextCell();
50   void FetchCellType();
51   void FetchPointIds();
52   void FetchPoints();
53 
54   friend class ::vtkCPExodusIIElementBlock;
55   void SetStorage(vtkCPExodusIIElementBlock* eb);
56 
57 private:
58   vtkCPExodusIIElementBlockCellIterator(const vtkCPExodusIIElementBlockCellIterator&) = delete;
59   void operator=(const vtkCPExodusIIElementBlockCellIterator&) = delete;
60 
61   vtkSmartPointer<StorageType> Storage;
62   vtkSmartPointer<vtkPoints> DataSetPoints;
63   vtkIdType CellId;
64 };
65 
66 #endif // vtkCPExodusIIElementBlockCellIterator_h
67