src/misc/countedobj.cpp
author terom@frrb.lan
Fri, 19 Dec 2008 01:32:07 +0200
changeset 10438 51bff16a04c9
parent 9111 48ce04029fe4
permissions -rw-r--r--
initial mini-map stuff
7296
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     1
/* $Id$ */
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     2
9111
48ce04029fe4 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 7297
diff changeset
     3
/** @file countedobj.cpp Support for reference counted objects. */
48ce04029fe4 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 7297
diff changeset
     4
7296
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     5
#include "../stdafx.h"
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     6
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     7
#include "countedptr.hpp"
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     8
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
     9
int32 SimpleCountedObject::AddRef()
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    10
{
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    11
	return ++m_ref_cnt;
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    12
}
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    13
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    14
int32 SimpleCountedObject::Release()
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    15
{
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    16
	int32 res = --m_ref_cnt;
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    17
	assert(res >= 0);
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    18
	if (res == 0) {
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    19
		FinalRelease();
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    20
		delete this;
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    21
	}
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    22
	return res;
84069e62f29d (svn r10644) -Merge (from NoAI): framework for reference counted objects (pointers).
rubidium
parents:
diff changeset
    23
}