paludis
Version 1.4.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
paludis
util
singleton.hh
Go to the documentation of this file.
1
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3
/*
4
* Copyright (c) 2005, 2006, 2007, 2010 Ciaran McCreesh
5
*
6
* This file is part of the Paludis package manager. Paludis is free software;
7
* you can redistribute it and/or modify it under the terms of the GNU General
8
* Public License version 2, as published by the Free Software Foundation.
9
*
10
* Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
* details.
14
*
15
* You should have received a copy of the GNU General Public License along with
16
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17
* Place, Suite 330, Boston, MA 02111-1307 USA
18
*/
19
20
#ifndef PALUDIS_GUARD_PALUDIS_SINGLETON_HH
21
#define PALUDIS_GUARD_PALUDIS_SINGLETON_HH 1
22
23
#include <
paludis/util/attributes.hh
>
24
25
/** \file
26
* Singleton pattern.
27
*
28
* \ingroup g_oo
29
*
30
* \section Examples
31
*
32
* - None at this time.
33
*/
34
35
namespace
paludis
36
{
37
/**
38
* Singletons have a single instance and are created when first used.
39
*
40
* \ingroup g_oo
41
* \nosubgrouping
42
*/
43
template
<
typename
OurType_>
44
class
PALUDIS_VISIBLE
Singleton
45
{
46
private
:
47
static
OurType_ * * _get_instance_ptr();
48
49
class
DeleteOnDestruction;
50
friend
class
DeleteOnDestruction;
51
52
static
void
_delete(OurType_ *
const
p);
53
54
class
DeleteOnDestruction;
55
56
public
:
57
///\name Basic operations
58
///\{
59
60
Singleton
() =
default
;
61
Singleton
(
const
Singleton
&) =
delete
;
62
const
Singleton
& operator= (
const
Singleton
&) =
delete
;
63
64
///\}
65
66
///\name Singleton operations
67
///\{
68
69
/**
70
* Fetch our instance.
71
*/
72
static
OurType_ * get_instance()
73
PALUDIS_ATTRIBUTE
((warn_unused_result));
74
75
/**
76
* Destroy our instance.
77
*/
78
static
void
destroy_instance();
79
80
///\}
81
};
82
}
83
84
#endif
Generated on Thu May 16 2013 14:09:43 for paludis by
1.8.3.1