Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > ba6e5e1a033bd8535c43a771ce407926 > files > 200

lib64cxx-gtk-utils2.2-devel-2.2.3-2.mga4.x86_64.rpm

<!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.4"/>
<title>c++-gtk-utils: Cgu::SafeEmitterArg&lt; FreeArgs &gt; Class Template 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="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 style="padding-left: 0.5em;">
   <div id="projectname">c++-gtk-utils
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceCgu.html">Cgu</a></li><li class="navelem"><a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classCgu_1_1SafeEmitterArg-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Cgu::SafeEmitterArg&lt; FreeArgs &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection.  
 <a href="classCgu_1_1SafeEmitterArg.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="emitter_8h_source.html">c++-gtk-utils/emitter.h</a>&gt;</code></p>
<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:aa3e5c435e333cd65b11bf41560b57993"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#aa3e5c435e333cd65b11bf41560b57993">operator()</a> (typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...args) const </td></tr>
<tr class="separator:aa3e5c435e333cd65b11bf41560b57993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5ee050b9558e2667609d65d5e30a164"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#ac5ee050b9558e2667609d65d5e30a164">emit</a> (typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...args) const </td></tr>
<tr class="separator:ac5ee050b9558e2667609d65d5e30a164"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a8eda198dc9b132c56c94c6f74b7101"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a5a8eda198dc9b132c56c94c6f74b7101">test_emit</a> (typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...args) const </td></tr>
<tr class="separator:a5a8eda198dc9b132c56c94c6f74b7101"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e819ecdc89cf0685cf4ef1ca7e133ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a><br class="typebreak"/>
&lt; FreeArgs...&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect</a> (const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;f)</td></tr>
<tr class="separator:a0e819ecdc89cf0685cf4ef1ca7e133ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a679a5dbd8df2da27e44e47b9b19b3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a><br class="typebreak"/>
&lt; FreeArgs...&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a0a679a5dbd8df2da27e44e47b9b19b3e">connect</a> (const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;f, <a class="el" href="classCgu_1_1Releaser.html">Releaser</a> &amp;r)</td></tr>
<tr class="separator:a0a679a5dbd8df2da27e44e47b9b19b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64c10974fce4d9fea0700bb861f89a76"><td class="memTemplParams" colspan="2">template&lt;class F , class  = typename std::enable_if&lt;!std::is_convertible&lt;typename std::remove_reference&lt;F&gt;::type,								 const Callback::SafeFunctorArg&lt;FreeArgs...&gt;&gt;::value&gt;::type&gt; </td></tr>
<tr class="memitem:a64c10974fce4d9fea0700bb861f89a76"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a><br class="typebreak"/>
&lt; FreeArgs...&gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a64c10974fce4d9fea0700bb861f89a76">connect</a> (F &amp;&amp;f)</td></tr>
<tr class="separator:a64c10974fce4d9fea0700bb861f89a76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21df79455358c33cda1142cc965c6520"><td class="memTemplParams" colspan="2">template&lt;class F , class  = typename std::enable_if&lt;!std::is_convertible&lt;typename std::remove_reference&lt;F&gt;::type,								 const Callback::SafeFunctorArg&lt;FreeArgs...&gt;&gt;::value&gt;::type&gt; </td></tr>
<tr class="memitem:a21df79455358c33cda1142cc965c6520"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a><br class="typebreak"/>
&lt; FreeArgs...&gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a21df79455358c33cda1142cc965c6520">connect</a> (F &amp;&amp;f, <a class="el" href="classCgu_1_1Releaser.html">Releaser</a> &amp;r)</td></tr>
<tr class="separator:a21df79455358c33cda1142cc965c6520"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfeb1fed8bb05f7f0483464d32d184b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#abfeb1fed8bb05f7f0483464d32d184b3">disconnect</a> (const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;f)</td></tr>
<tr class="separator:abfeb1fed8bb05f7f0483464d32d184b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b30364c9868e034b95381e21f6ac3b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a8b30364c9868e034b95381e21f6ac3b3">block</a> (const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;f)</td></tr>
<tr class="separator:a8b30364c9868e034b95381e21f6ac3b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdafe677209da664311bf6c790f43a66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#acdafe677209da664311bf6c790f43a66">unblock</a> (const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;f)</td></tr>
<tr class="separator:acdafe677209da664311bf6c790f43a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a411155e50fbe82553dd0469b4b3400"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a5a411155e50fbe82553dd0469b4b3400">SafeEmitterArg</a> ()=default</td></tr>
<tr class="separator:a5a411155e50fbe82553dd0469b4b3400"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dc983f336b5b6afbc913909bb545545"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a2dc983f336b5b6afbc913909bb545545">SafeEmitterArg</a> (const <a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> &amp;)=delete</td></tr>
<tr class="separator:a2dc983f336b5b6afbc913909bb545545"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a073537a19c83f3f6c74c0298bc2fff4f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a073537a19c83f3f6c74c0298bc2fff4f">operator=</a> (const <a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> &amp;)=delete</td></tr>
<tr class="separator:a073537a19c83f3f6c74c0298bc2fff4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3503d12462644fe4e5ae550a15dc680"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#ac3503d12462644fe4e5ae550a15dc680">~SafeEmitterArg</a> ()</td></tr>
<tr class="separator:ac3503d12462644fe4e5ae550a15dc680"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a7da488c16ea71dec707ecd88d3251011"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCgu_1_1SafeEmitterArg.html#a7da488c16ea71dec707ecd88d3251011">Releaser</a></td></tr>
<tr class="separator:a7da488c16ea71dec707ecd88d3251011"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class... FreeArgs&gt;<br/>
class Cgu::SafeEmitterArg&lt; FreeArgs &gt;</h3>

