root/doc/html/classitpp_1_1Signal.html @ 353

Revision 353, 14.5 kB (checked in by smidl, 16 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: itpp::Signal&lt; DataType &gt; Class Template Reference</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
56      <li><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59  <div class="tabs">
60    <ul>
61      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
62      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
63      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
64      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
65    </ul>
66  </div>
67  <div class="navpath"><b>itpp</b>::<a class="el" href="classitpp_1_1Signal.html">Signal</a>
68  </div>
69</div>
70<div class="contents">
71<h1>itpp::Signal&lt; DataType &gt; Class Template Reference<br>
72<small>
73[<a class="el" href="group__protocol.html">Protocols Module</a>]</small>
74</h1><!-- doxytag: class="itpp::Signal" -->Signals and slots. 
75<a href="#_details">More...</a>
76<p>
77<code>#include &lt;<a class="el" href="signals__slots_8h-source.html">signals_slots.h</a>&gt;</code>
78<p>
79
80<p>
81<a href="classitpp_1_1Signal-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
82<tr><td></td></tr>
83<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
84<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g74aeb8837f321e75c9de837909b94b9d"></a><!-- doxytag: member="itpp::Signal::Signal" ref="g74aeb8837f321e75c9de837909b94b9d" args="(const std::string signal_name=&quot;Unamed Signal&quot;, const bool single_shot=false, const bool enable_debug=false)" -->
85&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g74aeb8837f321e75c9de837909b94b9d">Signal</a> (const std::string signal_name=&quot;Unamed <a class="el" href="classitpp_1_1Signal.html">Signal</a>&quot;, const bool single_shot=false, const bool enable_debug=false)</td></tr>
86
87<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <br></td></tr>
88<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g78e4c0bc2d93c8e4e7f21580414602ff"></a><!-- doxytag: member="itpp::Signal::~Signal" ref="g78e4c0bc2d93c8e4e7f21580414602ff" args="()" -->
89&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g78e4c0bc2d93c8e4e7f21580414602ff">~Signal</a> ()</td></tr>
90
91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <br></td></tr>
92<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5d7f0451e79dbbf5392acba0446fc2dc"></a><!-- doxytag: member="itpp::Signal::connect" ref="g5d7f0451e79dbbf5392acba0446fc2dc" args="(Base_Slot&lt; DataType &gt; *slot)" -->
93void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g5d7f0451e79dbbf5392acba0446fc2dc">connect</a> (<a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>&lt; DataType &gt; *slot)</td></tr>
94
95<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect a slot to the signal. <br></td></tr>
96<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc3c035d4b8565d1bafc58a8092ced7d7"></a><!-- doxytag: member="itpp::Signal::disconnect" ref="gc3c035d4b8565d1bafc58a8092ced7d7" args="(Base_Slot&lt; DataType &gt; *slot=NULL)" -->
97void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#gc3c035d4b8565d1bafc58a8092ced7d7">disconnect</a> (<a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>&lt; DataType &gt; *slot=NULL)</td></tr>
98
99<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect the slot from the signal. <br></td></tr>
100<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7a6e9d6da75436c16add44847e98e32a"></a><!-- doxytag: member="itpp::Signal::operator()" ref="g7a6e9d6da75436c16add44847e98e32a" args="(DataType signal, const Ttype delta_time=0)" -->
101<a class="el" href="classitpp_1_1Base__Event.html">Base_Event</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g7a6e9d6da75436c16add44847e98e32a">operator()</a> (DataType signal, const Ttype delta_time=0)</td></tr>
102
103<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Issue a signal. <br></td></tr>
104<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6e72db614ae271b9a81eea6f2de11079"></a><!-- doxytag: member="itpp::Signal::cancel" ref="g6e72db614ae271b9a81eea6f2de11079" args="()" -->
105void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g6e72db614ae271b9a81eea6f2de11079">cancel</a> ()</td></tr>
106
107<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">cancel signal <br></td></tr>
108<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g02061d18d1b74311f2fc3b6bc0005b22"></a><!-- doxytag: member="itpp::Signal::set_name" ref="g02061d18d1b74311f2fc3b6bc0005b22" args="(const std::string &amp;signal_name)" -->
109void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g02061d18d1b74311f2fc3b6bc0005b22">set_name</a> (const std::string &amp;signal_name)</td></tr>
110
111<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set name of signal <br></td></tr>
112<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7726292b50426ec743036cfaceb85229"></a><!-- doxytag: member="itpp::Signal::set_debug" ref="g7726292b50426ec743036cfaceb85229" args="(const bool enable_debug=true)" -->
113void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g7726292b50426ec743036cfaceb85229">set_debug</a> (const bool enable_debug=true)</td></tr>
114
115<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set debug mode. If true all signals are printed to stdout. <br></td></tr>
116<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gebfcb689c9e4f2597fd798ff9876f1ba"></a><!-- doxytag: member="itpp::Signal::trigger" ref="gebfcb689c9e4f2597fd798ff9876f1ba" args="(DataType u)" -->
117void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#gebfcb689c9e4f2597fd798ff9876f1ba">trigger</a> (DataType u)</td></tr>
118
119<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
120<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
121<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d6dd6fc22d262c94754a0220faf66d91"></a><!-- doxytag: member="itpp::Signal::Base_Slot_Iterator" ref="d6dd6fc22d262c94754a0220faf66d91" args="" -->
122typedef std::list&lt; <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a><br class="typebreak">
123&lt; DataType &gt; *, std::allocator<br class="typebreak">
124&lt; <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>&lt; DataType &gt;<br class="typebreak">
125 * &gt; &gt;::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Signal.html#d6dd6fc22d262c94754a0220faf66d91">Base_Slot_Iterator</a></td></tr>
126
127<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
128<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
129<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd1c35f96a708ce45dac3cd6fd109c038"></a><!-- doxytag: member="itpp::Signal::_disconnect" ref="gd1c35f96a708ce45dac3cd6fd109c038" args="(Base_Slot&lt; DataType &gt; *slot)" -->
130void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#gd1c35f96a708ce45dac3cd6fd109c038">_disconnect</a> (<a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>&lt; DataType &gt; *slot)</td></tr>
131
132<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
133<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
134<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="599f5aa5eb0d834d09363ffa7cdaad3b"></a><!-- doxytag: member="itpp::Signal::connected_slots" ref="599f5aa5eb0d834d09363ffa7cdaad3b" args="" -->
135std::list&lt; <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>&lt; DataType &gt;<br class="typebreak">
136 *, std::allocator&lt; <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a><br class="typebreak">
137&lt; DataType &gt; * &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Signal.html#599f5aa5eb0d834d09363ffa7cdaad3b">connected_slots</a></td></tr>
138
139<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
140<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4f819ce01841304aa5de4042020f28a1"></a><!-- doxytag: member="itpp::Signal::name" ref="4f819ce01841304aa5de4042020f28a1" args="" -->
141std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classitpp_1_1Signal.html#4f819ce01841304aa5de4042020f28a1">name</a></td></tr>
142
143<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ADD DOCUMENTATION HERE. <br></td></tr>
144<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
145<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76e5008b9ac7efb6c9d1be1242f201f0"></a><!-- doxytag: member="itpp::Signal::Base_Slot&lt; DataType &gt;" ref="76e5008b9ac7efb6c9d1be1242f201f0" args="" -->
146class&nbsp;</td><td class="memItemRight" valign="bottom"><b>Base_Slot&lt; DataType &gt;</b></td></tr>
147
148</table>
149<hr><a name="_details"></a><h2>Detailed Description</h2>
150<h3>template&lt;class DataType&gt;<br>
151 class itpp::Signal&lt; DataType &gt;</h3>
152
153Signals and slots.
154<p>
155A simple example where to objects A and B are communicating through signals and slots. Each object has one signal and one slot. The A_signal is used to send a signal to the B_slot and vice versa. When a signal is received by the B_slot it is forwarded to the function forward(). The class definition includes the definition of the signals, slots and forward functions including a name and the type of data to transmit.<p>
156<div class="fragment"><pre class="fragment"><span class="preprocessor">  #include "<a class="code" href="signals__slots_8h.html" title="Definitions of Signals and Slots classes.">signals_slots.h</a>"</span>
157  <span class="keyword">class </span>A;
158  <span class="keyword">class </span>B;
159
160  <span class="keyword">class </span>A {
161  <span class="keyword">public</span>:
162  A(){
163  A_slot.forward(<span class="keyword">this</span>, &amp;A::member);
164  A_signal.set_name(<span class="stringliteral">"A_signal"</span>);
165  A_signal.set_debug(<span class="keyword">true</span>);
166  A_slot.set_name(<span class="stringliteral">"A_slot"</span>);
167  N = 10;
168  }
169  Signal&lt;int&gt; A_signal;
170  Slot&lt;A, double&gt; A_slot;
171  <span class="keyword">private</span>:
172  <span class="keywordtype">int</span> N;
173  <span class="keywordtype">void</span> member(<span class="keyword">const</span> <span class="keywordtype">double</span> x) {
174  <span class="keywordflow">if</span>(N)
175  A_signal.arm(3.4, N--);
176  }
177  };
178
179  <span class="keyword">class </span>B {
180  <span class="keyword">public</span>:
181  B(){
182  B_slot.forward(<span class="keyword">this</span>, &amp;B::member);
183  B_signal.set_name(<span class="stringliteral">"B_signal"</span>);
184  B_signal.set_debug();
185  B_slot.set_name(<span class="stringliteral">"B_slot"</span>);
186  }
187  Signal&lt;double&gt; B_signal;
188  Slot&lt;B, int&gt; B_slot;
189  <span class="keyword">private</span>:
190  <span class="keywordtype">void</span> member(<span class="keyword">const</span> <span class="keywordtype">int</span> k){ B_signal.arm(23.2, M_PI); }
191  };
192
193  <span class="keywordtype">int</span> main(){
194  A a; <span class="comment">// class A does not know anything about class B.</span>
195  B b; <span class="comment">// class B does not know anything about class A.</span>
196
197  a.A_signal.connect(&amp;b.B_slot); <span class="comment">// Connect a to b.</span>
198  b.B_signal.connect(&amp;a.A_slot); <span class="comment">// Connect b to a.</span>
199
200  a.A_signal.arm(56.2, 3); <span class="comment">// First event in 56.2 seconds carrying data = 3</span>
201
202  <a class="code" href="classitpp_1_1Event__Queue.html#5bde95d04badf287fd5bc5c548f3f7f8" title="Start executing events.">Event_Queue::start</a>(); <span class="comment">// start the event-based simulation</span>
203  }
204</pre></div> <hr>The documentation for this class was generated from the following file:<ul>
205<li><a class="el" href="signals__slots_8h-source.html">signals_slots.h</a></ul>
206</div>
207<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:19 2009 for mixpp by&nbsp;
208<a href="http://www.doxygen.org/index.html">
209<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
210</body>
211</html>
Note: See TracBrowser for help on using the browser.