MCPcopy Create free account
hub / github.com/Kitware/VTK / RemoveObjectFromMap

Method RemoveObjectFromMap

Wrapping/PythonCore/vtkPythonUtil.cxx:325–382  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

323
324//------------------------------------------------------------------------------
325void vtkPythonUtil::RemoveObjectFromMap(PyObject* obj)
326{
327 PyVTKObject* pobj = (PyVTKObject*)obj;
328
329#ifdef VTKPYTHONDEBUG
330 vtkGenericWarningMacro("Deleting an object from map obj = " << pobj << " " << pobj->vtk_ptr);
331#endif
332
333 if (vtkPythonMap && vtkPythonMap->ObjectMap->count(pobj->vtk_ptr))
334 {
335 vtkWeakPointerBase wptr;
336
337 // check for customized class or dict
338 if (pobj->vtk_class->py_type != Py_TYPE(pobj) || PyDict_Size(pobj->vtk_dict))
339 {
340 wptr = pobj->vtk_ptr;
341 }
342
343 vtkPythonMap->ObjectMap->remove(pobj->vtk_ptr);
344
345 // if the VTK object still exists, then make a ghost
346 if (wptr.GetPointer())
347 {
348 // List of attrs to be deleted
349 std::vector<PyObject*> delList;
350
351 // Erase ghosts of VTK objects that have been deleted
352 vtkPythonGhostMap::iterator i = vtkPythonMap->GhostMap->begin();
353 while (i != vtkPythonMap->GhostMap->end())
354 {
355 if (!i->second.vtk_ptr.GetPointer())
356 {
357 delList.push_back((PyObject*)i->second.vtk_class);
358 delList.push_back(i->second.vtk_dict);
359 vtkPythonMap->GhostMap->erase(i++);
360 }
361 else
362 {
363 ++i;
364 }
365 }
366
367 // Add this new ghost to the map
368 PyVTKObjectGhost& g = (*vtkPythonMap->GhostMap)[pobj->vtk_ptr];
369 g.vtk_ptr = wptr;
370 g.vtk_class = Py_TYPE(pobj);
371 g.vtk_dict = pobj->vtk_dict;
372 Py_INCREF(g.vtk_class);
373 Py_INCREF(g.vtk_dict);
374
375 // Delete attrs of erased objects. Must be done at the end.
376 for (size_t j = 0; j < delList.size(); j++)
377 {
378 Py_DECREF(delList[j]);
379 }
380 }
381 }
382}

Callers

nothing calls this directly

Calls 8

countMethod · 0.45
removeMethod · 0.45
GetPointerMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
eraseMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected