00001 #ifndef _VRJGA_REFERENCED_
00002 #define _VRJGA_REFERENCED_
00003
00004 #include "vrjGA.h"
00005
00006 #include "boost/intrusive_ptr.hpp"
00007
00008 namespace vrjGA
00009 {
00010
00011 class VRJ_GA_EXPORT Referenced
00012 {
00013 public:
00014 void ref();
00015 void unref();
00016
00017 protected:
00018 Referenced();
00019 virtual ~Referenced();
00020
00021 private:
00022 unsigned int _refCount;
00023 };
00024
00025 };
00026
00027 namespace boost
00028 {
00029 void VRJ_GA_EXPORT intrusive_ptr_add_ref(vrjGA::Referenced*);
00030 void VRJ_GA_EXPORT intrusive_ptr_release(vrjGA::Referenced*);
00031 };
00032
00033 #define VRJGA_DECLARE_POINTER(classname) \
00034 typedef boost::intrusive_ptr<classname> Ptr
00035
00036
00037 #endif