Loading...
Searching...
No Matches
Resource.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef SFML_RESOURCE_HPP
26#define SFML_RESOURCE_HPP
27
29// Headers
31#include <set>
32
33
34namespace sf
35{
37// These two classes are defined in the same header because
38// they depend on each other. And as they're template classes,
39// they must be entirely defined in header files, which
40// prevents from proper separate compiling
42
43template <typename> class ResourcePtr;
44
49template <typename T>
51{
52protected :
53
59
66 Resource(const Resource<T>& Copy);
67
73
83
84private :
85
86 friend class ResourcePtr<T>;
87
94 void Connect(ResourcePtr<T>& Observer) const;
95
102 void Disconnect(ResourcePtr<T>& Observer) const;
103
105 // Member data
107 mutable std::set<ResourcePtr<T>*> myObservers;
108};
109
110
115template <typename T>
117{
118public :
119
125
133
141
147
157
167
177 operator const T*() const;
178
185 const T& operator *() const;
186
193 const T* operator ->() const;
194
201
202private :
203
205 // Member data
207 const T* myResource;
208};
209
210#include <SFML/System/Resource.inl>
211#include <SFML/System/ResourcePtr.inl>
212
213} // namespace sf
214
215
216#endif // SFML_RESOURCE_HPP
Safe pointer to a T resource (inheriting from sf::Resource<T>), its pointer is automatically reseted ...
Definition Resource.hpp:117
~ResourcePtr()
Destructor.
const T & operator*() const
Operator * overload to return a reference to the actual resource.
const T * operator->() const
Operator -> overload to return a pointer to the actual resource.
ResourcePtr()
Default constructor.
ResourcePtr< T > & operator=(const ResourcePtr< T > &Other)
Assignment operator from another ResourcePtr.
ResourcePtr(const T *Resource)
Construct from a raw resource.
ResourcePtr(const ResourcePtr< T > &Copy)
Copy constructor.
void OnResourceDestroyed()
Function called when the observed resource is about to be destroyed.
Base class for every resource that needs to notify dependent classes about its destruction.
Definition Resource.hpp:51
~Resource()
Destructor.
Resource< T > & operator=(const Resource< T > &Other)
Assignment operator.
Resource(const Resource< T > &Copy)
Copy constructor.
Resource()
Default constructor.