VTK  9.7.1
vtkSortDataArray.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright 2003 Sandia Corporation
3 // SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
4 
49 #ifndef vtkSortDataArray_h
50 #define vtkSortDataArray_h
51 
52 #include "vtkCommonCoreModule.h" // For export macro
53 #include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0
54 #include "vtkObject.h"
55 
56 VTK_ABI_NAMESPACE_BEGIN
57 class vtkIdList;
58 class vtkAbstractArray;
59 
60 class VTKCOMMONCORE_EXPORT vtkSortDataArray : public vtkObject
61 {
62 public:
64 
68  static vtkSortDataArray* New();
69  vtkTypeMacro(vtkSortDataArray, vtkObject);
70  void PrintSelf(ostream& os, vtkIndent indent) override;
72 
77  static void Sort(vtkIdList* keys) { vtkSortDataArray::Sort(keys, 0); }
78  static void Sort(vtkAbstractArray* keys) { vtkSortDataArray::Sort(keys, 0); }
79 
81 
85  static void Sort(vtkIdList* keys, int dir);
86  static void Sort(vtkAbstractArray* keys, int dir);
88 
95  static void Sort(vtkAbstractArray* keys, vtkAbstractArray* values)
96  {
97  vtkSortDataArray::Sort(keys, values, 0);
98  }
99  static void Sort(vtkAbstractArray* keys, vtkIdList* values)
100  {
101  vtkSortDataArray::Sort(keys, values, 0);
102  }
103 
105 
111  static void Sort(vtkAbstractArray* keys, vtkAbstractArray* values, int dir);
112  static void Sort(vtkAbstractArray* keys, vtkIdList* values, int dir);
114 
122  static void SortArrayByComponent(vtkAbstractArray* arr, int k)
123  {
125  }
126 
134  static void SortArrayByComponent(vtkAbstractArray* arr, int k, int dir);
135 
137 
159  static vtkIdType* InitializeSortIndices(vtkIdType numKeys);
160  static void GenerateSortIndices(vtkAbstractArray* arr, int k, vtkIdType* idx);
161  VTK_DEPRECATED_IN_9_7_0("Use the overload that takes vtkAbstractArray*")
162  static void GenerateSortIndices(
163  int dataType, void* dataIn, vtkIdType numKeys, int numComp, int k, vtkIdType* idx);
164  static void ShuffleArray(vtkAbstractArray* arr, vtkIdType* idx, int dir);
165  VTK_DEPRECATED_IN_9_7_0("Use the overload that takes vtkAbstractArray*")
166  static void ShuffleArray(vtkIdType* idx, int vtkNotUsed(dataType), vtkIdType vtkNotUsed(numKeys),
167  int vtkNotUsed(numComp), vtkAbstractArray* arr, void* vtkNotUsed(dataIn), int dir)
168  {
169  vtkSortDataArray::ShuffleArray(arr, idx, dir);
170  }
171  static void ShuffleIdList(
172  vtkIdType* idx, vtkIdType sze, vtkIdList* arrayIn, vtkIdType* dataIn, int dir);
174 
175 protected:
177  ~vtkSortDataArray() override;
178 
179  // A more efficient sort for single component arrays. This is delegated to
180  // by the methods above (if appropriate).
181  static void GenerateSort1Indices(vtkAbstractArray* arr, vtkIdType* idx);
182  VTK_DEPRECATED_IN_9_7_0("Use the overload that takes vtkAbstractArray*")
183  static void GenerateSort1Indices(int dataType, void* dataIn, vtkIdType numKeys, vtkIdType* idx);
184 
185  // A more efficient shuffle for single component arrays. This is delegated to
186  // by the methods above (if appropriate).
187  static void Shuffle1Array(vtkAbstractArray* arr, vtkIdType* idx, int dir);
188  VTK_DEPRECATED_IN_9_7_0("Use the overload that does not take void*")
189  static void Shuffle1Array(vtkIdType* idx, int vtkNotUsed(dataType), vtkIdType vtkNotUsed(numKeys),
190  vtkAbstractArray* arr, void* vtkNotUsed(dataIn), int dir)
191  {
192  vtkSortDataArray::Shuffle1Array(arr, idx, dir);
193  }
194 
195 private:
196  vtkSortDataArray(const vtkSortDataArray&) = delete;
197  void operator=(const vtkSortDataArray&) = delete;
198 };
199 
200 VTK_ABI_NAMESPACE_END
201 #endif // vtkSortDataArray_h
static void Sort(vtkAbstractArray *keys, vtkAbstractArray *values)
Sorts the given key/value pairs based on the keys (the keys are expected to be 1-tuples, values may have number of components >= 1).
abstract base class for most VTK objects
Definition: vtkObject.h:52
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Abstract superclass for all arrays.
static void Sort(vtkAbstractArray *keys, vtkIdList *values)
static void SortArrayByComponent(vtkAbstractArray *arr, int k)
Sorts the given data array using the specified component as a key.
void Sort(RandomIt bitr, RandomIt eitr, BackToFront< T > &me)
int vtkIdType
Definition: vtkType.h:363
a simple class to control print indentation
Definition: vtkIndent.h:28
list of point or cell ids
Definition: vtkIdList.h:25
static void ShuffleArray(vtkAbstractArray *arr, vtkIdType *idx, int dir)
The following are general functions which can be used to produce an ordering, and/or sort various typ...
static void Sort(vtkAbstractArray *keys)
static void Shuffle1Array(vtkAbstractArray *arr, vtkIdType *idx, int dir)
static void Sort(vtkIdList *keys)
Sorts the given array in ascending order.
provides several methods for sorting VTK arrays.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
#define VTK_DEPRECATED_IN_9_7_0(reason)