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< DataType > 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 | <!-- |
---|
10 | function 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 | } |
---|
22 | function 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 | } |
---|
46 | window.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 Page</span></a></li> |
---|
53 | <li><a href="pages.html"><span>Related 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 List</span></a></li> |
---|
62 | <li><a href="classes.html"><span>Class Index</span></a></li> |
---|
63 | <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> |
---|
64 | <li><a href="functions.html"><span>Class 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< DataType > 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 <<a class="el" href="signals__slots_8h-source.html">signals_slots.h</a>></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="Unamed Signal", const bool single_shot=false, const bool enable_debug=false)" --> |
---|
85 | </td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g74aeb8837f321e75c9de837909b94b9d">Signal</a> (const std::string signal_name="Unamed <a class="el" href="classitpp_1_1Signal.html">Signal</a>", const bool single_shot=false, const bool enable_debug=false)</td></tr> |
---|
86 | |
---|
87 | <tr><td class="mdescLeft"> </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 | </td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g78e4c0bc2d93c8e4e7f21580414602ff">~Signal</a> ()</td></tr> |
---|
90 | |
---|
91 | <tr><td class="mdescLeft"> </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< DataType > *slot)" --> |
---|
93 | void </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>< DataType > *slot)</td></tr> |
---|
94 | |
---|
95 | <tr><td class="mdescLeft"> </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< DataType > *slot=NULL)" --> |
---|
97 | void </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>< DataType > *slot=NULL)</td></tr> |
---|
98 | |
---|
99 | <tr><td class="mdescLeft"> </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> * </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"> </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="()" --> |
---|
105 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g6e72db614ae271b9a81eea6f2de11079">cancel</a> ()</td></tr> |
---|
106 | |
---|
107 | <tr><td class="mdescLeft"> </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 &signal_name)" --> |
---|
109 | void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__protocol.html#g02061d18d1b74311f2fc3b6bc0005b22">set_name</a> (const std::string &signal_name)</td></tr> |
---|
110 | |
---|
111 | <tr><td class="mdescLeft"> </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)" --> |
---|
113 | void </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"> </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)" --> |
---|
117 | void </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"> </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="" --> |
---|
122 | typedef std::list< <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a><br class="typebreak"> |
---|
123 | < DataType > *, std::allocator<br class="typebreak"> |
---|
124 | < <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>< DataType ><br class="typebreak"> |
---|
125 | * > >::iterator </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"> </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< DataType > *slot)" --> |
---|
130 | void </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>< DataType > *slot)</td></tr> |
---|
131 | |
---|
132 | <tr><td class="mdescLeft"> </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="" --> |
---|
135 | std::list< <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a>< DataType ><br class="typebreak"> |
---|
136 | *, std::allocator< <a class="el" href="classitpp_1_1Base__Slot.html">Base_Slot</a><br class="typebreak"> |
---|
137 | < DataType > * > > </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"> </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="" --> |
---|
141 | std::string </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"> </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< DataType >" ref="76e5008b9ac7efb6c9d1be1242f201f0" args="" --> |
---|
146 | class </td><td class="memItemRight" valign="bottom"><b>Base_Slot< DataType ></b></td></tr> |
---|
147 | |
---|
148 | </table> |
---|
149 | <hr><a name="_details"></a><h2>Detailed Description</h2> |
---|
150 | <h3>template<class DataType><br> |
---|
151 | class itpp::Signal< DataType ></h3> |
---|
152 | |
---|
153 | Signals and slots. |
---|
154 | <p> |
---|
155 | A 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>, &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<int> A_signal; |
---|
170 | Slot<A, double> 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>, &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<double> B_signal; |
---|
188 | Slot<B, int> 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(&b.B_slot); <span class="comment">// Connect a to b.</span> |
---|
198 | b.B_signal.connect(&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 |
---|
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> |
---|