Salome HOME
getHeapMemorySize rearch
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingCommon.i
index df1fa3a07030ee78f0944dbae0ceb6dde10f852c..4d746d201e4eade79e45050541ec03202e2acf6a 100644 (file)
@@ -558,18 +558,41 @@ namespace ParaMEDMEM
   bool MEDCouplingByteOrder();
   const char *MEDCouplingByteOrderStr();
 
-  class RefCountObject
+  class BigMemoryObject
+  {
+  public:
+    std::size_t getHeapMemorySize() const;
+    std::string getHeapMemorySizeStr() const;
+    virtual std::size_t getHeapMemorySizeWithoutChildren() const;
+    virtual ~BigMemoryObject();
+    %extend
+    {
+      virtual PyObject *getDirectChildren() const
+      {
+        std::vector<const BigMemoryObject *> c(self->getDirectChildren());
+        PyObject *ret(PyList_New(c.size()));
+        for(std::size_t i=0;i<c.size();i++)
+          PyList_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(c[i]),SWIGTYPE_p_ParaMEDMEM__BigMemoryObject, 0 | 0 ));
+        return ret;
+      }
+    }
+  };
+  
+  class RefCountObjectOnly
   {
-  protected:
-    RefCountObject();
-    RefCountObject(const RefCountObject& other);
-    ~RefCountObject();
   public:
     bool decrRef() const;
     void incrRef() const;
     int getRCValue() const;
-    std::size_t getHeapMemorySize() const;
-    std::string RefCountObject::getHeapMemorySizeStr() const;
+    RefCountObjectOnly& operator=(const RefCountObjectOnly& other);
+  protected:
+    ~RefCountObjectOnly();
+  };
+
+  class RefCountObject : public RefCountObjectOnly, public BigMemoryObject
+  {
+  protected:
+    ~RefCountObject();
   };
 }