00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkCompositeDataSet.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00032 #ifndef __vtkCompositeDataSet_h 00033 #define __vtkCompositeDataSet_h 00034 00035 #include "vtkDataObject.h" 00036 00037 class vtkCompositeDataIterator; 00038 class vtkCompositeDataSetInternals; 00039 class vtkInformation; 00040 class vtkInformationStringKey; 00041 00042 class VTK_FILTERING_EXPORT vtkCompositeDataSet : public vtkDataObject 00043 { 00044 public: 00045 vtkTypeMacro(vtkCompositeDataSet, vtkDataObject); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00049 virtual vtkCompositeDataIterator* NewIterator(); 00050 00052 virtual int GetDataObjectType() {return VTK_COMPOSITE_DATA_SET;} 00053 00055 virtual vtkAlgorithmOutput* GetProducerPort(); 00056 00060 virtual void CopyStructure(vtkCompositeDataSet* input); 00061 00066 virtual void SetDataSet(vtkCompositeDataIterator* iter, vtkDataObject* dataObj); 00067 00072 virtual vtkDataObject* GetDataSet(vtkCompositeDataIterator* iter); 00073 00080 virtual vtkInformation* GetMetaData(vtkCompositeDataIterator* iter); 00081 00086 virtual int HasMetaData(vtkCompositeDataIterator* iter); 00087 00088 //BTX 00090 00091 static vtkCompositeDataSet* GetData(vtkInformation* info); 00092 static vtkCompositeDataSet* GetData(vtkInformationVector* v, int i=0); 00093 //ETX 00095 00097 virtual void Initialize(); 00098 00100 00101 virtual void ShallowCopy(vtkDataObject *src); 00102 virtual void DeepCopy(vtkDataObject *src); 00104 00108 virtual vtkIdType GetNumberOfPoints(); 00109 00111 static vtkInformationStringKey* NAME(); 00112 00113 //BTX 00114 protected: 00115 vtkCompositeDataSet(); 00116 ~vtkCompositeDataSet(); 00117 00119 void SetNumberOfChildren(unsigned int num); 00120 00122 unsigned int GetNumberOfChildren(); 00123 00126 void SetChild(unsigned int index, vtkDataObject*); 00127 00129 void RemoveChild(unsigned int index); 00130 00132 vtkDataObject* GetChild(unsigned int num); 00133 00137 vtkInformation* GetChildMetaData(unsigned int index); 00138 00140 void SetChildMetaData(unsigned int index, vtkInformation* info); 00141 00144 int HasChildMetaData(unsigned int index); 00145 00146 // The internal datastructure. Subclasses need not access this directly. 00147 vtkCompositeDataSetInternals* Internals; 00148 00149 friend class vtkCompositeDataIterator; 00150 private: 00151 vtkCompositeDataSet(const vtkCompositeDataSet&); // Not implemented. 00152 void operator=(const vtkCompositeDataSet&); // Not implemented. 00153 //ETX 00154 }; 00155 00156 #endif 00157 00158