15 #ifndef vtkPVDataDeliveryManagerInternals_h 16 #define vtkPVDataDeliveryManagerInternals_h 36 std::map<int, vtkSmartPointer<vtkDataObject>> EmptyDataObjectTypes;
45 if (iter != this->EmptyDataObjectTypes.end())
84 std::map<double, vtkRepresentedData> Data;
95 auto& store = this->Data[cacheKey];
98 store.DataObject.TakeReference(data->
NewInstance());
99 store.DataObject->ShallowCopy(data);
103 store.DataObject =
nullptr;
106 store.DeliveredDataObjects.clear();
118 this->Producer->
SetOutput(helper->GetEmptyDataObject(data));
122 store.TimeStamp = ts;
128 auto& store = this->Data[cacheKey];
129 store.ActualMemorySize = size;
134 auto iter = this->Data.find(cacheKey);
135 return iter != this->Data.end() ? iter->second.ActualMemorySize : 0;
142 const auto& store = this->Data.at(cacheKey);
143 return store.DeliveredDataObjects.at(dataKey);
145 catch (std::out_of_range&)
153 auto& store = this->Data[cacheKey];
154 store.DeliveredDataObjects[dataKey] = data;
160 vtkDataObject* cur = this->GetDeliveredDataObject(dataKey, cacheKey);
162 if (cur != prev && cur !=
nullptr)
173 auto iter = this->Data.find(cacheKey);
174 return iter != this->Data.end() ? iter->second.DataObject.GetPointer() :
nullptr;
179 auto iter = this->Data.find(cacheKey);
180 return iter != this->Data.end() ? iter->second.TimeStamp :
vtkMTimeType{ 0 };
185 auto& store = this->Data[cacheKey];
186 if (store.Information ==
nullptr)
190 return store.Information;
196 if (
auto dobj = this->GetDeliveredDataObject(dataKey, cacheKey))
198 return dobj->GetMTime();
206 typedef std::map<ReprPortType, std::pair<vtkItem, vtkItem>>
ItemsMapType;
211 vtkItem*
GetItem(
unsigned int index,
bool use_second,
int port,
bool create_if_needed =
false)
213 ReprPortType
key(index, port);
214 ItemsMapType::iterator items = this->
ItemsMap.find(key);
217 return use_second ? &(items->second.second) : &(items->second.first);
219 else if (create_if_needed)
221 std::pair<vtkItem, vtkItem>& itemsPair = this->
ItemsMap[key];
222 return use_second ? &(itemsPair.second) : &(itemsPair.first);
237 [&id](
int sum,
const ItemsMapType::value_type& item_pair) {
238 return sum + (item_pair.first.first ==
id ? 1 : 0);
244 unsigned long size = 0;
245 ItemsMapType::iterator iter;
248 const ReprPortType&
key = iter->first;
256 assert(repr !=
nullptr);
259 if (use_second_if_available && iter->second.second.GetDataObject(cacheKey))
261 size += iter->second.second.GetActualMemorySize(cacheKey);
265 size += iter->second.first.GetActualMemorySize(cacheKey);
274 return (riter != this->
RepresentationsMap.end() && riter->second.GetPointer() !=
nullptr &&
275 riter->second->GetVisibility());
283 if (ipair.first.first ==
id)
285 ipair.second.first.ClearCache();
286 ipair.second.second.ClearCache();
bool IsRepresentationVisible(unsigned int id) const
manager for data-delivery.
void SetDataObject(vtkDataObject *data, vtkInternals *helper, double cacheKey)
std::map< ReprPortType, std::pair< vtkItem, vtkItem > > ItemsMapType
RepresentationsMapType RepresentationsMap
void SetOutput(vtkDataObject *output) override
Set the data object that is "produced" by this producer.
vtkSmartPointer< vtkInformation > Information
vtkItem * GetItem(vtkPVDataRepresentation *repr, bool use_second, int port, bool create_if_needed=false)
vtkSmartPointer< vtkDataObject > DataObject
unsigned long GetVisibleDataSize(bool use_second_if_available, vtkPVDataDeliveryManager *dmgr)
vtkPVDataRepresentation adds some ParaView specific API to data representations.
void ClearCache(vtkPVDataRepresentation *repr)
vtkPVTrivialProducer * GetProducer(int dataKey, double cacheKey)
double GetCacheKey(vtkPVDataRepresentation *repr) const
void SetActualMemorySize(unsigned long size, double cacheKey)
vtkDataObject * GetOutputDataObject(int port)
static vtkSmartPointer< T > New()
vtkTypeUInt64 vtkMTimeType
vtkMTimeType ActualMemorySize
vtkMTimeType GetTimeStamp() const
vtkDataObject * GetDataObject(double cacheKey) const
unsigned int GetUniqueIdentifier()
Return 0 if the Initialize() method was not called otherwise a unique ID that will be shared across t...
vtkDataObject * NewInstance() const
specialized subclass of vtkTrivialProducer that preserves the information about the whole extent of t...
std::map< unsigned int, vtkWeakPointer< vtkPVDataRepresentation > > RepresentationsMapType
void SetDeliveredDataObject(int dataKey, double cacheKey, vtkDataObject *data)
vtkInformation * GetPieceInformation(double cacheKey)
unsigned long GetActualMemorySize(double cacheKey) const
virtual unsigned long GetActualMemorySize()
void TakeReference(vtkDataObject *t)
vtkMTimeType GetTimeStamp(double cacheKey) const
int GetNumberOfPorts(vtkPVDataRepresentation *repr)
vtkDataObject * GetDeliveredDataObject(int dataKey, double cacheKey) const
virtual int GetDataObjectType()
std::pair< unsigned int, int > ReprPortType
vtkItem * GetItem(unsigned int index, bool use_second, int port, bool create_if_needed=false)
vtkMTimeType GetDeliveryTimeStamp(int dataKey, double cacheKey) const
std::map< int, vtkSmartPointer< vtkDataObject > > DeliveredDataObjects
void ClearCache(unsigned int id)