3 #ifndef vtkPVDataDeliveryManagerInternals_h
4 #define vtkPVDataDeliveryManagerInternals_h
24 std::map<int, vtkSmartPointer<vtkDataObject>> EmptyDataObjectTypes;
33 if (iter != this->EmptyDataObjectTypes.end())
72 std::map<double, vtkRepresentedData> Data;
83 auto& store = this->Data[cacheKey];
86 store.DataObject.TakeReference(
data->NewInstance());
87 store.DataObject->ShallowCopy(
data);
91 store.DataObject =
nullptr;
94 store.DeliveredDataObjects.clear();
95 store.ActualMemorySize =
data ?
data->GetActualMemorySize() : 0;
110 store.TimeStamp = ts;
111 this->TimeStamp = ts;
116 auto& store = this->Data[cacheKey];
117 store.ActualMemorySize =
size;
122 auto iter = this->Data.find(cacheKey);
123 return iter != this->Data.end() ? iter->second.ActualMemorySize : 0;
130 const auto& store = this->Data.at(cacheKey);
131 return store.DeliveredDataObjects.at(dataKey);
133 catch (std::out_of_range&)
141 auto& store = this->Data[cacheKey];
142 store.DeliveredDataObjects[dataKey] =
data;
150 if (cur != prev && cur !=
nullptr)
161 auto iter = this->Data.find(cacheKey);
162 return iter != this->Data.end() ? iter->second.DataObject.GetPointer() :
nullptr;
167 auto iter = this->Data.find(cacheKey);
168 return iter != this->Data.end() ? iter->second.TimeStamp :
vtkMTimeType{ 0 };
173 auto& store = this->Data[cacheKey];
174 if (store.Information ==
nullptr)
178 return store.Information;
186 return dobj->GetMTime();
194 typedef std::map<ReprPortType, std::pair<vtkItem, vtkItem>>
ItemsMapType;
199 vtkItem*
GetItem(
unsigned int index,
bool use_second,
int port,
bool create_if_needed =
false)
202 ItemsMapType::iterator items = this->
ItemsMap.find(key);
205 return use_second ? &(items->second.second) : &(items->second.first);
207 else if (create_if_needed)
209 std::pair<vtkItem, vtkItem>& itemsPair = this->
ItemsMap[key];
210 return use_second ? &(itemsPair.second) : &(itemsPair.first);
224 return std::accumulate(this->
ItemsMap.begin(), this->ItemsMap.end(), 0,
225 [&
id](
int sum,
const ItemsMapType::value_type& item_pair) {
226 return sum + (item_pair.first.first == id ? 1 : 0);
232 unsigned long size = 0;
233 ItemsMapType::iterator iter;
234 for (iter = this->
ItemsMap.begin(); iter != this->ItemsMap.end(); ++iter)
244 assert(repr !=
nullptr);
247 if (use_second_if_available && iter->second.second.GetDataObject(cacheKey))
249 size += iter->second.second.GetActualMemorySize(cacheKey);
253 size += iter->second.first.GetActualMemorySize(cacheKey);
262 return (riter != this->
RepresentationsMap.end() && riter->second.GetPointer() !=
nullptr &&
263 riter->second->GetVisibility());
271 if (ipair.first.first ==
id)
273 ipair.second.first.ClearCache();
274 ipair.second.second.ClearCache();