* Update mmanager to version from article part 5.
[matthijs/ABM2.git] / ABM2 / Engine / mmanager.h
index 0a8211be4e68b006b6b0b58fd2a73aa145135c5b..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
@@ -111,4 +116,4 @@ class CMMDynamicBlob : public IMMObject
        unsigned long blobsize(){return dataSize;}\r
 };\r
 \r
-#endif
\ No newline at end of file
+#endif\r