VideoTools
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
gslot.cpp
Go to the documentation of this file.
1 //
2 // Copyright (C) 2017 Graeme Walker
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 
25 {
26 }
27 
28 G::Slot::SlotImpBase::SlotImpBase() : m_ref_count(1UL)
29 {
30 }
31 
33 {
34  m_ref_count++ ;
35 }
36 
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
SlotImpBase()
Default constuctor.
Definition: gslot.cpp:28
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
void up()
Increments the reference count.
Definition: gslot.cpp:32
virtual ~SlotImpBase()
Destructor.
Definition: gslot.cpp:24
void down()
Decrements the reference count and does "delete this" on zero.
Definition: gslot.cpp:37