blob: a54c55b756902bb3cfab04f9ee6d6119f0ac86d0 (
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
|
#ifndef BU_CACHABLE_H
#define BU_CACHABLE_H
namespace Bu
{
class Cachable
{
public:
Cachable();
virtual ~Cachable();
virtual long getCacheId() const =0;
};
template<class obtype> long getCacheId( const obtype *o );
template<> long getCacheId<Cachable>( const Cachable *o );
};
#define DECL_CACHABLE( name ) \
namespace Bu { template<> long getCacheId<name>( const name *o ); }
#define DEF_CACHABLE( name ) \
template<> long Bu::getCacheId<name>( const name *o ) \
{ \
return getCacheId<Bu::Cachable>( (Bu::Cachable *)o ); \
}
#endif
|