<p>A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection. </p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classCgu_1_1EmitterArg.html" title="A class to execute callbacks connected to it, with provision for automatic disconnection. ">EmitterArg</a> <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> </dd>
<dd>
<a class="el" href="emitter_8h.html" title="This file provides a thread-safe signal/slot mechanism, with automatic disconnection. ">emitter.h</a> </dd>
<dd>
<a class="el" href="namespaceCgu_1_1Callback.html" title="This namespace provides classes for type erasure. ">Callback</a> namespace</dd></dl>
<p>This is a thread-safe version of the <a class="el" href="classCgu_1_1EmitterArg.html" title="A class to execute callbacks connected to it, with provision for automatic disconnection. ">EmitterArg</a> class. Callable objects (such as lambda expressions or the return value of std::bind) or <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> objects may be connected to SafeEmitter classes (referred to be below as "connected
callables"), and will be executed when <a class="el" href="classCgu_1_1SafeEmitterArg.html#ac5ee050b9558e2667609d65d5e30a164">SafeEmitterArg::emit()</a> or <a class="el" href="classCgu_1_1SafeEmitterArg.html#aa3e5c435e333cd65b11bf41560b57993">SafeEmitterArg::operator()()</a> are called.</p>
<p>One version of the <a class="el" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect()</a> method takes a <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> object as an argument. Such a <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> object should be a public member of any target class which wants connected callables representing (or calling into) any of its methods to be disconnected automatically from the <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object when the target class object is destroyed.</p>
<p>A connection may be explicitly disconnected by calling the <a class="el" href="classCgu_1_1SafeEmitterArg.html#abfeb1fed8bb05f7f0483464d32d184b3">disconnect()</a> method, and may also be temporarily blocked and subsequently unblocked with the <a class="el" href="classCgu_1_1SafeEmitterArg.html#a8b30364c9868e034b95381e21f6ac3b3">block()</a> and <a class="el" href="classCgu_1_1SafeEmitterArg.html#acdafe677209da664311bf6c790f43a66">unblock()</a> methods.</p>
<p>The template types are the types of the unbound arguments, if any. SafeEmitterArg&lt;&gt; is typedef'ed to SafeEmitter.</p>
<p><b>Usage</b> </p>
<p>These are examples:</p>
<div class="fragment"><div class="line"><span class="keyword">using namespace </span>Cgu;</div>
<div class="line"></div>
<div class="line"><a class="code" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitter</a> se1;</div>
<div class="line">se1.<a class="code" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect</a>([] () {std::cout &lt;&lt; <span class="stringliteral">&quot;Hello world\n&quot;</span>;});</div>
<div class="line">se1();</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> res;</div>
<div class="line"><a class="code" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg&lt;int, int&amp;&gt;</a> se2;</div>
<div class="line">se2.<a class="code" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect</a>([] (<span class="keywordtype">int</span> i, <span class="keywordtype">int</span>&amp; j) {j = 10 * i;});</div>
<div class="line">se2(2, res);</div>
<div class="line">std::cout &lt;&lt; <span class="stringliteral">&quot;10 times 2 is &quot;</span> &lt;&lt; res &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
</div><!-- fragment --><p><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> objects may be connected to an emitter, and the <a class="el" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect()</a> method may be directly initialized with the result of <a class="el" href="namespaceCgu_1_1Callback.html#a3e32d4f4961c618aa7e03bda00f398b8">Callback::make()</a>, <a class="el" href="namespaceCgu_1_1Callback.html#a94b122ac99f423928320240fd48d571b">Callback::make_ref()</a> or <a class="el" href="namespaceCgu_1_1Callback.html#ab0b54bd51f4ff2c80e5b593dc962be13">Callback::lambda()</a> and implicit conversion will take place. Here is an example using <a class="el" href="namespaceCgu_1_1Callback.html#a94b122ac99f423928320240fd48d571b">Callback::make_ref()</a>, with a class object my_obj of type MyClass, with a method void MyClass::my_method(const Something&amp;, int):</p>
<div class="fragment"><div class="line"><span class="keyword">using namespace </span>Cgu;</div>
<div class="line"></div>
<div class="line">Something arg;</div>
<div class="line"><a class="code" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg&lt;int&gt;</a> se;</div>
<div class="line">se.<a class="code" href="classCgu_1_1SafeEmitterArg.html#a0e819ecdc89cf0685cf4ef1ca7e133ae">connect</a>(<a class="code" href="namespaceCgu_1_1Callback.html#a94b122ac99f423928320240fd48d571b">Callback::make_ref</a>(my_obj, &amp;MyClass::my_method, arg);</div>
<div class="line">se(5);</div>
</div><!-- fragment --><p>For further background, including about thread-safety and exception safety and other matters, read this: <a class="el" href="emitter_8h.html" title="This file provides a thread-safe signal/slot mechanism, with automatic disconnection. ">emitter.h</a>, or for more information about bound and unbound arguments, read this: <a class="el" href="namespaceCgu_1_1Callback.html" title="This namespace provides classes for type erasure. ">Cgu::Callback</a>. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5a411155e50fbe82553dd0469b4b3400"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::<a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> </td>
          <td>(</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The constructor might throw std::bad_alloc if memory is exhausted and the system throws in that case. </td></tr>
    <tr><td class="paramname"><a class="el" href="structCgu_1_1Thread_1_1MutexError.html">Thread::MutexError</a></td><td>The constructor might throw <a class="el" href="structCgu_1_1Thread_1_1MutexError.html">Thread::MutexError</a> if initialisation of the contained mutex fails. (It is often not worth checking for this, as it means either memory is exhausted or pthread has run out of other resources to create new mutexes.) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2dc983f336b5b6afbc913909bb545545"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::<a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a>&lt; FreeArgs &gt; &amp;&#160;</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This class cannot be copied. The copy constructor is deleted. </p>

</div>
</div>
<a class="anchor" id="ac3503d12462644fe4e5ae550a15dc680"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::~<a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a> </td>
          <td>(</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The destructor does not throw provided that the destructors of any bound arguments do not throw (as they should not do), and assuming that merely iterating through a list does not throw (as it would not on any sane implementation). It is thread-safe as regards the dropping of any connected functors and of any relevant <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> objects. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a8b30364c9868e034b95381e21f6ac3b3"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::block </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;&#160;</td>
          <td class="paramname"><em>f</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Blocks a connected functor from executing when <a class="el" href="classCgu_1_1SafeEmitterArg.html#ac5ee050b9558e2667609d65d5e30a164">emit()</a> or <a class="el" href="classCgu_1_1SafeEmitterArg.html#aa3e5c435e333cd65b11bf41560b57993">operator()()</a> is called until <a class="el" href="classCgu_1_1SafeEmitterArg.html#acdafe677209da664311bf6c790f43a66">unblock()</a> is called. This method does not throw (assuming that merely iterating through a list does not throw, as it would not on any sane implementation). It is thread safe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The functor to block. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the same functor has been connected more than once to the same <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object, this call will block all of them. </dd></dl>

</div>
</div>
<a class="anchor" id="a0e819ecdc89cf0685cf4ef1ca7e133ae"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;&#160;</td>
          <td class="paramname"><em>f</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Connects a <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object to connect. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object connected. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0a679a5dbd8df2da27e44e47b9b19b3e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCgu_1_1Releaser.html">Releaser</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Connects a <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object to connect. </td></tr>
    <tr><td class="paramname">r</td><td>A <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> object for automatic disconnection of the <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object if the object whose method it represents is destroyed. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object connected. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a64c10974fce4d9fea0700bb861f89a76"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<div class="memtemplate">
template&lt;class F , class  = typename std::enable_if&lt;!std::is_convertible&lt;typename std::remove_reference&lt;F&gt;::type,								 const Callback::SafeFunctorArg&lt;FreeArgs...&gt;&gt;::value&gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt;FreeArgs...&gt; <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</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>Connects a callable object, such as formed by a lambda expression or the result of std::bind. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The callable object to connect. If must have the same unbound argument types as the <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object concerned. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object which can be passed to <a class="el" href="classCgu_1_1SafeEmitterArg.html#abfeb1fed8bb05f7f0483464d32d184b3">disconnect()</a>, <a class="el" href="classCgu_1_1SafeEmitterArg.html#a8b30364c9868e034b95381e21f6ac3b3">block()</a> or <a class="el" href="classCgu_1_1SafeEmitterArg.html#acdafe677209da664311bf6c790f43a66">unblock()</a>. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. If might also throw if the copy or move constructor of the callable object throws.</td></tr>
  </table>
  </dd>
</dl>
<p>Since 2.1.0 </p>

</div>
</div>
<a class="anchor" id="a21df79455358c33cda1142cc965c6520"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<div class="memtemplate">
template&lt;class F , class  = typename std::enable_if&lt;!std::is_convertible&lt;typename std::remove_reference&lt;F&gt;::type,								 const Callback::SafeFunctorArg&lt;FreeArgs...&gt;&gt;::value&gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt;FreeArgs...&gt; <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::connect </td>
          <td>(</td>
          <td class="paramtype">F &amp;&amp;&#160;</td>
          <td class="paramname"><em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classCgu_1_1Releaser.html">Releaser</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</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>Connects a callable object, such as formed by a lambda expression or the result of std::bind. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The callable object to connect. If must have the same unbound argument types as the <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object concerned. </td></tr>
    <tr><td class="paramname">r</td><td>A <a class="el" href="classCgu_1_1Releaser.html" title="A class used for tracking EmitterArg and SafeEmitterArg connections. ">Releaser</a> object for automatic disconnection of the callable object if an object whose method it represents or calls into is destroyed. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html" title="Functor class holding a Callback::CallbackArg object, with thread-safe reference count. ">Callback::SafeFunctorArg</a> object which can be passed to <a class="el" href="classCgu_1_1SafeEmitterArg.html#abfeb1fed8bb05f7f0483464d32d184b3">disconnect()</a>, <a class="el" href="classCgu_1_1SafeEmitterArg.html#a8b30364c9868e034b95381e21f6ac3b3">block()</a> or <a class="el" href="classCgu_1_1SafeEmitterArg.html#acdafe677209da664311bf6c790f43a66">unblock()</a>. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. If might also throw if the copy or move constructor of the callable object throws.</td></tr>
  </table>
  </dd>
</dl>
<p>Since 2.1.0 </p>

</div>
</div>
<a class="anchor" id="abfeb1fed8bb05f7f0483464d32d184b3"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::disconnect </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;&#160;</td>
          <td class="paramname"><em>f</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Disconnects a functor previously connected. This does not throw provided that the destructors of any bound arguments do not throw (as they should not do), and assuming that merely iterating through a list does not throw (as it would not on any sane implementation). It is thread safe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The functor to disconnect. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the same functor has been connected more than once to the same <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object, this call will disconnect all of them. </dd></dl>

</div>
</div>
<a class="anchor" id="ac5ee050b9558e2667609d65d5e30a164"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::emit </td>
          <td>(</td>
          <td class="paramtype">typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...&#160;</td>
          <td class="paramname"><em>args</em>)</td><td></td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This will execute the connected functors. It is thread safe if the functions or class methods referenced by the connected functors are thread safe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">args</td><td>The unbound arguments to be passed to the referenced function or class method, if any. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. In addition, it will throw if the functions or class methods referenced by the functors throw (or if the copy constructor of a free or bound argument throws and it is not a reference argument). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa3e5c435e333cd65b11bf41560b57993"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::operator() </td>
          <td>(</td>
          <td class="paramtype">typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...&#160;</td>
          <td class="paramname"><em>args</em>)</td><td></td>
          <td> const</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>This will execute the connected functors. It is thread safe if the functions or class methods referenced by the connected functors are thread safe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">args</td><td>The unbound arguments to be passed to the referenced function or class method, if any. </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. In addition, it will throw if the functions or class methods referenced by the functors throw (or if the copy constructor of a free or bound argument throws and it is not a reference argument). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a073537a19c83f3f6c74c0298bc2fff4f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a>&amp; <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1SafeEmitterArg.html">SafeEmitterArg</a>&lt; FreeArgs &gt; &amp;&#160;</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This class cannot be copied. The assignment operator is deleted. </p>

</div>
</div>
<a class="anchor" id="a5a8eda198dc9b132c56c94c6f74b7101"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::test_emit </td>
          <td>(</td>
          <td class="paramtype">typename <a class="el" href="structCgu_1_1Param.html">Cgu::Param</a>&lt; FreeArgs &gt;::ParamType...&#160;</td>
          <td class="paramname"><em>args</em>)</td><td></td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This will execute the connected functors, but it also reports whether in fact there were any connected functors to execute. It is thread safe if the functions or class methods referenced by the connected functors are thread safe. (It is not necessary to use this function just because it is not known whether a functor is connected - if the standard <a class="el" href="classCgu_1_1SafeEmitterArg.html#ac5ee050b9558e2667609d65d5e30a164">emit()</a> function is called when no functor is connected, nothing will happen. The feature of this method is that it will report the outcome.) </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">args</td><td>The unbound arguments to be passed to the referenced function or class method, if any. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns false if there were no functors to execute, or true if functors have been executed. </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::bad_alloc</td><td>The method might throw std::bad_alloc if memory is exhausted and the system throws in that case. In addition, it will throw if the functions or class methods referenced by the functors throw (or if the copy constructor of a free or bound argument throws and it is not a reference argument). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acdafe677209da664311bf6c790f43a66"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCgu_1_1SafeEmitterArg.html">Cgu::SafeEmitterArg</a>&lt; FreeArgs &gt;::unblock </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classCgu_1_1Callback_1_1SafeFunctorArg.html">Callback::SafeFunctorArg</a>&lt; FreeArgs...&gt; &amp;&#160;</td>
          <td class="paramname"><em>f</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Unblocks a previously blocked functor. This method does not throw (assuming that merely iterating through a list does not throw, as it would not on any sane implementation). It is thread safe. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td>The functor to unblock. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the same functor has been connected more than once to the same <a class="el" href="classCgu_1_1SafeEmitterArg.html" title="A thread-safe class to execute callbacks connected to it, with provision for automatic disconnection...">SafeEmitterArg</a> object, this call will unblock all of them. </dd></dl>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="a7da488c16ea71dec707ecd88d3251011"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class... FreeArgs&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classCgu_1_1Releaser.html">Releaser</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="emitter_8h_source.html">emitter.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Sep 16 2013 20:45:31 for c++-gtk-utils by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>