* Update mmanager to version from article part 5.
[matthijs/ABM2.git] / ABM2 / Engine / mmanager.h
index 28ce787b132700013d7c2102c343613543c97a6f..b8ce0779f09f070b1e02f6776af06fa5fe073d43 100755 (executable)
@@ -1,7 +1,8 @@
 #ifndef MMANAGER_H_INCLUDED\r
 #define MMANAGER_H_INCLUDED\r
 \r
-#include "engine.h"\r
+#include <list>\r
+#include <cassert>\r
 \r
 class IMMObject\r
 {\r
@@ -13,6 +14,8 @@ class IMMObject
                long refCount;\r
                bool bIsStackAllocated;\r
                static std::list<IMMObject*> heapObjects;\r
+               static unsigned long heapUsage;\r
+               unsigned long heapAllocSize;\r
        protected:\r
                IMMObject();\r
                virtual ~IMMObject();\r
@@ -40,17 +43,19 @@ public:
 \r
        ~CMMPointer(){if(obj)obj->Release();}\r
 \r
-       inline void operator =(const CMMPointer<T> &p)\r
+       inline CMMPointer<T> &operator =(const CMMPointer<T> &p)\r
        {\r
                if(obj)obj->Release();\r
                obj=p.obj;\r
                if(obj)obj->AddRef();\r
+               return *this;\r
        }\r
-       inline void operator =(T* o)\r
+       inline CMMPointer<T> &operator =(T* o)\r
        {\r
                if(obj)obj->Release();\r
                obj=o;\r
                if(obj)obj->AddRef();\r
+               return *this;\r
        }\r
 \r
        inline T& operator *() const\r