00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025
00027 template <typename T>
00028 Resource<T>::Resource()
00029 {
00030
00031 }
00032
00033
00035 template <typename T>
00036 Resource<T>::Resource(const Resource<T>&)
00037 {
00038
00039 }
00040
00041
00043 template <typename T>
00044 Resource<T>::~Resource()
00045 {
00046
00047 for (typename std::set<ResourcePtr<T>*>::iterator i = myObservers.begin(); i != myObservers.end(); ++i)
00048 {
00049 (*i)->OnResourceDestroyed();
00050 }
00051 }
00052
00053
00055 template <typename T>
00056 Resource<T>& Resource<T>::operator =(const Resource<T>&)
00057 {
00058
00059 return *this;
00060 }
00061
00062
00064 template <typename T>
00065 void Resource<T>::Connect(ResourcePtr<T>& observer) const
00066 {
00067 sf::Lock lock(myMutex);
00068 myObservers.insert(&observer);
00069 }
00070
00071
00073 template <typename T>
00074 void Resource<T>::Disconnect(ResourcePtr<T>& observer) const
00075 {
00076 sf::Lock lock(myMutex);
00077 myObservers.erase(&observer);
00078 }