File: vtkAbstractIterator.h

package info (click to toggle)
volview 3.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 25,204 kB
  • sloc: cpp: 132,585; ansic: 11,612; tcl: 236; sh: 64; makefile: 25; xml: 8
file content (100 lines) | stat: -rw-r--r-- 2,780 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*=========================================================================

  Copyright (c) Kitware, Inc.
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/VolViewCopyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
// .NAME vtkAbstractIterator - is an iterator for vtkContainer subclasses
// .SECTION Description
// vtkAbstractIterator is a superclass of all container iterators.

// .SECTION See Also
// vtkContainer

// .SECTION Caveates
// VTK Iterators are not reliable when adding or deleting elements 
// from the container. Use iterators for traversing only.

#ifndef __vtkAbstractIterator_h
#define __vtkAbstractIterator_h

#include "vtkObjectBase.h"

class vtkContainer;

template<class KeyType, class DataType>
class  vtkAbstractIterator : public vtkObjectBase
{
  friend class vtkContainer;

  virtual const char* GetClassNameInternal() const { return "vtkAbstractIterator"; }
public:

  // Description:
  // Retrieve the key from the iterator. For lists, the key is the
  // index of the element.
  // This method returns VTK_OK if key was retrieved correctly.
  //virtual int GetKey(KeyType&) = 0;
  
  // Description:
  // Retrieve the data from the iterator. 
  // This method returns VTK_OK if key was retrieved correctly.
  //virtual int GetData(DataType&) = 0;

  // Description:
  // Retrieve the key and data of the current element.
  // This method returns VTK_OK if key and data were retrieved correctly.
  // virtual int GetKeyAndData(KeyType&, DataType&) = 0;
  
  // Description:
  // Set the container for this iterator.
  void SetContainer(vtkContainer*);

  // Description:
  // Get the associated container.
  vtkContainer *GetContainer() { return this->Container; }

  // Description:
  // Initialize the traversal of the container. 
  // Set the iterator to the "beginning" of the container.
  //virtual void InitTraversal()=0;

  // Description:
  // Check if the iterator is at the end of the container. Return 1
  // for yes, 0 for no.
  //virtual int IsDoneWithTraversal()=0;

  // Description:
  // Increment the iterator to the next location.
  //virtual void GoToNextItem() = 0;

protected:
  vtkAbstractIterator();
  virtual ~vtkAbstractIterator();

  vtkContainer *Container;
  vtkIdType ReferenceCount;

private:
  vtkAbstractIterator(const vtkAbstractIterator&); // Not implemented
  void operator=(const vtkAbstractIterator&); // Not implemented
};

#ifdef VTK_NO_EXPLICIT_TEMPLATE_INSTANTIATION
#include "vtkAbstractIterator.txx"
#endif

#endif