Skip to content
Snippets Groups Projects
Commit a9ea4f44 authored by David C. Lonie's avatar David C. Lonie
Browse files

Fix TestDataArrayIterators

vtkFloatArray no longer inherits TypedDataArray, so some adjustments
were needed.

Moved some logic from vtkPeriodicDataArray into
vtkAngularPeriodicDataArray, since the restriction to vectors/tensors
isn't required for the superclass.
parent f49bbb76
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,7 @@
#include "vtkTypedDataArray.h"
#include "vtkTypedDataArrayIterator.h"
#include "vtkNew.h"
#include "vtkPeriodicDataArray.h" // a typed data array subclass implementation
#include <cassert>
#include <iostream>
......@@ -25,6 +26,21 @@
// undefine this to print benchmark results:
#define SILENT
// Since vtkFloatArray etc are no longer derived from vtkTypedDataArray,
// create a simple class that is:
namespace
{
class MyArray : public vtkPeriodicDataArray<float>
{
public:
vtkTypeMacro(MyArray, vtkPeriodicDataArray<float>)
static MyArray *New();
void Transform(float *) const {/*no op*/}
};
vtkStandardNewMacro(MyArray)
}
int TestDataArrayIterators(int, char *[])
{
vtkIdType numComps = 4;
......@@ -42,6 +58,11 @@ int TestDataArrayIterators(int, char *[])
array->SetValue(i, i % 97);
}
// Create the vtkTypedDataArray testing implementation:
vtkNew<MyArray> tdaContainer;
MyArray *tda = tdaContainer.GetPointer();
tda->InitializeArray(array);
// should be vtkDataArrayTemplate<float>::Iterator (float*):
vtkFloatArray::Iterator datBegin = array->Begin();
vtkFloatArray::Iterator datIter = array->Begin();
......@@ -53,9 +74,9 @@ int TestDataArrayIterators(int, char *[])
// should be vtkTypedDataArrayIterator<float>:
vtkTypedDataArray<float>::Iterator tdaBegin =
vtkTypedDataArray<float>::FastDownCast(array)->Begin();
vtkTypedDataArray<float>::FastDownCast(tda)->Begin();
vtkTypedDataArray<float>::Iterator tdaIter =
vtkTypedDataArray<float>::FastDownCast(array)->Begin();
vtkTypedDataArray<float>::FastDownCast(tda)->Begin();
if (typeid(tdaBegin) != typeid(vtkTypedDataArrayIterator<float>))
{
std::cerr << "Error: vtkTypedDataArray<float>::Iterator is not a "
......
......@@ -38,10 +38,16 @@ template <class Scalar>
class vtkAngularPeriodicDataArray: public vtkPeriodicDataArray<Scalar>
{
public:
vtkAbstractTemplateTypeMacro(vtkAngularPeriodicDataArray<Scalar>,
vtkPeriodicDataArray<Scalar>)
vtkMappedDataArrayNewInstanceMacro(vtkAngularPeriodicDataArray<Scalar>);
static vtkAngularPeriodicDataArray *New();
virtual void PrintSelf(ostream &os, vtkIndent indent);
// Description:
// Initialize the mapped array with the original input data array.
virtual void InitializeArray(vtkAoSDataArrayTemplate<Scalar>* inputData);
// Description:
// Set/Get the rotation angle in degrees. Default is 0.
void SetAngle(double angle);
......
......@@ -38,6 +38,27 @@ template <class Scalar> void vtkAngularPeriodicDataArray<Scalar>
this->Center[0] << " " << this->Center[1] << " " << this->Center[2] << "\n";
}
//------------------------------------------------------------------------------
template <class Scalar> void vtkAngularPeriodicDataArray<Scalar>
::InitializeArray(vtkAoSDataArrayTemplate<Scalar>* data)
{
this->Initialize();
if (!data)
{
vtkErrorMacro(<< "No original data provided.");
return;
}
if (data->GetNumberOfComponents() != 3 && data->GetNumberOfComponents() != 9)
{
vtkWarningMacro(<< "Original data has " << data->GetNumberOfComponents() <<
" components, Expecting 3 or 9.");
return;
}
this->Superclass::InitializeArray(data);
}
//------------------------------------------------------------------------------
template <class Scalar> void vtkAngularPeriodicDataArray<Scalar>::
SetAngle(double angle)
......
......@@ -40,7 +40,7 @@ public:
// Description:
// Initialize the mapped array with the original input data array.
void InitializeArray(vtkAoSDataArrayTemplate<Scalar>* inputData);
virtual void InitializeArray(vtkAoSDataArrayTemplate<Scalar>* inputData);
// Description:
// Initialize array with zero values
......
......@@ -61,13 +61,6 @@ template <class Scalar> void vtkPeriodicDataArray<Scalar>
return;
}
if (data->GetNumberOfComponents() != 3 && data->GetNumberOfComponents() != 9)
{
vtkWarningMacro(<< "Original data has " << data->GetNumberOfComponents() <<
" components, Expecting 3 or 9.");
return;
}
this->NumberOfComponents = data->GetNumberOfComponents();
this->Size = data->GetSize();
this->MaxId = data->GetMaxId();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment