1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
/*
$Id: slot_generic.h,v 1.8 2001/09/22 15:52:17 plasmoid Exp $
------------------------------------------------------------------------
ClanLib, the platform independent game SDK.
This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
version 2. See COPYING for details.
For a total list of contributers see CREDITS.
See http://www.clanlib.org
------------------------------------------------------------------------
*/
//! clanSignal="System"
//! header=signals.h
#ifndef header_slot_generic
#define header_slot_generic
//: Slot Generic Class
class CL_Slot_Generic
{
//! Construction:
public:
//: Slot Generic Constructor
CL_Slot_Generic() : slot_ref_count(0), signal_ref_count(0) { return; }
//: Slot Generic Destructor
virtual ~CL_Slot_Generic() { return; }
//! Attributes:
public:
//: Get slot ref
int get_slot_ref() const { return slot_ref_count; }
//: Get signal ref
int get_signal_ref() const { return signal_ref_count; }
//! Operations:
public:
//: Add slot ref
void add_slot_ref() { slot_ref_count++; }
//: Release slot ref
void release_slot_ref() { slot_ref_count--; check_delete(); }
//: Add signal ref
void add_signal_ref() { signal_ref_count++; }
//: Release signal ref
void release_signal_ref() { signal_ref_count--; check_delete(); }
//! Implementation:
private:
void check_delete()
{
if (slot_ref_count == 0 && signal_ref_count == 0) delete this;
}
int slot_ref_count;
int signal_ref_count;
};
#endif
|