VTK  9.6.20260422
vtkDataObjectMeshCache.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef vtkDataObjectMeshCache_h
5#define vtkDataObjectMeshCache_h
6
7#include "vtkFiltersTemporalModule.h" // Export macro
8
9#include "vtkAlgorithm.h" // for algorithm
10#include "vtkObject.h"
11#include "vtkSmartPointer.h" // for smart pointer
12#include "vtkWeakPointer.h" // for weak pointer
13
14#include <set> // for set
15#include <string> // for string
16
17VTK_ABI_NAMESPACE_BEGIN
18
19class vtkDataObject;
20class vtkDataSet;
22
72class VTKFILTERSTEMPORAL_EXPORT vtkDataObjectMeshCache : public vtkObject
73{
74public:
77 void PrintSelf(ostream& os, vtkIndent indent) override;
78
85 struct Status
86 {
90 bool OriginalDataDefined = false;
94 bool ConsumerDefined = false;
99 bool CacheDefined = false;
107 bool ConsumerUnmodified = false;
112
116 bool enabled()
117 {
118 return this->OriginalDataDefined && this->ConsumerDefined && this->CacheDefined &&
119 this->ConsumerUnmodified && this->OriginalMeshUnmodified && this->AttributesIdsExists;
120 }
121
126 bool operator==(const Status& other) const
127 {
128 return other.OriginalDataDefined == this->OriginalDataDefined &&
129 other.ConsumerDefined == this->ConsumerDefined &&
130 other.CacheDefined == this->CacheDefined &&
131 other.OriginalMeshUnmodified == this->OriginalMeshUnmodified &&
132 other.ConsumerUnmodified == this->ConsumerUnmodified &&
133 other.AttributesIdsExists == this->AttributesIdsExists;
134 }
135
140 bool operator!=(const Status& other) const { return !(*this == other); }
141
145 void PrintSelf(ostream& os, vtkIndent indent);
146 };
147
152
157 vtkSetSmartPointerMacro(Consumer, vtkAlgorithm);
158
169
177
181 void AddOriginalIds(int attribute, const std::string& name);
182
187 void RemoveOriginalIds(int attribute);
188
194
198 void ForwardAttribute(int attribute);
199
207 vtkSetMacro(PreserveAttributes, bool);
208 vtkGetMacro(PreserveAttributes, bool);
209 vtkBooleanMacro(PreserveAttributes, bool);
211
215 static std::string GetTemporaryIdsName();
216
223
230
238
245
252
257 void UpdateCache(vtkDataObject* newObject);
258
264
268 bool IsSupportedData(vtkDataObject* dataobject) const;
269
270protected:
272 ~vtkDataObjectMeshCache() override = default;
279 void ForwardAttributes(vtkDataSet* input, vtkDataSet* cache, vtkDataSet* output, int attribute,
280 const std::string& name);
284
285private:
287 void operator=(const vtkDataObjectMeshCache&) = delete;
288
292 vtkDataObject* GetOriginalDataObject() const;
293
297 vtkMTimeType GetOriginalMeshTime() const;
298
305 vtkIdType GetNumberOfDataSets(vtkDataObject* dataobject) const;
306
313 bool CacheHasRequestedIds() const;
314
318 void ClearAttributes(vtkDataObject*);
319
324 bool HasConsumerNoInputPort() const;
325
328 vtkWeakPointer<vtkDataSet> OriginalDataSet;
329 vtkWeakPointer<vtkCompositeDataSet> OriginalCompositeDataSet;
330 vtkMTimeType CachedOriginalMeshTime = 0;
331 vtkMTimeType CachedConsumerTime = 0;
332 std::map<int, std::string> OriginalIdsName;
333 bool PreserveAttributes = false;
334};
335
336VTK_ABI_NAMESPACE_END
337#endif
abstract superclass for composite (multi-block or AMR) datasets
~vtkDataObjectMeshCache() override=default
void ForwardAttribute(int attribute)
Add attribute in the forward list.
static vtkMTimeType GetDataObjectMeshMTime(vtkDataObject *object)
Return the mesh MTime for the given dataobject, as used for the Cache.
void CopyCacheToDataObject(vtkDataObject *output)
Fill given dataset with cached data.
void RemoveOriginalIds(int attribute)
Remove ids array name for attribute type.
static void CreateTemporaryOriginalIdsArrays(vtkDataObject *object)
Add an ids array on underlying PointData and CellData.
void ForwardAttributesToDataSet(vtkDataSet *input, vtkDataSet *cache, vtkDataSet *output)
Forward dataset attributes from OriginalDataObject to output.
void ForwardAttributes(vtkDataSet *input, vtkDataSet *cache, vtkDataSet *output, int attribute, const std::string &name)
Forward dataset attributes from OriginalDataObject to output.
void UpdateCache(vtkDataObject *newObject)
Set given dataset as the new Cache.
vtkDataObjectMeshCache()=default
static void CleanupTemporaryOriginalIds(vtkDataObject *object)
Cleanup the temporary array, as we do not want it to exists outside of this filter.
void SetOriginalDataObject(vtkDataObject *original)
Set the original dataobject.
void InvalidateCache()
Invalidate cache.
void ForwardAttributesToComposite(vtkCompositeDataSet *input, vtkCompositeDataSet *output)
Forward dataset attributes from OriginalDataObject to output.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ClearOriginalIds()
Clear all original ids.
void AddOriginalIds(int attribute, const std::string &name)
Original Ids.
static vtkDataObjectMeshCache * New()
static std::string GetTemporaryIdsName()
Return a default name for original ids.
Status GetStatus() const
Compute and returns the current cache status.
bool IsSupportedData(vtkDataObject *dataobject) const
Return true if dataobject is of a supported type.
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
a simple class to control print indentation
Definition vtkIndent.h:108
Hold a reference to a vtkObjectBase instance.
a weak reference to a vtkObject.
Structure to handle the current cache status.
bool OriginalMeshUnmodified
True if OriginalDataSet mesh was not modified since last cache update.
void PrintSelf(ostream &os, vtkIndent indent)
Print members.
bool OriginalDataDefined
True if OriginalDataObject is set.
bool operator==(const Status &other) const
Return true if and only if every members are equals.
bool CacheDefined
True if Cache with initialized.
bool ConsumerDefined
True if Consumer is set.
bool operator!=(const Status &other) const
Return true if both object are not equals.
bool ConsumerUnmodified
True if Consumer was not modified since last cache update.
bool AttributesIdsExists
True if attributes ids exists.
bool enabled()
Return true if the cache can safely and meaningfully be used.
int vtkIdType
Definition vtkType.h:363
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define vtkAlgorithm