14#include "../../cppyy/CPyCppyy/src/ProxyWrappers.h"
15#include "../../cppyy/CPyCppyy/src/CPPInstance.h"
41 ObjectMap_t::iterator ppo = fObjectMap.find(cppobj);
42 if (ppo == fObjectMap.end()) {
43 fObjectMap.insert({cppobj, klass});
61 ObjectMap_t::iterator ppo = fObjectMap.find(cppobj);
62 if (ppo != fObjectMap.end()) {
63 fObjectMap.erase(ppo);
79 ObjectMap_t::iterator ppo = fObjectMap.find(cppobj);
80 if (ppo != fObjectMap.end()) {
83 fObjectMap.erase(ppo);
91 while (!fObjectMap.empty()) {
92 auto elem = fObjectMap.begin();
93 auto cppobj = elem->first;
94 auto klassid = elem->second;
102 auto o =
static_cast<TObject *
>(cppobj);
static bool RecursiveRemove(Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass)
static PyObject * RetrievePyObject(Cppyy::TCppObject_t cppobj, PyObject *pyclass)
static void SetUnregisterHook(MemHook_t h)
static void SetRegisterHook(MemHook_t h)
static bool UnregisterPyObject(CPPInstance *pyobj, PyObject *pyclass)
static std::pair< bool, bool > RegisterHook(Cppyy::TCppObject_t, Cppyy::TCppType_t)
Register a hook that Cppyy runs when constructing an object.
TMemoryRegulator()
Constructor.
virtual void RecursiveRemove(TObject *)
Get the class id of the TObject being deleted and run Cppyy's RecursiveRemove.
static ObjectMap_t fObjectMap
void ClearProxiedObjects()
Clean up all tracked objects.
static std::pair< bool, bool > UnregisterHook(Cppyy::TCppObject_t, Cppyy::TCppType_t)
Register a hook that Cppyy runs when deleting an object.
Mother of all ROOT objects.
PyObject * CreateScopeProxy(Cppyy::TCppScope_t, const unsigned flags=0)
RPY_EXPORTED bool IsSubtype(TCppType_t derived, TCppType_t base)
RPY_EXPORTED TCppScope_t GetScope(const std::string &scope_name)
std::unordered_map< Cppyy::TCppObject_t, Cppyy::TCppType_t > ObjectMap_t