E-MailRelay

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

gslot.cpp
Go to the documentation of this file.
1 //
2 // Copyright (C) 2001-2018 Graeme Walker <graeme_walker@users.sourceforge.net>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 // ===
17 //
18 // gslot.cpp
19 //
20
21 #include "gdef.h"
22 #include "gslot.h"
23
24 G::Slot::SlotImpBase::~SlotImpBase()
25 {
26 }
27
28 G::Slot::SlotImpBase::SlotImpBase() : m_ref_count(1UL)
29 {
30 }
31
32 void G::Slot::SlotImpBase::up()
33 {
34 m_ref_count++ ;
35 }
36
37 void G::Slot::SlotImpBase::down()
38 {
39 m_ref_count-- ;
40 if( m_ref_count == 0UL )
41 delete this ;
42 }
43
44 // ===
45
46 void G::Slot::SignalImp::check( const SlotImpBase * p )
47 {
48 if( p != nullptr )
49 throw AlreadyConnected() ;
50 }
51
52 /// \file gslot.cpp
G::Slot::SlotImpBase::SlotImpBase
SlotImpBase()
Default constuctor.
Definition: gslot.cpp:28
gslot.h
G::Slot::SlotImpBase
Used as a base class to all slot implementation classes (such as G::Slot::SlotImp1), allowing them to be used as bodies to the associated slot reference-counting handle class (eg.
Definition: gslot.h:108
G::Slot::SlotImpBase::up
void up()
Increments the reference count.
Definition: gslot.cpp:32
G::Slot::SlotImpBase::~SlotImpBase
virtual ~SlotImpBase()
Destructor.
Definition: gslot.cpp:24
G::Slot::SlotImpBase::down
void down()
Decrements the reference count and does "delete this" on zero.
Definition: gslot.cpp:37