Files
pip/doc/html/class_p_i_thread.html

685 lines
89 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PIP: PIThread Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">PIP
&#160;<span id="projectnumber">1.4.0</span>
</div>
<div id="projectbrief">Platform-Independent Primitives</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_p_i_thread.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="class_p_i_thread-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">PIThread Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Thread class.
<a href="class_p_i_thread.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for PIThread:</div>
<div class="dyncontent">
<div class="center"><img src="class_p_i_thread__inherit__graph.png" border="0" usemap="#_p_i_thread_inherit__map" alt="Inheritance graph"/></div>
<map name="_p_i_thread_inherit__map" id="_p_i_thread_inherit__map">
<area shape="rect" id="node3" href="class_p_i_console.html" title="Console output class. " alt="" coords="291,157,385,184"/>
<area shape="rect" id="node4" href="class_p_i_i_o_device.html" title="Base class for input/output classes. " alt="" coords="287,208,389,235"/>
<area shape="rect" id="node14" href="class_p_i_kbd_listener.html" title="Keyboard console input listener. " alt="" coords="275,259,401,285"/>
<area shape="rect" id="node15" href="class_p_i_process.html" title="PIProcess" alt="" coords="291,309,385,336"/>
<area shape="rect" id="node2" href="class_p_i_object.html" title="This is base class for any classes which use events &#45;&gt; handlers mechanism. " alt="" coords="5,233,92,260"/>
<area shape="rect" id="node5" href="class_p_i_binary_log.html" title="Class for read and write binary data to logfile, and playback this data in realtime, or custom speed. " alt="" coords="481,5,592,32"/>
<area shape="rect" id="node6" href="class_p_i_ethernet.html" title="Ethernet device. " alt="" coords="485,56,588,83"/>
<area shape="rect" id="node7" href="class_p_i_file.html" title="Local file. " alt="" coords="501,107,572,133"/>
<area shape="rect" id="node8" href="class_p_i_i_o_byte_array.html" title="PIIODevice wrapper around PIByteArray. " alt="" coords="473,157,600,184"/>
<area shape="rect" id="node9" href="class_p_i_i_o_string.html" title="PIIODevice wrapper around PIString. " alt="" coords="485,208,588,235"/>
<area shape="rect" id="node10" href="class_p_i_packet_extractor.html" title="Packets extractor. " alt="" coords="457,259,616,285"/>
<area shape="rect" id="node11" href="class_p_i_serial.html" title="Serial device. " alt="" coords="493,309,580,336"/>
<area shape="rect" id="node12" href="class_p_i_shared_memory.html" title="Shared memory. " alt="" coords="469,360,604,387"/>
<area shape="rect" id="node13" href="class_p_i_transparent_device.html" title="PIIODevice that pass write to read. " alt="" coords="449,411,624,437"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a3ddcafb0b09d3ed258a519882986a77b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b">Priority</a> { <br />
&#160;&#160;<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba4dbd54fc5158a029c682b718f48312d4">piLowerst</a>,
<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba46703d0258b11d41c52a266b2b10b6d9">piLow</a>,
<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77babd362bfacabbd61d69793cceb449425c">piNormal</a>,
<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba0e6861fee3e57cf6ba026a7553e69576">piHigh</a>,
<br />
&#160;&#160;<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba18babfebe41163fbb810eb41357a6347">piHighest</a>
<br />
}<tr class="memdesc:a3ddcafb0b09d3ed258a519882986a77b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Priority of thread. <a href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a3ddcafb0b09d3ed258a519882986a77b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:adaa3b942365cb17b3e985648128e5f7e"><td class="memItemLeft" align="right" valign="top"><a id="adaa3b942365cb17b3e985648128e5f7e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#adaa3b942365cb17b3e985648128e5f7e">PIThread</a> (void *<a class="el" href="class_p_i_thread.html#a91017208662e636b3c84d635ecd25a5d">data</a>, ThreadFunc func, bool startNow=false, int loop_delay=-1)</td></tr>
<tr class="memdesc:adaa3b942365cb17b3e985648128e5f7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay". <br /></td></tr>
<tr class="separator:adaa3b942365cb17b3e985648128e5f7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a538752277df4d58134b05ef080ed6b04"><td class="memItemLeft" align="right" valign="top"><a id="a538752277df4d58134b05ef080ed6b04"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a538752277df4d58134b05ef080ed6b04">PIThread</a> (bool startNow=false, int loop_delay=-1)</td></tr>
<tr class="memdesc:a538752277df4d58134b05ef080ed6b04"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contructs thread with main loop delay "loop_delay". <br /></td></tr>
<tr class="separator:a538752277df4d58134b05ef080ed6b04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a221e15d1a4093b7db6cc579fc8be69b6"><td class="memItemLeft" align="right" valign="top"><a id="a221e15d1a4093b7db6cc579fc8be69b6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a221e15d1a4093b7db6cc579fc8be69b6">setData</a> (void *d)</td></tr>
<tr class="memdesc:a221e15d1a4093b7db6cc579fc8be69b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set common data passed to external function. <br /></td></tr>
<tr class="separator:a221e15d1a4093b7db6cc579fc8be69b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85c22bf31dae02180827f2952e3594ee"><td class="memItemLeft" align="right" valign="top"><a id="a85c22bf31dae02180827f2952e3594ee"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee">setSlot</a> (ThreadFunc func)</td></tr>
<tr class="memdesc:a85c22bf31dae02180827f2952e3594ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set external function that will be executed after every <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> <br /></td></tr>
<tr class="separator:a85c22bf31dae02180827f2952e3594ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade6ddabe46917c5cef2f5da1dd613a69"><td class="memItemLeft" align="right" valign="top"><a id="ade6ddabe46917c5cef2f5da1dd613a69"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#ade6ddabe46917c5cef2f5da1dd613a69">setPriority</a> (<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b">PIThread::Priority</a> prior)</td></tr>
<tr class="memdesc:ade6ddabe46917c5cef2f5da1dd613a69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set priority of thread. <br /></td></tr>
<tr class="separator:ade6ddabe46917c5cef2f5da1dd613a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91017208662e636b3c84d635ecd25a5d"><td class="memItemLeft" align="right" valign="top"><a id="a91017208662e636b3c84d635ecd25a5d"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a91017208662e636b3c84d635ecd25a5d">data</a> () const</td></tr>
<tr class="memdesc:a91017208662e636b3c84d635ecd25a5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns common data passed to external function. <br /></td></tr>
<tr class="separator:a91017208662e636b3c84d635ecd25a5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d063a839ebdf61e1a70ad2521c8fc7e"><td class="memItemLeft" align="right" valign="top"><a id="a8d063a839ebdf61e1a70ad2521c8fc7e"></a>
<a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b">PIThread::Priority</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a8d063a839ebdf61e1a70ad2521c8fc7e">priority</a> () const</td></tr>
<tr class="memdesc:a8d063a839ebdf61e1a70ad2521c8fc7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return priority of thread. <br /></td></tr>
<tr class="separator:a8d063a839ebdf61e1a70ad2521c8fc7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2281bcd181604a34fa3e5d1c9ac4edef"><td class="memItemLeft" align="right" valign="top"><a id="a2281bcd181604a34fa3e5d1c9ac4edef"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a2281bcd181604a34fa3e5d1c9ac4edef">isRunning</a> () const</td></tr>
<tr class="memdesc:a2281bcd181604a34fa3e5d1c9ac4edef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <code>true</code> if thread is running. <br /></td></tr>
<tr class="separator:a2281bcd181604a34fa3e5d1c9ac4edef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87a8b9315e3e2c0eb8bfeb864474da57"><td class="memItemLeft" align="right" valign="top"><a id="a87a8b9315e3e2c0eb8bfeb864474da57"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a87a8b9315e3e2c0eb8bfeb864474da57">needLockRun</a> (bool need)</td></tr>
<tr class="memdesc:a87a8b9315e3e2c0eb8bfeb864474da57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set necessity of lock every <em>run</em> with internal mutex. <br /></td></tr>
<tr class="separator:a87a8b9315e3e2c0eb8bfeb864474da57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaff22c99b5f5ba444671d658eba2f14"><td class="memItemLeft" align="right" valign="top"><a id="aeaff22c99b5f5ba444671d658eba2f14"></a>
<a class="el" href="class_p_i_mutex.html">PIMutex</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#aeaff22c99b5f5ba444671d658eba2f14">mutex</a> ()</td></tr>
<tr class="memdesc:aeaff22c99b5f5ba444671d658eba2f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns internal mutex. <br /></td></tr>
<tr class="separator:aeaff22c99b5f5ba444671d658eba2f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f8d5e29b881b38e760ca887a6609d73"><td class="memItemLeft" align="right" valign="top"><a id="a4f8d5e29b881b38e760ca887a6609d73"></a>
llong&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a4f8d5e29b881b38e760ca887a6609d73">tid</a> () const</td></tr>
<tr class="memdesc:a4f8d5e29b881b38e760ca887a6609d73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns thread ID. <br /></td></tr>
<tr class="separator:a4f8d5e29b881b38e760ca887a6609d73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_p_i_object"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_p_i_object')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_p_i_object.html">PIObject</a></td></tr>
<tr class="memitem:a779d66bab882a51ef6389d2e212f2bd6 inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a779d66bab882a51ef6389d2e212f2bd6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a779d66bab882a51ef6389d2e212f2bd6">PIObject</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>=<a class="el" href="class_p_i_string.html">PIString</a>())</td></tr>
<tr class="memdesc:a779d66bab882a51ef6389d2e212f2bd6 inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contructs <a class="el" href="class_p_i_object.html" title="This is base class for any classes which use events -&gt; handlers mechanism. ">PIObject</a> with name "name". <br /></td></tr>
<tr class="separator:a779d66bab882a51ef6389d2e212f2bd6 inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c3600479f3e919bbd4f905b7fedc275 inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a5c3600479f3e919bbd4f905b7fedc275"></a>
<a class="el" href="class_p_i_string.html">PIString</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a> () const</td></tr>
<tr class="memdesc:a5c3600479f3e919bbd4f905b7fedc275 inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns object name. <br /></td></tr>
<tr class="separator:a5c3600479f3e919bbd4f905b7fedc275 inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac50df87aa63e061abd460f9a71e7176a inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ac50df87aa63e061abd460f9a71e7176a"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ac50df87aa63e061abd460f9a71e7176a">className</a> () const</td></tr>
<tr class="memdesc:ac50df87aa63e061abd460f9a71e7176a inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns object class name. <br /></td></tr>
<tr class="separator:ac50df87aa63e061abd460f9a71e7176a inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a281e02fd3810ec632c5db2e2460aa85c inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a281e02fd3810ec632c5db2e2460aa85c"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a281e02fd3810ec632c5db2e2460aa85c">parentClassName</a> () const</td></tr>
<tr class="memdesc:a281e02fd3810ec632c5db2e2460aa85c inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns parent object class name. <br /></td></tr>
<tr class="separator:a281e02fd3810ec632c5db2e2460aa85c inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8df5efbe08b98034b5ebadad11a2e94e inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a8df5efbe08b98034b5ebadad11a2e94e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a8df5efbe08b98034b5ebadad11a2e94e">debug</a> () const</td></tr>
<tr class="memdesc:a8df5efbe08b98034b5ebadad11a2e94e inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return if debug of this object is active. <br /></td></tr>
<tr class="separator:a8df5efbe08b98034b5ebadad11a2e94e inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8eb211f42dfcf7b7a1f32acabbfd6ada inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a8eb211f42dfcf7b7a1f32acabbfd6ada"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a8eb211f42dfcf7b7a1f32acabbfd6ada">setName</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)</td></tr>
<tr class="memdesc:a8eb211f42dfcf7b7a1f32acabbfd6ada inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set object name. <br /></td></tr>
<tr class="separator:a8eb211f42dfcf7b7a1f32acabbfd6ada inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a0ec972d4864287fae4d1a0edcd9dc5 inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a9a0ec972d4864287fae4d1a0edcd9dc5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a9a0ec972d4864287fae4d1a0edcd9dc5">setDebug</a> (bool <a class="el" href="class_p_i_object.html#a8df5efbe08b98034b5ebadad11a2e94e">debug</a>)</td></tr>
<tr class="memdesc:a9a0ec972d4864287fae4d1a0edcd9dc5 inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set object debug active. <br /></td></tr>
<tr class="separator:a9a0ec972d4864287fae4d1a0edcd9dc5 inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1363089418ce5b3c22593f8c2ffdf63d inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a1363089418ce5b3c22593f8c2ffdf63d"></a>
const PIMap&lt; <a class="el" href="class_p_i_string.html">PIString</a>, <a class="el" href="class_p_i_variant.html">PIVariant</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a1363089418ce5b3c22593f8c2ffdf63d">properties</a> () const</td></tr>
<tr class="memdesc:a1363089418ce5b3c22593f8c2ffdf63d inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns properties of the object. <br /></td></tr>
<tr class="separator:a1363089418ce5b3c22593f8c2ffdf63d inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe8578cf9d01117554ec28d3882661c inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="acbe8578cf9d01117554ec28d3882661c"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#acbe8578cf9d01117554ec28d3882661c">propertiesCount</a> () const</td></tr>
<tr class="memdesc:acbe8578cf9d01117554ec28d3882661c inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns properties count of the object. <br /></td></tr>
<tr class="separator:acbe8578cf9d01117554ec28d3882661c inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ea9294ee2f2f59784762992878d7b99 inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a1ea9294ee2f2f59784762992878d7b99"></a>
<a class="el" href="class_p_i_variant.html">PIVariant</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a1ea9294ee2f2f59784762992878d7b99">property</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>) const</td></tr>
<tr class="memdesc:a1ea9294ee2f2f59784762992878d7b99 inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns property with name "name". <br /></td></tr>
<tr class="separator:a1ea9294ee2f2f59784762992878d7b99 inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a647e2f79b975cf88d636a2ca2dadfb9c inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a647e2f79b975cf88d636a2ca2dadfb9c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a647e2f79b975cf88d636a2ca2dadfb9c">setProperty</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, const <a class="el" href="class_p_i_variant.html">PIVariant</a> &amp;value)</td></tr>
<tr class="memdesc:a647e2f79b975cf88d636a2ca2dadfb9c inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set property with name "name" to "value". If there is no such property in object it will be added. <br /></td></tr>
<tr class="separator:a647e2f79b975cf88d636a2ca2dadfb9c inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe264bac22327160e40c1db19862cabf inherit pub_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="afe264bac22327160e40c1db19862cabf"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#afe264bac22327160e40c1db19862cabf">isPropertyExists</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>) const</td></tr>
<tr class="memdesc:afe264bac22327160e40c1db19862cabf inherit pub_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns if property with name "name" exists. <br /></td></tr>
<tr class="separator:afe264bac22327160e40c1db19862cabf inherit pub_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a70d5c858e8b7144280b8b216304ce1d0"><td class="memItemLeft" align="right" valign="top"><a id="a70d5c858e8b7144280b8b216304ce1d0"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0">begin</a> ()</td></tr>
<tr class="memdesc:a70d5c858e8b7144280b8b216304ce1d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function executed once at the start of thread. <br /></td></tr>
<tr class="separator:a70d5c858e8b7144280b8b216304ce1d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c9cacfd381e0e02eb6e52810d48ce2e"><td class="memItemLeft" align="right" valign="top"><a id="a8c9cacfd381e0e02eb6e52810d48ce2e"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e">run</a> ()</td></tr>
<tr class="memdesc:a8c9cacfd381e0e02eb6e52810d48ce2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function executed at every "timer_delay" msecs until thread was stopped. <br /></td></tr>
<tr class="separator:a8c9cacfd381e0e02eb6e52810d48ce2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6dacd35973ff834f007d0f6a40f6e9c"><td class="memItemLeft" align="right" valign="top"><a id="af6dacd35973ff834f007d0f6a40f6e9c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c">end</a> ()</td></tr>
<tr class="memdesc:af6dacd35973ff834f007d0f6a40f6e9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function executed once at the end of thread. <br /></td></tr>
<tr class="separator:af6dacd35973ff834f007d0f6a40f6e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_class_p_i_object"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_p_i_object')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_p_i_object.html">PIObject</a></td></tr>
<tr class="memitem:a0bbc8d56e4f910c05e17ade5b9a0232f inherit pro_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a0bbc8d56e4f910c05e17ade5b9a0232f"></a>
<a class="el" href="class_p_i_object.html">PIObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a0bbc8d56e4f910c05e17ade5b9a0232f">emitter</a> () const</td></tr>
<tr class="memdesc:a0bbc8d56e4f910c05e17ade5b9a0232f inherit pro_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns PIObject* which has raised an event. This value is correct only in definition of some event handler. <br /></td></tr>
<tr class="separator:a0bbc8d56e4f910c05e17ade5b9a0232f inherit pro_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f98c7c43b93f9d636e9119f0a577715 inherit pro_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a2f98c7c43b93f9d636e9119f0a577715"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a2f98c7c43b93f9d636e9119f0a577715">propertyChanged</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)</td></tr>
<tr class="memdesc:a2f98c7c43b93f9d636e9119f0a577715 inherit pro_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual function executes after property with name "name" has been changed. <br /></td></tr>
<tr class="separator:a2f98c7c43b93f9d636e9119f0a577715 inherit pro_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d5e7421d26c565d1c20bfa5220c2601 inherit pro_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a3d5e7421d26c565d1c20bfa5220c2601">deleted</a> ()</td></tr>
<tr class="memdesc:a3d5e7421d26c565d1c20bfa5220c2601 inherit pro_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raise before object delete. <a href="class_p_i_object.html#a3d5e7421d26c565d1c20bfa5220c2601">More...</a><br /></td></tr>
<tr class="separator:a3d5e7421d26c565d1c20bfa5220c2601 inherit pro_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Handlers</h2></td></tr>
<tr class="memitem:a5fb7161b42840be7fb2f738046887b39"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a5fb7161b42840be7fb2f738046887b39">start</a> (int timer_delay)</td></tr>
<tr class="memdesc:a5fb7161b42840be7fb2f738046887b39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start thread. <a href="#a5fb7161b42840be7fb2f738046887b39">More...</a><br /></td></tr>
<tr class="separator:a5fb7161b42840be7fb2f738046887b39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44a9fe015ea8288a0a336b614ff2962b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a44a9fe015ea8288a0a336b614ff2962b">startOnce</a> ()</td></tr>
<tr class="memdesc:a44a9fe015ea8288a0a336b614ff2962b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start thread without internal loop. <a href="#a44a9fe015ea8288a0a336b614ff2962b">More...</a><br /></td></tr>
<tr class="separator:a44a9fe015ea8288a0a336b614ff2962b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad50035fe7d3a2557178b6b46f6fa4861"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#ad50035fe7d3a2557178b6b46f6fa4861">startOnce</a> (ThreadFunc func)</td></tr>
<tr class="memdesc:ad50035fe7d3a2557178b6b46f6fa4861"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start thread without internal loop. <a href="#ad50035fe7d3a2557178b6b46f6fa4861">More...</a><br /></td></tr>
<tr class="separator:ad50035fe7d3a2557178b6b46f6fa4861"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37e179466edd8011aca3a07e10153e62"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a37e179466edd8011aca3a07e10153e62">stop</a> (bool wait)</td></tr>
<tr class="memdesc:a37e179466edd8011aca3a07e10153e62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop thread. <a href="#a37e179466edd8011aca3a07e10153e62">More...</a><br /></td></tr>
<tr class="separator:a37e179466edd8011aca3a07e10153e62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2004de7b6aa59ecb50321571b932ec20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a2004de7b6aa59ecb50321571b932ec20">terminate</a> ()</td></tr>
<tr class="memdesc:a2004de7b6aa59ecb50321571b932ec20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Strongly stop thread. <a href="#a2004de7b6aa59ecb50321571b932ec20">More...</a><br /></td></tr>
<tr class="separator:a2004de7b6aa59ecb50321571b932ec20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bcffcc0d12bdd6d8ddd455a15241313"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a8bcffcc0d12bdd6d8ddd455a15241313">waitForStart</a> (int timeout_msecs)</td></tr>
<tr class="memdesc:a8bcffcc0d12bdd6d8ddd455a15241313"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for thread start. <a href="#a8bcffcc0d12bdd6d8ddd455a15241313">More...</a><br /></td></tr>
<tr class="separator:a8bcffcc0d12bdd6d8ddd455a15241313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae325266c7f3484ad52c0a5c690cc222c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#ae325266c7f3484ad52c0a5c690cc222c">waitForFinish</a> (int timeout_msecs)</td></tr>
<tr class="memdesc:ae325266c7f3484ad52c0a5c690cc222c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait for thread finish. <a href="#ae325266c7f3484ad52c0a5c690cc222c">More...</a><br /></td></tr>
<tr class="separator:ae325266c7f3484ad52c0a5c690cc222c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a221de2cf94a569a223bfc4456c0f4fed"><td class="memItemLeft" align="right" valign="top"><a id="a221de2cf94a569a223bfc4456c0f4fed"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a221de2cf94a569a223bfc4456c0f4fed">lock</a> ()</td></tr>
<tr class="memdesc:a221de2cf94a569a223bfc4456c0f4fed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lock internal mutex. <br /></td></tr>
<tr class="separator:a221de2cf94a569a223bfc4456c0f4fed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82baf1fe4608234ba76b68540100ee73"><td class="memItemLeft" align="right" valign="top"><a id="a82baf1fe4608234ba76b68540100ee73"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a82baf1fe4608234ba76b68540100ee73">unlock</a> ()</td></tr>
<tr class="memdesc:a82baf1fe4608234ba76b68540100ee73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlock internal mutex. <br /></td></tr>
<tr class="separator:a82baf1fe4608234ba76b68540100ee73"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Events</h2></td></tr>
<tr class="memitem:a6b91eb8632e75e0f00a625f28a0bedd1"><td class="memItemLeft" align="right" valign="top"><a id="a6b91eb8632e75e0f00a625f28a0bedd1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1">started</a> ()</td></tr>
<tr class="memdesc:a6b91eb8632e75e0f00a625f28a0bedd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raise on thread start. <br /></td></tr>
<tr class="separator:a6b91eb8632e75e0f00a625f28a0bedd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6350430814f777fdce81f99cbba4c1a"><td class="memItemLeft" align="right" valign="top"><a id="aa6350430814f777fdce81f99cbba4c1a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_thread.html#aa6350430814f777fdce81f99cbba4c1a">stopped</a> ()</td></tr>
<tr class="memdesc:aa6350430814f777fdce81f99cbba4c1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raise on thread stop. <br /></td></tr>
<tr class="separator:aa6350430814f777fdce81f99cbba4c1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_class_p_i_object"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_class_p_i_object')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="class_p_i_object.html">PIObject</a></td></tr>
<tr class="memitem:af4581f822cb17c489e34da1abca2764a inherit pub_static_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="af4581f822cb17c489e34da1abca2764a"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#af4581f822cb17c489e34da1abca2764a">piDisconnect</a> (<a class="el" href="class_p_i_object.html">PIObject</a> *src, const <a class="el" href="class_p_i_string.html">PIString</a> &amp;sig)</td></tr>
<tr class="memdesc:af4581f822cb17c489e34da1abca2764a inherit pub_static_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disconnect object "src" from all connections with event name "sig". <br /></td></tr>
<tr class="separator:af4581f822cb17c489e34da1abca2764a inherit pub_static_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d556c03cc2ba29fd2515abc470e3393 inherit pub_static_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a1d556c03cc2ba29fd2515abc470e3393"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a1d556c03cc2ba29fd2515abc470e3393">piDisconnect</a> (<a class="el" href="class_p_i_object.html">PIObject</a> *src)</td></tr>
<tr class="memdesc:a1d556c03cc2ba29fd2515abc470e3393 inherit pub_static_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter. <br /></td></tr>
<tr class="separator:a1d556c03cc2ba29fd2515abc470e3393 inherit pub_static_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe05189de1d6ebbf44a2e16cfe200848 inherit pub_static_methods_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="afe05189de1d6ebbf44a2e16cfe200848"></a>
static <a class="el" href="class_p_i_object.html">PIObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#afe05189de1d6ebbf44a2e16cfe200848">findByName</a> (const <a class="el" href="class_p_i_string.html">PIString</a> &amp;<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)</td></tr>
<tr class="memdesc:afe05189de1d6ebbf44a2e16cfe200848 inherit pub_static_methods_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns PIObject* with name "name" or 0, if there is no object found. <br /></td></tr>
<tr class="separator:afe05189de1d6ebbf44a2e16cfe200848 inherit pub_static_methods_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_class_p_i_object"><td colspan="2" onclick="javascript:toggleInherit('related_class_p_i_object')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="class_p_i_object.html">PIObject</a></td></tr>
<tr class="memitem:a722b67a967e55918f6921de66ecffce9 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a722b67a967e55918f6921de66ecffce9"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a722b67a967e55918f6921de66ecffce9">piCoutObj</a></td></tr>
<tr class="memdesc:a722b67a967e55918f6921de66ecffce9 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro used for conditional (piDebug and <a class="el" href="class_p_i_object.html#a8df5efbe08b98034b5ebadad11a2e94e" title="Return if debug of this object is active. ">PIObject::debug()</a>) output to <a class="el" href="class_p_i_cout.html" title="Class for formatted output similar std::cout. ">PICout</a> for subclasses of <a class="el" href="class_p_i_object.html" title="This is base class for any classes which use events -&gt; handlers mechanism. ">PIObject</a>. <br /></td></tr>
<tr class="separator:a722b67a967e55918f6921de66ecffce9 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affa62b02040517a34b3f173d804e487f inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="affa62b02040517a34b3f173d804e487f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#affa62b02040517a34b3f173d804e487f">PIOBJECT</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)</td></tr>
<tr class="memdesc:affa62b02040517a34b3f173d804e487f inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">you should use this macro after class declaration to use EVENT and EVENT_HANDLER and correct piCoutObj output <br /></td></tr>
<tr class="separator:affa62b02040517a34b3f173d804e487f inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd6444e57a0f7f25888c8b8293d3543 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a8cd6444e57a0f7f25888c8b8293d3543"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a8cd6444e57a0f7f25888c8b8293d3543">PIOBJECT_SUBCLASS</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, parent)</td></tr>
<tr class="memdesc:a8cd6444e57a0f7f25888c8b8293d3543 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">you should use this macro after class declaration to use EVENT and EVENT_HANDLER of parent class, and <em>scopeList()</em> <br /></td></tr>
<tr class="separator:a8cd6444e57a0f7f25888c8b8293d3543 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab605cf0454d34cc72c65bfed2abd696a inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ab605cf0454d34cc72c65bfed2abd696a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ab605cf0454d34cc72c65bfed2abd696a">EVENT_HANDLER0</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)&#160;&#160;&#160;ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>()</td></tr>
<tr class="memdesc:ab605cf0454d34cc72c65bfed2abd696a inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event handler "event" with name "name" and return type "ret", ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275" title="Returns object name. ">name()</a> <br /></td></tr>
<tr class="separator:ab605cf0454d34cc72c65bfed2abd696a inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56defa004e9b7efb2db50b3a43ca7225 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a56defa004e9b7efb2db50b3a43ca7225"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a56defa004e9b7efb2db50b3a43ca7225">EVENT_HANDLER1</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0)&#160;&#160;&#160;ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0)</td></tr>
<tr class="memdesc:a56defa004e9b7efb2db50b3a43ca7225 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event handler "event" with name "name" and return type "ret", ret name(type0 var0) <br /></td></tr>
<tr class="separator:a56defa004e9b7efb2db50b3a43ca7225 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb64b696544ee4ee8715add9747c1293 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="abb64b696544ee4ee8715add9747c1293"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#abb64b696544ee4ee8715add9747c1293">EVENT_HANDLER2</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1)&#160;&#160;&#160;ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1)</td></tr>
<tr class="memdesc:abb64b696544ee4ee8715add9747c1293 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1) <br /></td></tr>
<tr class="separator:abb64b696544ee4ee8715add9747c1293 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af90eced49fbdb43f5fc631fa7e7a44fb inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="af90eced49fbdb43f5fc631fa7e7a44fb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#af90eced49fbdb43f5fc631fa7e7a44fb">EVENT_HANDLER3</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2)&#160;&#160;&#160;ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2)</td></tr>
<tr class="memdesc:af90eced49fbdb43f5fc631fa7e7a44fb inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2) <br /></td></tr>
<tr class="separator:af90eced49fbdb43f5fc631fa7e7a44fb inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8a8499ba07a4cc16c0b15c51b197d9f inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ae8a8499ba07a4cc16c0b15c51b197d9f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ae8a8499ba07a4cc16c0b15c51b197d9f">EVENT_HANDLER4</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2, type3, var3)&#160;&#160;&#160;ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2, type3 var3)</td></tr>
<tr class="memdesc:ae8a8499ba07a4cc16c0b15c51b197d9f inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2, type3 var3) <br /></td></tr>
<tr class="separator:ae8a8499ba07a4cc16c0b15c51b197d9f inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae92ae8e64fbb4c6fa7d87cc1e93d55c0 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ae92ae8e64fbb4c6fa7d87cc1e93d55c0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ae92ae8e64fbb4c6fa7d87cc1e93d55c0">EVENT_HANDLER</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#ab605cf0454d34cc72c65bfed2abd696a">EVENT_HANDLER0</a></td></tr>
<tr class="memdesc:ae92ae8e64fbb4c6fa7d87cc1e93d55c0 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVENT_HANDLER is synonym of EVENT_HANDLER0. <br /></td></tr>
<tr class="separator:ae92ae8e64fbb4c6fa7d87cc1e93d55c0 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a338377c8ec10707dd26a168b8aef5c31 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a338377c8ec10707dd26a168b8aef5c31"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a338377c8ec10707dd26a168b8aef5c31">EVENT_VHANDLER0</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)&#160;&#160;&#160;virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>()</td></tr>
<tr class="memdesc:a338377c8ec10707dd26a168b8aef5c31 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare virtual event handler "event" with name "name" and return type "ret", virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275" title="Returns object name. ">name()</a> <br /></td></tr>
<tr class="separator:a338377c8ec10707dd26a168b8aef5c31 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf138848427466a7ae91ada5876f926d inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="abf138848427466a7ae91ada5876f926d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#abf138848427466a7ae91ada5876f926d">EVENT_VHANDLER1</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0)&#160;&#160;&#160;virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0)</td></tr>
<tr class="memdesc:abf138848427466a7ae91ada5876f926d inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0) <br /></td></tr>
<tr class="separator:abf138848427466a7ae91ada5876f926d inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0ba4a14c77b8d968dc13918f9b2d384 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ad0ba4a14c77b8d968dc13918f9b2d384"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ad0ba4a14c77b8d968dc13918f9b2d384">EVENT_VHANDLER2</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1)&#160;&#160;&#160;virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1)</td></tr>
<tr class="memdesc:ad0ba4a14c77b8d968dc13918f9b2d384 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1) <br /></td></tr>
<tr class="separator:ad0ba4a14c77b8d968dc13918f9b2d384 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f47b429ac594cebdca1567e1b9a1021 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a4f47b429ac594cebdca1567e1b9a1021"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a4f47b429ac594cebdca1567e1b9a1021">EVENT_VHANDLER3</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2)&#160;&#160;&#160;virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2)</td></tr>
<tr class="memdesc:a4f47b429ac594cebdca1567e1b9a1021 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2) <br /></td></tr>
<tr class="separator:a4f47b429ac594cebdca1567e1b9a1021 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96b2461314db11f3b68942bcd4b9d13d inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a96b2461314db11f3b68942bcd4b9d13d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a96b2461314db11f3b68942bcd4b9d13d">EVENT_VHANDLER4</a>(ret, <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2, type3, var3)&#160;&#160;&#160;virtual ret <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2, type3 var3)</td></tr>
<tr class="memdesc:a96b2461314db11f3b68942bcd4b9d13d inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) <br /></td></tr>
<tr class="separator:a96b2461314db11f3b68942bcd4b9d13d inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26a0e3181ebb2a90c11e9a7eb906a99e inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a26a0e3181ebb2a90c11e9a7eb906a99e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a26a0e3181ebb2a90c11e9a7eb906a99e">EVENT_VHANDLER</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#a338377c8ec10707dd26a168b8aef5c31">EVENT_VHANDLER0</a></td></tr>
<tr class="memdesc:a26a0e3181ebb2a90c11e9a7eb906a99e inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVENT_VHANDLER is synonym of EVENT_VHANDLER0. <br /></td></tr>
<tr class="separator:a26a0e3181ebb2a90c11e9a7eb906a99e inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fa760299649bc8aeaa0dcf4d605be70 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a4fa760299649bc8aeaa0dcf4d605be70"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a4fa760299649bc8aeaa0dcf4d605be70">EVENT0</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>)&#160;&#160;&#160;void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>();</td></tr>
<tr class="memdesc:a4fa760299649bc8aeaa0dcf4d605be70 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event "event" with name "name", void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275" title="Returns object name. ">name()</a>; <br /></td></tr>
<tr class="separator:a4fa760299649bc8aeaa0dcf4d605be70 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7083e0b630c70def2ce05d60d70a45b9 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a7083e0b630c70def2ce05d60d70a45b9"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a7083e0b630c70def2ce05d60d70a45b9">EVENT1</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0)&#160;&#160;&#160;void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0);</td></tr>
<tr class="memdesc:a7083e0b630c70def2ce05d60d70a45b9 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event "event" with name "name", void name(type0 var0); <br /></td></tr>
<tr class="separator:a7083e0b630c70def2ce05d60d70a45b9 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91d380b7235ad11b4830c4c2e8860618 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a91d380b7235ad11b4830c4c2e8860618"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a91d380b7235ad11b4830c4c2e8860618">EVENT2</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1)&#160;&#160;&#160;void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1);</td></tr>
<tr class="memdesc:a91d380b7235ad11b4830c4c2e8860618 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event "event" with name "name", void name(type0 var0, type1 var1); <br /></td></tr>
<tr class="separator:a91d380b7235ad11b4830c4c2e8860618 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a685a85b0791e73158dc0173b4e18dd00 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a685a85b0791e73158dc0173b4e18dd00"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a685a85b0791e73158dc0173b4e18dd00">EVENT3</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2)&#160;&#160;&#160;void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2);</td></tr>
<tr class="memdesc:a685a85b0791e73158dc0173b4e18dd00 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event "event" with name "name", void name(type0 var0, type1 var1, type2 var2); <br /></td></tr>
<tr class="separator:a685a85b0791e73158dc0173b4e18dd00 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59032ae5e0b94cdfb52be1f24d5e8252 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a59032ae5e0b94cdfb52be1f24d5e8252"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a59032ae5e0b94cdfb52be1f24d5e8252">EVENT4</a>(<a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>, type0, var0, type1, var1, type2, var2, type3, var3)&#160;&#160;&#160;void <a class="el" href="class_p_i_object.html#a5c3600479f3e919bbd4f905b7fedc275">name</a>(type0 var0, type1 var1, type2 var2, type3 var3);</td></tr>
<tr class="memdesc:a59032ae5e0b94cdfb52be1f24d5e8252 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">declare event "event" with name "name", void name(type0 var0, type1 var1, type2 var2, type3 var3); <br /></td></tr>
<tr class="separator:a59032ae5e0b94cdfb52be1f24d5e8252 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7877e997621e1161f058fce90febd464 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a7877e997621e1161f058fce90febd464"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a7877e997621e1161f058fce90febd464">EVENT</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#a4fa760299649bc8aeaa0dcf4d605be70">EVENT0</a></td></tr>
<tr class="memdesc:a7877e997621e1161f058fce90febd464 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">EVENT is synonym of EVENT0. <br /></td></tr>
<tr class="separator:a7877e997621e1161f058fce90febd464 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac86f9567fcbe10d7e49685e0a01b8427 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ac86f9567fcbe10d7e49685e0a01b8427"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ac86f9567fcbe10d7e49685e0a01b8427">CONNECTU</a>(src, event, dest, handler)</td></tr>
<tr class="memdesc:ac86f9567fcbe10d7e49685e0a01b8427 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler". "Event" and "handler" must has equal argument lists. <br /></td></tr>
<tr class="separator:ac86f9567fcbe10d7e49685e0a01b8427 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36eb41db41fc261cf97260d1dbe76867 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a36eb41db41fc261cf97260d1dbe76867"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a36eb41db41fc261cf97260d1dbe76867">CONNECTU_QUEUED</a>(src, event, dest, handler, performer)</td></tr>
<tr class="memdesc:a36eb41db41fc261cf97260d1dbe76867 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler". Event handler will be executed by "performer". "Event" and "handler" must has equal argument lists. <br /></td></tr>
<tr class="separator:a36eb41db41fc261cf97260d1dbe76867 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e74a7ce99df00a10517f5ce4aa66c5 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a38e74a7ce99df00a10517f5ce4aa66c5"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a38e74a7ce99df00a10517f5ce4aa66c5">CONNECT0</a>(ret, src, event, dest, handler)</td></tr>
<tr class="memdesc:a38e74a7ce99df00a10517f5ce4aa66c5 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists <br /></td></tr>
<tr class="separator:a38e74a7ce99df00a10517f5ce4aa66c5 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36132851189bb01db4957595111a28db inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a36132851189bb01db4957595111a28db"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a36132851189bb01db4957595111a28db">CONNECT1</a>(ret, type0, src, event, dest, handler)</td></tr>
<tr class="memdesc:a36132851189bb01db4957595111a28db inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists <br /></td></tr>
<tr class="separator:a36132851189bb01db4957595111a28db inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a850bbf4e8361a106c99da4c46f684247 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a850bbf4e8361a106c99da4c46f684247"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a850bbf4e8361a106c99da4c46f684247">CONNECT2</a>(ret, type0, type1, src, event, dest, handler)</td></tr>
<tr class="memdesc:a850bbf4e8361a106c99da4c46f684247 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists <br /></td></tr>
<tr class="separator:a850bbf4e8361a106c99da4c46f684247 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab45dbd69bde3cde22d4aba27ed585407 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ab45dbd69bde3cde22d4aba27ed585407"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ab45dbd69bde3cde22d4aba27ed585407">CONNECT3</a>(ret, type0, type1, type2, src, event, dest, handler)</td></tr>
<tr class="memdesc:ab45dbd69bde3cde22d4aba27ed585407 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists <br /></td></tr>
<tr class="separator:ab45dbd69bde3cde22d4aba27ed585407 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34e41d730c07354e07333def3d854019 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a34e41d730c07354e07333def3d854019"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a34e41d730c07354e07333def3d854019">CONNECT4</a>(ret, type0, type1, type2, type3, src, event, dest, handler)</td></tr>
<tr class="memdesc:a34e41d730c07354e07333def3d854019 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists <br /></td></tr>
<tr class="separator:a34e41d730c07354e07333def3d854019 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65528c74adc6691eac2c7a2f39328064 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a65528c74adc6691eac2c7a2f39328064"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a65528c74adc6691eac2c7a2f39328064">CONNECT</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#a38e74a7ce99df00a10517f5ce4aa66c5">CONNECT0</a></td></tr>
<tr class="memdesc:a65528c74adc6691eac2c7a2f39328064 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">CONNECT is synonym of CONNECT0. <br /></td></tr>
<tr class="separator:a65528c74adc6691eac2c7a2f39328064 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaaba5b68617a43903056bc175b8cd162 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="aaaba5b68617a43903056bc175b8cd162"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#aaaba5b68617a43903056bc175b8cd162">WEAK_CONNECT0</a>(ret, src, event, dest, handler)</td></tr>
<tr class="memdesc:aaaba5b68617a43903056bc175b8cd162 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists <br /></td></tr>
<tr class="separator:aaaba5b68617a43903056bc175b8cd162 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37d80492e781bf82b9c22c56977da81e inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a37d80492e781bf82b9c22c56977da81e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a37d80492e781bf82b9c22c56977da81e">WEAK_CONNECT1</a>(ret, type0, src, event, dest, handler)</td></tr>
<tr class="memdesc:a37d80492e781bf82b9c22c56977da81e inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists <br /></td></tr>
<tr class="separator:a37d80492e781bf82b9c22c56977da81e inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34134cc70172ef5a8d38ba8eb0db327d inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a34134cc70172ef5a8d38ba8eb0db327d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a34134cc70172ef5a8d38ba8eb0db327d">WEAK_CONNECT2</a>(ret, type0, type1, src, event, dest, handler)</td></tr>
<tr class="memdesc:a34134cc70172ef5a8d38ba8eb0db327d inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists <br /></td></tr>
<tr class="separator:a34134cc70172ef5a8d38ba8eb0db327d inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a601eb7e6e4c3c1a2ba741abbaf271fed inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a601eb7e6e4c3c1a2ba741abbaf271fed"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a601eb7e6e4c3c1a2ba741abbaf271fed">WEAK_CONNECT3</a>(ret, type0, type1, type2, src, event, dest, handler)</td></tr>
<tr class="memdesc:a601eb7e6e4c3c1a2ba741abbaf271fed inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists <br /></td></tr>
<tr class="separator:a601eb7e6e4c3c1a2ba741abbaf271fed inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a483ad0828f2c221308d95fd07ba1ee6e inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a483ad0828f2c221308d95fd07ba1ee6e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a483ad0828f2c221308d95fd07ba1ee6e">WEAK_CONNECT4</a>(ret, type0, type1, type2, type3, src, event, dest, handler)</td></tr>
<tr class="memdesc:a483ad0828f2c221308d95fd07ba1ee6e inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists <br /></td></tr>
<tr class="separator:a483ad0828f2c221308d95fd07ba1ee6e inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52fc22658e025b4c15c8a2454d81b289 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a52fc22658e025b4c15c8a2454d81b289"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a52fc22658e025b4c15c8a2454d81b289">WEAK_CONNECT</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#aaaba5b68617a43903056bc175b8cd162">WEAK_CONNECT0</a></td></tr>
<tr class="memdesc:a52fc22658e025b4c15c8a2454d81b289 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">WEAK_CONNECT is synonym of WEAK_CONNECT0. <br /></td></tr>
<tr class="separator:a52fc22658e025b4c15c8a2454d81b289 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed7fd8edaccbbca33c51417ca43ac32a inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="aed7fd8edaccbbca33c51417ca43ac32a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#aed7fd8edaccbbca33c51417ca43ac32a">DISCONNECT0</a>(ret, src, event, dest, handler)</td></tr>
<tr class="memdesc:aed7fd8edaccbbca33c51417ca43ac32a inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" <br /></td></tr>
<tr class="separator:aed7fd8edaccbbca33c51417ca43ac32a inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae030e8deb226c636d2df22076391f12c inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="ae030e8deb226c636d2df22076391f12c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#ae030e8deb226c636d2df22076391f12c">DISCONNECT1</a>(ret, type0, src, event, dest, handler)</td></tr>
<tr class="memdesc:ae030e8deb226c636d2df22076391f12c inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" <br /></td></tr>
<tr class="separator:ae030e8deb226c636d2df22076391f12c inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f0609bfd7dfcd4512d76480bc114dab inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a8f0609bfd7dfcd4512d76480bc114dab"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a8f0609bfd7dfcd4512d76480bc114dab">DISCONNECT2</a>(ret, type0, type1, src, event, dest, handler)</td></tr>
<tr class="memdesc:a8f0609bfd7dfcd4512d76480bc114dab inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" <br /></td></tr>
<tr class="separator:a8f0609bfd7dfcd4512d76480bc114dab inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2789f99d1916f231fc579f00370fa6f inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="af2789f99d1916f231fc579f00370fa6f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#af2789f99d1916f231fc579f00370fa6f">DISCONNECT3</a>(ret, type0, type1, type2, src, event, dest, handler)</td></tr>
<tr class="memdesc:af2789f99d1916f231fc579f00370fa6f inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" <br /></td></tr>
<tr class="separator:af2789f99d1916f231fc579f00370fa6f inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedf429d3192da764163c1377cad310e3 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="aedf429d3192da764163c1377cad310e3"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#aedf429d3192da764163c1377cad310e3">DISCONNECT4</a>(ret, type0, type1, type2, type3, src, event, dest, handler)</td></tr>
<tr class="memdesc:aedf429d3192da764163c1377cad310e3 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest" <br /></td></tr>
<tr class="separator:aedf429d3192da764163c1377cad310e3 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a587604e6f3570c0fc32794384d4d0d1f inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a587604e6f3570c0fc32794384d4d0d1f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a587604e6f3570c0fc32794384d4d0d1f">DISCONNECT</a>&#160;&#160;&#160;<a class="el" href="class_p_i_object.html#aed7fd8edaccbbca33c51417ca43ac32a">DISCONNECT0</a></td></tr>
<tr class="memdesc:a587604e6f3570c0fc32794384d4d0d1f inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">DISCONNECT is synonym of DISCONNECT0. <br /></td></tr>
<tr class="separator:a587604e6f3570c0fc32794384d4d0d1f inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f7b0da6b28ced23e1deee48dde17c98 inherit related_class_p_i_object"><td class="memItemLeft" align="right" valign="top"><a id="a3f7b0da6b28ced23e1deee48dde17c98"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_i_object.html#a3f7b0da6b28ced23e1deee48dde17c98">HANDLER</a>(handler)</td></tr>
<tr class="memdesc:a3f7b0da6b28ced23e1deee48dde17c98 inherit related_class_p_i_object"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns pointer to events handler "handler". <br /></td></tr>
<tr class="separator:a3f7b0da6b28ced23e1deee48dde17c98 inherit related_class_p_i_object"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Thread class. </p>
<p>This class allow you exec your code in separate thread.</p>
<h1><a class="anchor" id="PIThread_sec0"></a>
Synopsis</h1>
<p>Multithreading allow you to write program which will be executed in several threads simultaneously. This trend allow you to use all cores of modern processors, but there are many dangers.</p>
<p>This class provide virtual functions <em><a class="el" href="class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0" title="Function executed once at the start of thread. ">begin()</a></em>, <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> and <em><a class="el" href="class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c" title="Function executed once at the end of thread. ">end()</a></em>, which describes start, execution and finish work of some process. These functions executes in <b>separate</b> thread. When you execute <em>start()</em>, PIThread create separate system thread and sequentially executes function <em><a class="el" href="class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0" title="Function executed once at the start of thread. ">begin()</a></em>, <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> and <em><a class="el" href="class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c" title="Function executed once at the end of thread. ">end()</a></em>. You can reimplement each function and write your own code to execute. Scheme of functions executing: </p><div class="fragment"><div class="line"><a class="code" href="class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0">begin</a>();</div><div class="line"><span class="keyword">event</span> <a class="code" href="class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1">started</a>();</div><div class="line"><span class="keywordflow">while</span> (<a class="code" href="class_p_i_thread.html#a2281bcd181604a34fa3e5d1c9ac4edef">isRunning</a>()) {</div><div class="line"> <a class="code" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e">run</a>();</div><div class="line"> ThreadFunc();</div><div class="line"> <a class="code" href="pitime_8h.html#a242b1482cf8e5f7a8c5d087a2d2b5e3b">msleep</a>(timer_delay);</div><div class="line">}</div><div class="line"><span class="keyword">event</span> <a class="code" href="class_p_i_thread.html#aa6350430814f777fdce81f99cbba4c1a">stopped</a>();</div><div class="line"><a class="code" href="class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c">end</a>();</div></div><!-- fragment --><p> Unlike from directly using "pthread" or some similar you doesn`t need to write your own main thread cycle and sleep at every cycle end. PIThread make it for you, and your job is to set sleep value from contructor or when starting thread, and reimplement <em><a class="el" href="class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0" title="Function executed once at the start of thread. ">begin()</a></em>, <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> and <em><a class="el" href="class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c" title="Function executed once at the end of thread. ">end()</a></em> functions.</p>
<h1><a class="anchor" id="PIThread_sec1"></a>
Using without subclassing</h1>
<p>You can use PIThread without subclassing by using "ThreadFunc" pointer that can be set from constructor or by overloaded function <em>start(ThreadFunc func, int timer_delay)</em>. If "func" if not null this function will be executed as <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em>. ThreadFunc is any static function with format void func(void * data). "Data" is custom data set from constructor or with function <em><a class="el" href="class_p_i_thread.html#a221e15d1a4093b7db6cc579fc8be69b6" title="Set common data passed to external function. ">setData()</a></em>. <br />
Also you can connect to event <em><a class="el" href="class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1" title="Raise on thread start. ">started()</a></em>, but in this case you should to white your thread main cycle, because this event raised only one time.</p>
<h1><a class="anchor" id="PIThread_sec2"></a>
Locking</h1>
<p>PIThread has inrternal mutex that can be locked and unlocked every <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> if you set this flag with function <em><a class="el" href="class_p_i_thread.html#a87a8b9315e3e2c0eb8bfeb864474da57" title="Set necessity of lock every run with internal mutex. ">needLockRun(bool)</a></em>. Also you can access to this mutex by functions <em><a class="el" href="class_p_i_thread.html#a221de2cf94a569a223bfc4456c0f4fed" title="Lock internal mutex. ">lock()</a></em>, <em><a class="el" href="class_p_i_thread.html#a82baf1fe4608234ba76b68540100ee73" title="Unlock internal mutex. ">unlock()</a></em> and <em><a class="el" href="class_p_i_thread.html#aeaff22c99b5f5ba444671d658eba2f14" title="Returns internal mutex. ">mutex()</a></em>. Using this functions together with needLockRun(true) can guarantee one-thread access to some data. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a3ddcafb0b09d3ed258a519882986a77b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ddcafb0b09d3ed258a519882986a77b">&#9670;&nbsp;</a></span>Priority</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b">PIThread::Priority</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Priority of thread. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3ddcafb0b09d3ed258a519882986a77ba4dbd54fc5158a029c682b718f48312d4"></a>piLowerst&#160;</td><td class="fielddoc"><p>Lowest </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ddcafb0b09d3ed258a519882986a77ba46703d0258b11d41c52a266b2b10b6d9"></a>piLow&#160;</td><td class="fielddoc"><p>Low </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ddcafb0b09d3ed258a519882986a77babd362bfacabbd61d69793cceb449425c"></a>piNormal&#160;</td><td class="fielddoc"><p>Normal, this is default priority of threads and timers </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ddcafb0b09d3ed258a519882986a77ba0e6861fee3e57cf6ba026a7553e69576"></a>piHigh&#160;</td><td class="fielddoc"><p>High </p>
</td></tr>
<tr><td class="fieldname"><a id="a3ddcafb0b09d3ed258a519882986a77ba18babfebe41163fbb810eb41357a6347"></a>piHighest&#160;</td><td class="fielddoc"><p>Highest </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5fb7161b42840be7fb2f738046887b39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5fb7161b42840be7fb2f738046887b39">&#9670;&nbsp;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool PIThread::start </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timer_delay</em> = <code>-1</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start thread. </p>
<p>Start execution of <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> in internal loop with "timer_delay" delay in milliseconds. If "timer_delay" &lt;= 0 there is no delay in loop. Thread also exec external function set by <em><a class="el" href="class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee" title="Set external function that will be executed after every run() ">setSlot()</a></em> if it`s not null</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if thread already started or can`t start thread </dd></dl>
</div>
</div>
<a id="a44a9fe015ea8288a0a336b614ff2962b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44a9fe015ea8288a0a336b614ff2962b">&#9670;&nbsp;</a></span>startOnce() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool PIThread::startOnce </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start thread without internal loop. </p>
<p>Start execution of <em><a class="el" href="class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e" title="Function executed at every &quot;timer_delay&quot; msecs until thread was stopped. ">run()</a></em> once. Thread also exec external function set by <em><a class="el" href="class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee" title="Set external function that will be executed after every run() ">setSlot()</a></em> if it`s not null</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if thread already started or can`t start thread </dd></dl>
</div>
</div>
<a id="ad50035fe7d3a2557178b6b46f6fa4861"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad50035fe7d3a2557178b6b46f6fa4861">&#9670;&nbsp;</a></span>startOnce() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool PIThread::startOnce </td>
<td>(</td>
<td class="paramtype">ThreadFunc&#160;</td>
<td class="paramname"><em>func</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Start thread without internal loop. </p>
<p>Overloaded function. Set external function "func" before start</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if thread already started or can`t start thread </dd></dl>
</div>
</div>
<a id="a37e179466edd8011aca3a07e10153e62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37e179466edd8011aca3a07e10153e62">&#9670;&nbsp;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PIThread::stop </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>wait</em> = <code>false</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop thread. </p>
<p>Stop execution of thread and wait for it finish if "wait" is <code>true</code>. This function can block for infinite time if "wait" is <code>true</code> and any of thread function is busy forever </p>
</div>
</div>
<a id="a2004de7b6aa59ecb50321571b932ec20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2004de7b6aa59ecb50321571b932ec20">&#9670;&nbsp;</a></span>terminate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PIThread::terminate </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Strongly stop thread. </p>
<p>Stop execution of thread immediately </p>
</div>
</div>
<a id="a8bcffcc0d12bdd6d8ddd455a15241313"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8bcffcc0d12bdd6d8ddd455a15241313">&#9670;&nbsp;</a></span>waitForStart()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool PIThread::waitForStart </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout_msecs</em> = <code>-1</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait for thread start. </p>
<p>This function block until thread finish for "timeout_msecs" or forever if "timeout_msecs" &lt; 0</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if timeout is exceeded </dd></dl>
</div>
</div>
<a id="ae325266c7f3484ad52c0a5c690cc222c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae325266c7f3484ad52c0a5c690cc222c">&#9670;&nbsp;</a></span>waitForFinish()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool PIThread::waitForFinish </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout_msecs</em> = <code>-1</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wait for thread finish. </p>
<p>This function block until thread start for "timeout_msecs" or forever if "timeout_msecs" &lt; 0</p>
<dl class="section return"><dt>Returns</dt><dd><code>false</code> if timeout is exceeded </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_p_i_thread.html">PIThread</a></li>
<li class="footer">Generated on Fri Dec 8 2017 16:36:05 for PIP by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>