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
33     : public vtkCellIterator
34 {
35 public:
36   typedef vtkCPExodusIIElementBlockPrivate StorageType;
37 
38   static vtkCPExodusIIElementBlockCellIterator *New();
39   vtkTypeMacro(vtkCPExodusIIElementBlockCellIterator, vtkCellIterator)
40   void PrintSelf(ostream &os, vtkIndent indent);
41 
42   bool IsValid();
43   vtkIdType GetCellId();
44 
45 protected:
46   vtkCPExodusIIElementBlockCellIterator();
47   ~vtkCPExodusIIElementBlockCellIterator();
48 
49   void ResetToFirstCell();
50   void IncrementToNextCell();
51   void FetchCellType();
52   void FetchPointIds();
53   void FetchPoints();
54 
55   friend class ::vtkCPExodusIIElementBlock;
56   void SetStorage(vtkCPExodusIIElementBlock *eb);
57 
58 private:
59   vtkCPExodusIIElementBlockCellIterator(const vtkCPExodusIIElementBlockCellIterator &) = delete;
60   void operator=(const vtkCPExodusIIElementBlockCellIterator &) = delete;
61 
62   vtkSmartPointer<StorageType> Storage;
63   vtkSmartPointer<vtkPoints> DataSetPoints;
64   vtkIdType CellId;
65 };
66 
67 #endif //vtkCPExodusIIElementBlockCellIterator_h
68