You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.8 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkMultiBlockDataSet.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.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.
=========================================================================*/
/**
* @class vtkMultiBlockDataSet
* @brief Composite dataset that organizes datasets into
* blocks.
*
* vtkMultiBlockDataSet is a vtkCompositeDataSet that stores
* a hierarchy of datasets. The dataset collection consists of
* multiple blocks. Each block can itself be a vtkMultiBlockDataSet, thus
* providing for a full tree structure.
* Sub-blocks are usually used to distribute blocks across processors.
* For example, a 1 block dataset can be distributed as following:
* @verbatim
* proc 0:
* Block 0:
* * ds 0
* * (null)
*
* proc 1:
* Block 0:
* * (null)
* * ds 1
* @endverbatim
*/
#ifndef vtkMultiBlockDataSet_h
#define vtkMultiBlockDataSet_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkDataObjectTree.h"
class VTKCOMMONDATAMODEL_EXPORT vtkMultiBlockDataSet : public vtkDataObjectTree
{
public:
static vtkMultiBlockDataSet* New();
vtkTypeMacro(vtkMultiBlockDataSet, vtkDataObjectTree);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Return class name of data type (see vtkType.h for
* definitions).
*/
int GetDataObjectType() override { return VTK_MULTIBLOCK_DATA_SET; }
/**
* Set the number of blocks. This will cause allocation if the new number of
* blocks is greater than the current size. All new blocks are initialized to
* null.
*/
void SetNumberOfBlocks(unsigned int numBlocks);
/**
* Returns the number of blocks.
*/
unsigned int GetNumberOfBlocks();
/**
* Returns the block at the given index. It is recommended that one uses the
* iterators to iterate over composite datasets rather than using this API.
*/
vtkDataObject* GetBlock(unsigned int blockno);
/**
* Sets the data object as the given block. The total number of blocks will
* be resized to fit the requested block no.
*/
void SetBlock(unsigned int blockno, vtkDataObject* block);
/**
* Remove the given block from the dataset.
*/
void RemoveBlock(unsigned int blockno);
/**
* Returns true if meta-data is available for a given block.
*/
int HasMetaData(unsigned int blockno) { return this->Superclass::HasChildMetaData(blockno); }
/**
* Returns the meta-data for the block. If none is already present, a new
* vtkInformation object will be allocated. Use HasMetaData to avoid
* allocating vtkInformation objects.
*/
vtkInformation* GetMetaData(unsigned int blockno)
{
return this->Superclass::GetChildMetaData(blockno);
}
//@{
/**
* Retrieve an instance of this class from an information object.
*/
static vtkMultiBlockDataSet* GetData(vtkInformation* info);
static vtkMultiBlockDataSet* GetData(vtkInformationVector* v, int i = 0);
//@}
/**
* Unhiding superclass method.
*/
vtkInformation* GetMetaData(vtkCompositeDataIterator* iter) override
{
return this->Superclass::GetMetaData(iter);
}
/**
* Unhiding superclass method.
*/
int HasMetaData(vtkCompositeDataIterator* iter) override
{
return this->Superclass::HasMetaData(iter);
}
protected:
vtkMultiBlockDataSet();
~vtkMultiBlockDataSet() override;
private:
vtkMultiBlockDataSet(const vtkMultiBlockDataSet&) = delete;
void operator=(const vtkMultiBlockDataSet&) = delete;
};
#endif