aboutsummaryrefslogtreecommitdiff
path: root/src/tests/sptr.cpp
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2006-11-24 10:40:34 +0000
committerMike Buland <eichlan@xagasoft.com>2006-11-24 10:40:34 +0000
commite19acafd485a1c6a027bc967945d914fa5ed38b9 (patch)
treea9651e0065a758d0cfabbef3082c27440309a94f /src/tests/sptr.cpp
parent708d358460724d37e671e5f2a95353010135b0db (diff)
downloadlibbu++-e19acafd485a1c6a027bc967945d914fa5ed38b9.tar.gz
libbu++-e19acafd485a1c6a027bc967945d914fa5ed38b9.tar.bz2
libbu++-e19acafd485a1c6a027bc967945d914fa5ed38b9.tar.xz
libbu++-e19acafd485a1c6a027bc967945d914fa5ed38b9.zip
Added a simple smart-pointer. It deletes what's in it automatically and does
ref-counting. You just have to be careful to not hand it an array...
Diffstat (limited to '')
-rw-r--r--src/tests/sptr.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/tests/sptr.cpp b/src/tests/sptr.cpp
new file mode 100644
index 0000000..38d3675
--- /dev/null
+++ b/src/tests/sptr.cpp
@@ -0,0 +1,55 @@
1#include <stdio.h>
2#include "sptr.h"
3
4class Annoy
5{
6public:
7 Annoy() : nCnt( 0 )
8 {
9 printf("Created.\n");
10 }
11
12 ~Annoy()
13 {
14 printf("Destroyed.\n");
15 }
16
17 void go()
18 {
19 printf("%d: I'm annoying.\n", ++nCnt);
20 }
21
22 int nCnt;
23};
24
25void beAnnoying( SPtr<Annoy> bob )
26{
27 printf("bob-Count: %d\n", bob.count() );
28 bob->go();
29}
30
31int main()
32{
33 SPtr<Annoy> pt( new Annoy );
34 printf("Count: %d\n", pt.count() );
35 pt->go();
36
37 {
38 SPtr<Annoy> pt2 = pt;
39 printf("Count: %d\n", pt2.count() );
40
41 pt2->go();
42
43 {
44 SPtr<Annoy> pt3( pt2 );
45 printf("Count: %d\n", pt3.count() );
46
47 pt3->go();
48
49 beAnnoying( pt3 );
50 }
51 printf("Count: %d\n", pt.count() );
52 }
53 printf("Count: %d\n", pt.count() );
54}
55