blob: 55ec5be1e31c39706a380324f1587ac74f3afeeb (
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#include <stdio.h>
#include "bu/cache.h"
class Bob
{
public:
Bob()
{
TRACE();
}
virtual ~Bob()
{
TRACE();
}
void setInt( int i )
{
TRACE();
iInt = i;
}
int getInt()
{
return iInt;
}
long getCacheId() const
{
TRACE();
return 0;
}
int iInt;
};
class BobHandler : public Bu::CacheHandler<Bob>
{
public:
BobHandler() :
cLastId( 0 )
{
}
~BobHandler()
{
}
virtual Bu::CPtr<Bob> load()
{
}
virtual void unload( Bu::CPtr<Bob> pObj )
{
}
virtual Bu::CPtr<Bob> create()
{
}
virtual Bu::CPtr<Bob> create( Bob &rSrc )
{
}
virtual void destroy( Bu::CPtr<Bob> pObj )
{
}
private:
Bu::Cache<Bob>::cid_t cLastId;
};
int main()
{
typedef Bu::Cache<Bob> BobCache;
typedef Bu::CPtr<Bob> BobPtr;
BobCache bobCache;
BobPtr pB1 = bobCache.insert( new Bob() );
(*pB1).setInt( 44 );
printf("RefCnt = %d\n", bobCache.getRefCnt( 0 ) );
BobPtr pB2 = bobCache.get( 0 );
printf("RefCnt = %d\n", bobCache.getRefCnt( 0 ) );
printf("Int = %d\n", pB2->getInt() );
}
|