Resource 8hpp source


SFML - Simple and Fast Multimedia Library Main Page Namespaces Classes Files File List Resource.hpp00001 00002 // 00003 // SFML - Simple and Fast Multimedia Library 00004 // Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com) 00005 // 00006 // This software is provided 'as-is', without any express or implied warranty. 00007 // In no event will the authors be held liable for any damages arising from the use of this software. 00008 // 00009 // Permission is granted to anyone to use this software for any purpose, 00010 // including commercial applications, and to alter it and redistribute it freely, 00011 // subject to the following restrictions: 00012 // 00013 // 1. The origin of this software must not be misrepresented; 00014 // you must not claim that you wrote the original software. 00015 // If you use this software in a product, an acknowledgment 00016 // in the product documentation would be appreciated but is not required. 00017 // 00018 // 2. Altered source versions must be plainly marked as such, 00019 // and must not be misrepresented as being the original software. 00020 // 00021 // 3. This notice may not be removed or altered from any source distribution. 00022 // 00024 00025 #ifndef SFML_RESOURCE_HPP 00026 #define SFML_RESOURCE_HPP 00027 00029 // Headers 00031 #include <set> 00032 00033 00034 namespace sf 00035 { 00037 // These two classes are defined in the same header because 00038 // they depend on each other. And as they're template classes, 00039 // they must be entirely defined in header files, which 00040 // prevents from proper separate compiling 00042 00043 template <typename> class ResourcePtr; 00044 00049 template <typename T> 00050 class Resource 00051 { 00052 protected : 00053 00058 Resource(); 00059 00066 Resource(const Resource<T>& Copy); 00067 00072 ~Resource(); 00073 00082 Resource<T>& operator =(const Resource<T>& Other); 00083 00084 private : 00085 00086 friend class ResourcePtr<T>; 00087 00094 void Connect(ResourcePtr<T>& Observer) const; 00095 00102 void Disconnect(ResourcePtr<T>& Observer) const; 00103 00105 // Member data 00107 mutable std::set<ResourcePtr<T>*> myObservers; 00108 }; 00109 00110 00115 template <typename T> 00116 class ResourcePtr 00117 { 00118 public : 00119 00124 ResourcePtr(); 00125 00132 ResourcePtr(const T* Resource); 00133 00140 ResourcePtr(const ResourcePtr<T>& Copy); 00141 00146 ~ResourcePtr(); 00147 00156 ResourcePtr<T>& operator =(const ResourcePtr<T>& Other); 00157 00166 ResourcePtr<T>& operator =(const T* Resource); 00167 00177 operator const T*() const; 00178 00185 const T& operator *() const; 00186 00193 const T* operator ->() const; 00194 00200 void OnResourceDestroyed(); 00201 00202 private : 00203 00205 // Member data 00207 const T* myResource; 00208 }; 00209 00210 #include <SFML/System/Resource.inl> 00211 #include <SFML/System/ResourcePtr.inl> 00212 00213 } // namespace sf 00214 00215 00216 #endif // SFML_RESOURCE_HPP  ::  Copyright © 2007-2008 Laurent Gomila, all rights reserved  ::  Documentation generated by doxygen 1.5.2  :: 

Wyszukiwarka

Podobne podstrony:
Resource 8inl source
Arial 8hpp source
Sleep 8hpp source
ResourcePtr 8inl source
Win32 2Thread 8hpp source
Mutex 8hpp source
FontLoader 8hpp source
Color 8hpp source
IPAddress 8hpp source
SoundFileDefault 8hpp source
Network 8hpp source
SoundStream 8hpp source
Selector 8hpp source
VideoModeSupport 8hpp source
Matrix3 8hpp source
Randomizer 8hpp source
Context 8hpp source
Unicode 8hpp source
ImageLoader 8hpp source

więcej podobnych podstron