]> git.lyx.org Git - lyx.git/blob - sigc++/basic_signal.cc
get rid of ejour2; formgraphics tweaks from Juergen S
[lyx.git] / sigc++ / basic_signal.cc
1 // -*- c++ -*-
2 /* 
3  * Copyright 1999 Karl Nelson <kenelson@ece.ucdavis.edu>
4  * 
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  * 
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  * 
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the Free
17  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19 #include <sigc++/basic_signal.h>
20
21 #ifdef SIGC_CXX_NAMESPACES
22 namespace SigC
23 {
24 #endif //SIGC_CXX_NAMESPACES
25
26 Signal_::Impl::Impl():incoming_(),outgoing_() {}
27 Signal_::Impl::~Impl() {}
28
29
30 Signal_::Signal_()
31   :impl(0) 
32   {}
33
34 Signal_::~Signal_()
35   {
36     delete impl;
37   }
38
39 bool Signal_::empty() const
40   {
41     return (!impl||impl->outgoing_.empty());
42   }
43
44 void Signal_::clear()
45   {
46     if (impl)
47       impl->outgoing_.clear();
48   }
49
50 SlotData* Signal_::out_connect(SlotData *sd)
51   {
52    // we now reference the object
53    sd->connect();
54
55    // insert in list
56    if (!impl) impl=new Impl();
57    impl->outgoing_.insert_direct(impl->outgoing_.begin(),sd->sender());
58    return sd;
59   }
60
61 SlotData* Signal_::in_connect()
62   {
63    SlotData* sd=manage(new SlotData());
64    if (!impl) impl=new Impl();
65    impl->incoming_.insert_direct(impl->incoming_.end(),sd->receiver());
66    return sd;
67   }
68
69 #ifdef SIGC_CXX_NAMESPACES
70 } // namespace
71 #endif