File: vtkCompositeArray.txx

package info (click to toggle)
vtk9 9.3.0%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 267,116 kB
  • sloc: cpp: 2,195,914; ansic: 285,452; python: 104,858; sh: 4,061; yacc: 4,035; java: 3,977; xml: 2,771; perl: 2,189; lex: 1,762; objc: 153; makefile: 150; javascript: 90; tcl: 59
file content (36 lines) | stat: -rw-r--r-- 1,019 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
#include "vtkCompositeArray.h"

#include "vtkDataArray.h"

//-----------------------------------------------------------------------
namespace vtk
{
VTK_ABI_NAMESPACE_BEGIN
template <typename T>
vtkSmartPointer<vtkCompositeArray<T>> ConcatenateDataArrays(
  const std::vector<vtkDataArray*>& arrays)
{
  if (arrays.empty())
  {
    return nullptr;
  }
  vtkIdType nComps = arrays[0]->GetNumberOfComponents();
  for (auto arr : arrays)
  {
    if (arr->GetNumberOfComponents() != nComps)
    {
      vtkErrorWithObjectMacro(nullptr, "Number of components of all the arrays are not equal");
      return nullptr;
    }
  }
  vtkNew<vtkCompositeArray<T>> composite;
  composite->SetBackend(std::make_shared<vtkCompositeImplicitBackend<T>>(arrays));
  composite->SetNumberOfComponents(nComps);
  int nTuples = 0;
  std::for_each(arrays.begin(), arrays.end(),
    [&nTuples](vtkDataArray* arr) { nTuples += arr->GetNumberOfTuples(); });
  composite->SetNumberOfTuples(nTuples);
  return composite;
}
VTK_ABI_NAMESPACE_END
}