Add vtkMappedDataArray.

vtkMappedDataArray is a superclass for vtkDataArrays that do not use
the standard memory layout, and will allow VTK to interface with
simulation codes for in-situ analysis without repacking simulation data.

vtkMappedDataArrayNewInstanceMacro is used by subclasses to implement
NewInstanceInternal such that a non-mapped vtkDataArray is returned by
NewInstance(). This prevents the mapped array type from propogating
through the pipeline.

Change-Id: I619b3bd5ab4325980eddbc7b290352490713d60c
Add abstract vtkUnstructuredGridBase interface.

This class provides some additional cell API on top of
vtkPointSet, but does not contain the implementation-specific
public methods in vtkUnstructuredGrid. Similar to
vtkMappedDataArray, this interface is used to map native
simulation data structures into an interface that VTK
understands.

Change-Id: Ifdc21b3d704854bfd53a198d3d3d0f7415577479
Add a vtkMappedUnstructuredGrid templated wrapper class.

Change-Id: I046d14b271d9d9693c9caa4b9b86836f85120c0c
Add vtkAbstractArray::HasStandardMemoryLayout() virtual.

This can be used to quickly check if an array uses a
non-standard memory layout.

Change-Id: I17d3a8cd9e3c7c10d768fea31370ae65510e6292
Fix handling of mapped data arrays in vtkDataArray.

Changes to vtkDataArray implementation for compatibility with
vtkMappedDataArray. If regular data arrays are used, fast
data iteration via scalar pointers is preserved. If mapped
data arrays are used, vtkTypedDataArrayIterators are used.

Some performance optimizations were made along the way, and
benchmarks added to TestDataArray. The results of the benchmarks
before/after the changes are:

Test                               | Before (s) | After (s) | Speedup
-----------------------------------+------------+-----------+---------
deep copy 10M double --> double:   | 0.0180356  | 0.0179345 |  00.56%
deep copy 10M double --> int:      | 0.0193923  | 0.0108546 |  44.03%
deep copy 10M int --> double:      | 0.0197700  | 0.0125094 |  36.73%
deep copy 10M int --> int:         | 0.0096185  | 0.0088052 |  08.46%
get tuples random access (double): | 0.0111670  | 0.0074788 |  33.03%
get tuples random access (int):    | 0.0106015  | 0.0072431 |  31.68%
insert next tuple (double):        | 0.1429880  | 0.0932984 |  34.75%
insert next tuple (int):           | 0.1445310  | 0.0891607 |  38.31%
insert tuple (double):             | 0.0601416  | 0.0664084 | -10.42%
insert tuple (int):                | 0.0558483  | 0.0630196 | -12.84%
interpolate 2 arrays (double):     | 0.0108466  | 0.0028245 |  73.96%
interpolate 2 arrays (int):        | 0.0114603  | 0.0028706 |  74.95%
interpolate 6 tuples (double):     | 0.0087588  | 0.0055686 |  36.42%
interpolate 6 tuples (int):        | 0.0133066  | 0.0092156 |  30.74%

The insert tuple operation used to just call memcpy, but now it has to
perform some additional type checking, hence the slowdown.

Change-Id: I1d45f2b998d74257a4e1d917e8b01b60fa6ef4e1
Modify vtkContourFilter to work with mapped data.

Change-Id: I5058001fe4c41d8d5d034310daf5bedca54a082e
Make surface extraction work with mapped structures.

Change-Id: I28f0fd72d45b1913d83676256f3725cbac9db482
Make slicing work with mapped data.

Change-Id: Ia7413db875a103eadb0c72185b722762c45469be
Make warping by vector work with mapped structures.

Change-Id: I02be7e6c1b9102a574c27a1a0a85543f47e68de6
Adapt volume mappers to operate on the UnstructuredGridBase interface.

Change-Id: Iffef1d59a1497684c864eef192273cae36b1364c
Update XML writers to support vtkMappedUnstructuredGrid.

Also, use vtkTypeTemplate in vtkArrayIteratorTemplate to allow
safe down-casting.

Change-Id: I352491a52df8320c711f112feb911c91c5e77e11
Expose the vtkExodusIIReaderPrivate::SqueezePoints variable.

We need to pass the full node data into the reader's output
to do a comparison with the in-situ reader. The SqueezePoints
variable controls whether or not to prune points that don't
belong in a given element block.

This patch simply adds methods to vtkExodusIIReader that
set/query the private class's SqueezePoints variable.

Change-Id: If6ceaa11939abfd731c4c172bf305b74f5c3878d
Add in-situ exodus II node/element structures and test.

Change-Id: Id04f144757cdf0d05e21f5276c3a14362c606235
Fix warnings introduced by insitu branch.

Change-Id: I81bb9eafdf0a0a63f8ac2728720f5959d93ec440
Merge topic 'insitu' into master

f12c292d Add in-situ exodus II node/element structures and test.
88af65b3 Expose the vtkExodusIIReaderPrivate::SqueezePoints variable.
d5490522 Update XML writers to support vtkMappedUnstructuredGrid.
47aaa1d7 Adapt volume mappers to operate on the UnstructuredGridBase interface.
fab68b54 Make warping by vector work with mapped structures.
17182fe8 Make slicing work with mapped data.
e7e4c21f Make surface extraction work with mapped structures.
5ca7a26e Modify vtkContourFilter to work with mapped data.
b037ed03 Fix handling of mapped data arrays in vtkDataArray.
5ebbdd2b Add vtkAbstractArray::HasStandardMemoryLayout() virtual.
8c33da4f Add a vtkMappedUnstructuredGrid templated wrapper class.
71b3c31e Add abstract vtkUnstructuredGridBase interface.
5f23efa7 Add vtkMappedDataArray.
Fix for compile error happening on Mingw.

_Interlocked* don't seem to exist on Mingw. Using critical
sections instead. This is probably slower so someone that cares
about multi-threaded performance on Mingw may want to do a
better fix.

Change-Id: I04128a0492d13c8bd7fe76e86c980d1562f1b26c
Fix the otherPrint test on old windows compilers.

I'm getting really good at fixing this bug...third time this week!

Change-Id: I89228f6a5015688912301d836f5bf3694ac50b30
Merge topic 'mingw-atomic-fix' into master

4e968a6f Fix for compile error happening on Mingw.
BUG: Fixed a bug introduced by removing redirection from arrays.

In a previous commit, I made sure that vtkDataArrayTemplate<>
subclasses don't have to define methods that forward to
superclasss just for the sake of wrapping code. One issue this
introduced was that in vtkIdTypeArray, GetDataType() was
returning VTK_ID_TYPE. But the superclass methods returns
the native type of vtkIdType which may be int or long long.
This is because the templated code cannot be specialized for
a typedef that resolves to a native type. Fixed the issue by
re-introducing GetDataType() to vtkIdTypeArray. Note that
by definition vtkDataArrayTemplate<vtkIdType> != vtkIdTypeArray.

Change-Id: I684e0901be8e37522d00d6a50d2cfb598919e446
Merge topic 'warnings' into master

b4612f5c Fix warnings introduced by insitu branch.