00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_INTERNAL_UTIL_GENERICRESOURCE_H_
00019 #define _DECAF_INTERNAL_UTIL_GENERICRESOURCE_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 #include <decaf/internal/util/Resource.h>
00024
00025 namespace decaf {
00026 namespace internal {
00027 namespace util {
00028
00035 template<typename T>
00036 class GenericResource: public Resource {
00037 private:
00038
00039 T* managed;
00040
00041 private:
00042
00043 GenericResource(const GenericResource&);
00044 GenericResource& operator=(const GenericResource&);
00045
00046 public:
00047
00048 explicit GenericResource(T* value) : managed(value) {
00049 }
00050
00051 virtual ~GenericResource() {
00052 try {
00053 delete managed;
00054 } catch (...) {
00055 }
00056 }
00057
00058 T* getManaged() const {
00059 return this->managed;
00060 }
00061
00062 void setManaged(T* value) {
00063 this->managed = value;
00064 }
00065
00066 };
00067
00068 }}}
00069
00070 #endif