4 #ifndef PYROOT_TMEMORYREGULATOR_H
5 #define PYROOT_TMEMORYREGULATOR_H
11 #include <unordered_map>
24 class TMemoryRegulator :
public TObject {
30 virtual void RecursiveRemove( TObject*
object );
33 void ClearProxiedObjects();
36 static Bool_t RegisterObject( ObjectProxy* pyobj, TObject*
object );
39 static Bool_t UnregisterObject( TObject*
object );
42 static PyObject* RetrieveObject( TObject*
object, Cppyy::TCppType_t klass );
45 static PyObject* ObjectEraseCallback( PyObject*, PyObject* pyref );
48 typedef std::unordered_map< TObject*, PyObject* > ObjectMap_t;
49 typedef std::unordered_map< PyObject*, ObjectMap_t::iterator > WeakRefMap_t;
51 static ObjectMap_t* fgObjectTable;
52 static WeakRefMap_t* fgWeakRefTable;
57 #endif // !PYROOT_TMEMORYREGULATOR_H