blob: d3ac0391585208309a631346436866b83a353e66 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/**
\file G3D/ReferenceCount.h
Reference Counting Garbage Collector for C++
\maintainer Morgan McGuire, http://graphics.cs.williams.edu
\created 2001-10-23
\edited 2013-01-05
*/
#ifndef G3D_ReferenceCount_h
#define G3D_ReferenceCount_h
#include "G3D/platform.h"
#include "G3D/debug.h"
#include "G3D/AtomicInt32.h"
#define USE_SHARED_PTR
#define ReferenceCountedPointer shared_ptr
#define WeakReferenceCountedPointer weak_ptr
namespace G3D {
class ReferenceCountedObject : public enable_shared_from_this<ReferenceCountedObject> {
public:
virtual ~ReferenceCountedObject() {};
};
} // namespace
namespace G3D {
template<class T>
bool isNull(const ReferenceCountedPointer<T>& ptr) {
return ! ptr;
}
template<class T>
bool notNull(const ReferenceCountedPointer<T>& ptr) {
return (bool)ptr;
}
template<class T>
bool isNull(const T* ptr) {
return ptr == NULL;
}
template<class T>
bool notNull(const T* ptr) {
return ptr != NULL;
}
} // namespace
#endif
|