]> git.tdb.fi Git - ext/sigc++-2.0.git/blob - untracked/docs/reference/html/group__signal.html
Import libsigc++ 2.10.8 sources
[ext/sigc++-2.0.git] / untracked / docs / reference / html / group__signal.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.9.1"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>libsigc++: Signals</title>
9 <link href="tabs.css" rel="stylesheet" type="text/css"/>
10 <script type="text/javascript" src="jquery.js"></script>
11 <script type="text/javascript" src="dynsections.js"></script>
12 <link href="doxygen.css" rel="stylesheet" type="text/css" />
13 <link href="doxygen-extra.css" rel="stylesheet" type="text/css"/>
14 </head>
15 <body>
16 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
17 <div id="titlearea">
18 <table cellspacing="0" cellpadding="0">
19  <tbody>
20  <tr style="height: 56px;">
21   <td id="projectalign" style="padding-left: 0.5em;">
22    <div id="projectname">libsigc++
23    &#160;<span id="projectnumber">2.10.8</span>
24    </div>
25   </td>
26  </tr>
27  </tbody>
28 </table>
29 </div>
30 <!-- end header part -->
31 <!-- Generated by Doxygen 1.9.1 -->
32 <script type="text/javascript" src="menudata.js"></script>
33 <script type="text/javascript" src="menu.js"></script>
34 <script type="text/javascript">
35 /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
36 $(function() {
37   initMenu('',false,false,'search.php','Search');
38 });
39 /* @license-end */</script>
40 <div id="main-nav"></div>
41 </div><!-- top -->
42 <div class="header">
43   <div class="summary">
44 <a href="#nested-classes">Classes</a>  </div>
45   <div class="headertitle">
46 <div class="title">Signals</div>  </div>
47 </div><!--header-->
48 <div class="contents">
49
50 <p>Use <a class="el" href="classsigc_1_1signal7.html#adc55ac9b0f935fd87a67904022e03cb2" title="Add a slot to the list of slots.">sigc::signal::connect()</a> with <a class="el" href="group__mem__fun.html#gadf6b6d22c503b439019f0a2e77352419" title="Creates a functor of type sigc::mem_functor0 which wraps a method.">sigc::mem_fun()</a> and <a class="el" href="group__ptr__fun.html#ga9c80de72f656fb05e81fda622dddc863" title="Creates a functor of type sigc::pointer_functor0 which wraps an existing non-member function.">sigc::ptr_fun()</a> to connect a method or function with a signal.  
51 <a href="#details">More...</a></p>
52 <table class="memberdecls">
53 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
54 Classes</h2></td></tr>
55 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1connection.html">sigc::connection</a></td></tr>
56 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convinience class for safe disconnection.  <a href="structsigc_1_1connection.html#details">More...</a><br /></td></tr>
57 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
58 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1nil.html">sigc::nil</a></td></tr>
59 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">nil struct type.  <a href="structsigc_1_1nil.html#details">More...</a><br /></td></tr>
60 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
61 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal.html">sigc::signal&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 &gt;</a></td></tr>
62 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience wrapper for the numbered <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a># templates.  <a href="classsigc_1_1signal.html#details">More...</a><br /></td></tr>
63 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
64 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal0.html">sigc::signal0&lt; T_return, T_accumulator &gt;</a></td></tr>
65 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal0.html#details">More...</a><br /></td></tr>
66 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
67 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal1.html">sigc::signal1&lt; T_return, T_arg1, T_accumulator &gt;</a></td></tr>
68 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal1.html#details">More...</a><br /></td></tr>
69 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
70 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal2.html">sigc::signal2&lt; T_return, T_arg1, T_arg2, T_accumulator &gt;</a></td></tr>
71 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal2.html#details">More...</a><br /></td></tr>
72 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
73 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal3.html">sigc::signal3&lt; T_return, T_arg1, T_arg2, T_arg3, T_accumulator &gt;</a></td></tr>
74 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal3.html#details">More...</a><br /></td></tr>
75 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
76 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal4.html">sigc::signal4&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_accumulator &gt;</a></td></tr>
77 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal4.html#details">More...</a><br /></td></tr>
78 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
79 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal5.html">sigc::signal5&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_accumulator &gt;</a></td></tr>
80 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal5.html#details">More...</a><br /></td></tr>
81 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
82 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal6.html">sigc::signal6&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_accumulator &gt;</a></td></tr>
83 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal6.html#details">More...</a><br /></td></tr>
84 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
85 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal7.html">sigc::signal7&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator &gt;</a></td></tr>
86 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal declaration.  <a href="classsigc_1_1signal7.html#details">More...</a><br /></td></tr>
87 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
88 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal_1_1accumulated.html">sigc::signal&lt; T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 &gt;::accumulated&lt; T_accumulator &gt;</a></td></tr>
89 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience wrapper for the numbered <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a># templates.  <a href="classsigc_1_1signal_1_1accumulated.html#details">More...</a><br /></td></tr>
90 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
91 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1signal_3_01T__return_07T__arg1_00_01T__arg2_00_01T__arg3_00_01T__arg4_00_01T__arg5_e94644748df11174db4187c0801a1d95.html">sigc::signal&lt; T_return(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)&gt;::accumulated&lt; T_accumulator &gt;</a></td></tr>
92 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience wrapper for the numbered <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a># templates.  <a href="classsigc_1_1signal_3_01T__return_07T__arg1_00_01T__arg2_00_01T__arg3_00_01T__arg4_00_01T__arg5_e94644748df11174db4187c0801a1d95.html#details">More...</a><br /></td></tr>
93 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
94 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1signal__base.html">sigc::signal_base</a></td></tr>
95 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for the <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a># templates.  <a href="structsigc_1_1signal__base.html#details">More...</a><br /></td></tr>
96 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
97 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1slot__const__iterator.html">sigc::slot_const_iterator&lt; T_slot &gt;</a></td></tr>
98 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL-style const iterator for <a class="el" href="structsigc_1_1slot__list.html" title="STL-style list interface for sigc::signal#.">slot_list</a>.  <a href="structsigc_1_1slot__const__iterator.html#details">More...</a><br /></td></tr>
99 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
100 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1slot__iterator.html">sigc::slot_iterator&lt; T_slot &gt;</a></td></tr>
101 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL-style iterator for <a class="el" href="structsigc_1_1slot__list.html" title="STL-style list interface for sigc::signal#.">slot_list</a>.  <a href="structsigc_1_1slot__iterator.html#details">More...</a><br /></td></tr>
102 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
103 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1slot__list.html">sigc::slot_list&lt; T_slot &gt;</a></td></tr>
104 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL-style list interface for <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a>#.  <a href="structsigc_1_1slot__list.html#details">More...</a><br /></td></tr>
105 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
106 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsigc_1_1trackable.html">sigc::trackable</a></td></tr>
107 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for objects with auto-disconnection.  <a href="structsigc_1_1trackable.html#details">More...</a><br /></td></tr>
108 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
109 </table>
110 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
111 <p>Use <a class="el" href="classsigc_1_1signal7.html#adc55ac9b0f935fd87a67904022e03cb2" title="Add a slot to the list of slots.">sigc::signal::connect()</a> with <a class="el" href="group__mem__fun.html#gadf6b6d22c503b439019f0a2e77352419" title="Creates a functor of type sigc::mem_functor0 which wraps a method.">sigc::mem_fun()</a> and <a class="el" href="group__ptr__fun.html#ga9c80de72f656fb05e81fda622dddc863" title="Creates a functor of type sigc::pointer_functor0 which wraps an existing non-member function.">sigc::ptr_fun()</a> to connect a method or function with a signal. </p>
112 <div class="fragment"><div class="line">signal_clicked.connect( <a class="code" href="group__mem__fun.html#gadf6b6d22c503b439019f0a2e77352419">sigc::mem_fun</a>(*<span class="keyword">this</span>, &amp;MyWindow::on_clicked) );</div>
113 <div class="ttc" id="agroup__mem__fun_html_gadf6b6d22c503b439019f0a2e77352419"><div class="ttname"><a href="group__mem__fun.html#gadf6b6d22c503b439019f0a2e77352419">sigc::mem_fun</a></div><div class="ttdeci">mem_functor0&lt; T_return, T_obj &gt; mem_fun(T_return(T_obj::*_A_func)())</div><div class="ttdoc">Creates a functor of type sigc::mem_functor0 which wraps a method.</div><div class="ttdef"><b>Definition:</b> mem_fun.h:5797</div></div>
114 </div><!-- fragment --><p>When the signal is emitted your method will be called.</p>
115 <p><a class="el" href="classsigc_1_1signal7.html#adc55ac9b0f935fd87a67904022e03cb2" title="Add a slot to the list of slots.">signal::connect()</a> returns a connection, which you can later use to disconnect your method. If the type of your object inherits from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection.">sigc::trackable</a> the method is disconnected automatically when your object is destroyed.</p>
116 <p>When signals are copied they share the underlying information, so you can have a protected/private <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a> member and a public accessor method. A <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a> is a kind of reference-counting pointer. It's similar to std::shared_ptr&lt;&gt;, although <a class="el" href="classsigc_1_1signal.html" title="Convenience wrapper for the numbered sigc::signal# templates.">sigc::signal</a> is restricted to holding a pointer to a sigc::internal::signal_impl object that contains the implementation of the signal.</p>
117 <div class="fragment"><div class="line"><span class="keyword">class </span>MyClass</div>
118 <div class="line">{</div>
119 <div class="line"><span class="keyword">public</span>:</div>
120 <div class="line">  <span class="keyword">typedef</span> <a class="code" href="classsigc_1_1signal.html">sigc::signal&lt;void&gt;</a> MySignalType;</div>
121 <div class="line">  MySignalType get_my_signal() { <span class="keywordflow">return</span> m_my_signal; }</div>
122 <div class="line"><span class="keyword">private</span>:</div>
123 <div class="line">  MySignalType m_my_signal;</div>
124 <div class="line">};</div>
125 <div class="ttc" id="aclasssigc_1_1signal_html"><div class="ttname"><a href="classsigc_1_1signal.html">sigc::signal</a></div><div class="ttdoc">Convenience wrapper for the numbered sigc::signal# templates.</div><div class="ttdef"><b>Definition:</b> signal.h:4015</div></div>
126 </div><!-- fragment --><p>signal and slot objects provide the core functionality of this library. A slot is a container for an arbitrary functor. A signal is a list of slots that are executed on emission. For compile time type safety a list of template arguments must be provided for the signal template that determines the parameter list for emission. Functors and closures are converted into slots implicitly on connection, triggering compiler errors if the given functor or closure cannot be invoked with the parameter list of the signal to connect to.</p>
127 <p>Almost any functor with the correct signature can be converted to a <a class="el" href="classsigc_1_1slot.html" title="Convenience wrapper for the numbered sigc::slot# templates.">sigc::slot</a> and connected to a signal. See <a class="el" href="group__slot.html">Slots</a> and <a class="el" href="classsigc_1_1signal7.html#adc55ac9b0f935fd87a67904022e03cb2" title="Add a slot to the list of slots.">sigc::signal::connect()</a>. </p>
128 </div><!-- contents -->
129 <!-- start footer part -->
130 <hr class="footer"/><address class="footer"><small>
131 Generated on Fri Feb 11 2022 15:40:57 for libsigc++ by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
132 </small></address>
133 </body>
134 </html>