Learn
Download
Community
Development
Home
»
Learn
»
1.6 Documentation
»
Resource.hpp Source File
Français
Donate
Documentation of SFML 1.6
Warning:
this page refers to an old version of SFML. Click here to switch to the latest version.
Main Page
Namespaces
Classes
Files
File List
sfml
sfml
include
SFML
System
Resource.hpp
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
34
namespace
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
43
template
<
typename
>
class
ResourcePtr
;
44
49
template
<
typename
T>
50
class
Resource
51
{
52
protected
:
53
58
Resource
();
59
66
Resource
(
const
Resource<T>
& Copy);
67
72
~Resource
();
73
82
Resource<T>
&
operator =
(
const
Resource<T>
& Other);
83
84
private
:
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
115
template
<
typename
T>
116
class
ResourcePtr
117
{
118
public
:
119
124
ResourcePtr
();
125
132
ResourcePtr
(
const
T*
Resource
);
133
140
ResourcePtr
(
const
ResourcePtr<T>
& Copy);
141
146
~ResourcePtr
();
147
156
ResourcePtr<T>
&
operator =
(
const
ResourcePtr<T>
& Other);
157
166
ResourcePtr<T>
&
operator =
(
const
T* Resource);
167
177
operator
const
T*()
const
;
178
185
const
T&
operator *
()
const
;
186
193
const
T*
operator ->
()
const
;
194
200
void
OnResourceDestroyed
();
201
202
private
:
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