< typename <br class="typebreak" />
<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a8c550ff8d18548ba962af29309880eeb">NewCallbackWithOutput</a> (void(T::*method)(int32_t, Output))</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename Output > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a><br class="typebreak" />
-< typename <br class="typebreak" />
-<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
-< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#aea74805def24c8f5271e7907bd858205">NewExtCallbackWithOutput</a> (void(T::*method)(int32_t, Output))</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1_completion_callback.html">CompletionCallback</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#aaa341cc4aa04c12dfe58a4452467b225">NewCallback</a> (Method method, const A &a)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A > </td></tr>
< typename <br class="typebreak" />
<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a85f3416759e1d7297025f5a0fb037fd9">NewCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A), const A &a)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename Output , typename A > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a><br class="typebreak" />
-< typename <br class="typebreak" />
-<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
-< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#aadbadcf3365c39ce5620977ea1609fcf">NewExtCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A), const A &a)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A , typename B > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1_completion_callback.html">CompletionCallback</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a3d32cb2060a1da7ce73e8657c94f15fa">NewCallback</a> (Method method, const A &a, const B &b)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A , typename B > </td></tr>
< typename <br class="typebreak" />
<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a5f1288cad38fa17aa1f07f5793908e24">NewCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A, B), const A &a, const B &b)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename Output , typename A , typename B > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a><br class="typebreak" />
-< typename <br class="typebreak" />
-<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
-< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a50b2c6949e50d88f2bb4f8c08017671c">NewExtCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A, B), const A &a, const B &b)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A , typename B , typename C > </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1_completion_callback.html">CompletionCallback</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a4110e491c1358c951903ef1b0fecf58d">NewCallback</a> (Method method, const A &a, const B &b, const C &c)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename Method , typename A , typename B , typename C > </td></tr>
< typename <br class="typebreak" />
<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#a3653f981f4decf82d697e46a6d21519f">NewCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A, B, C), const A &a, const B &b, const C &c)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename Output , typename A , typename B , typename C > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a><br class="typebreak" />
-< typename <br class="typebreak" />
-<a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><br class="typebreak" />
-< Output >::StorageType > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpp_1_1_completion_callback_factory.html#ae5d26a15726c295a45e8ab596507dfde">NewExtCallbackWithOutput</a> (void(T::*method)(int32_t, Output, A, B, C), const A &a, const B &b, const C &c)</td></tr>
</table>
<hr /><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><h3>template<typename T, typename ThreadTraits = ThreadSafeThreadTraits><br />
}
}
</pre></div><p>As with regular completion callbacks, you can optionally add up to three bound arguments. These are passed following the output argument.</p>
-<p>Your callback may take the output argument as a copy (common for small types like integers, a const reference (common for structures and resources to avoid an extra copy), or as a non-const reference. One optimization you can do if your callback function may take large arrays is to accept your output argument as a non-const reference and to swap() the argument with a vector of your own to store it. This means you don't have to copy the buffer to consume it.</p>
-<p>NewExtCallbackWithOutput is similar to NewCallbackWithOutput. It creates <a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html" title="ExtCompletionCallbackWithOutput is similar to CompletionCallbackWithOutput, but used by APIs within t...">ext::ExtCompletionCallbackWithOutput</a> instances which are used by APIs within the <a class="el" href="namespacepp_1_1ext.html">pp::ext</a> namespace. </p>
+<p>Your callback may take the output argument as a copy (common for small types like integers, a const reference (common for structures and resources to avoid an extra copy), or as a non-const reference. One optimization you can do if your callback function may take large arrays is to accept your output argument as a non-const reference and to swap() the argument with a vector of your own to store it. This means you don't have to copy the buffer to consume it. </p>
</div><hr /><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="ab870c8d37638facb949a86226c5138dc"></a><!-- doxytag: member="pp::CompletionCallbackFactory::CompletionCallbackFactory" ref="ab870c8d37638facb949a86226c5138dc" args="(T *object=NULL)" -->
<div class="memitem">
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code><a class="el" href="classpp_1_1_completion_callback.html" title="This API enables you to implement and receive callbacks when Pepper operations complete asynchronousl...">CompletionCallback</a></code>. </dd></dl>
</div>
</div>
-<a class="anchor" id="aea74805def24c8f5271e7907bd858205"></a><!-- doxytag: member="pp::CompletionCallbackFactory::NewExtCallbackWithOutput" ref="aea74805def24c8f5271e7907bd858205" args="(void(T::*method)(int32_t, Output))" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename ThreadTraits = ThreadSafeThreadTraits> </div>
-<div class="memtemplate">
-template<typename Output > </div>
-<table class="memname">
-<tr>
-<td class="memname"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a>< typename <a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><Output>::StorageType> <a class="el" href="classpp_1_1_completion_callback_factory.html">pp::CompletionCallbackFactory</a>< T, ThreadTraits >::<a class="el" href="classpp_1_1_completion_callback_factory.html#aea74805def24c8f5271e7907bd858205">NewExtCallbackWithOutput</a> </td>
-<td>(</td>
-<td class="paramtype">void(T::*)(int32_t, Output) </td>
-<td class="paramname"><em>method</em></td><td>)</td>
-<td><code> [inline]</code></td>
-</tr>
-</table>
-</div>
-<div class="memdoc">
-<p>Similar to <a class="el" href="classpp_1_1_completion_callback_factory.html#a8c550ff8d18548ba962af29309880eeb" title="NewCallbackWithOutput() allocates a new, single-use CompletionCallback where the browser will pass an...">NewCallbackWithOutput()</a>, but returns an <code><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html" title="ExtCompletionCallbackWithOutput is similar to CompletionCallbackWithOutput, but used by APIs within t...">ext::ExtCompletionCallbackWithOutput</a></code>. </p>
-</div>
-</div>
-<a class="anchor" id="aadbadcf3365c39ce5620977ea1609fcf"></a><!-- doxytag: member="pp::CompletionCallbackFactory::NewExtCallbackWithOutput" ref="aadbadcf3365c39ce5620977ea1609fcf" args="(void(T::*method)(int32_t, Output, A), const A &a)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename ThreadTraits = ThreadSafeThreadTraits> </div>
-<div class="memtemplate">
-template<typename Output , typename A > </div>
-<table class="memname">
-<tr>
-<td class="memname"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a>< typename <a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><Output>::StorageType> <a class="el" href="classpp_1_1_completion_callback_factory.html">pp::CompletionCallbackFactory</a>< T, ThreadTraits >::<a class="el" href="classpp_1_1_completion_callback_factory.html#aea74805def24c8f5271e7907bd858205">NewExtCallbackWithOutput</a> </td>
-<td>(</td>
-<td class="paramtype">void(T::*)(int32_t, Output, A) </td>
-<td class="paramname"><em>method</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const A & </td>
-<td class="paramname"><em>a</em> </td>
-</tr>
-<tr>
-<td></td>
-<td>)</td>
-<td></td><td><code> [inline]</code></td>
-</tr>
-</table>
-</div>
-<div class="memdoc">
-<p>Similar to <a class="el" href="classpp_1_1_completion_callback_factory.html#a8c550ff8d18548ba962af29309880eeb" title="NewCallbackWithOutput() allocates a new, single-use CompletionCallback where the browser will pass an...">NewCallbackWithOutput()</a>, but returns an <code><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html" title="ExtCompletionCallbackWithOutput is similar to CompletionCallbackWithOutput, but used by APIs within t...">ext::ExtCompletionCallbackWithOutput</a></code>. </p>
-</div>
-</div>
-<a class="anchor" id="a50b2c6949e50d88f2bb4f8c08017671c"></a><!-- doxytag: member="pp::CompletionCallbackFactory::NewExtCallbackWithOutput" ref="a50b2c6949e50d88f2bb4f8c08017671c" args="(void(T::*method)(int32_t, Output, A, B), const A &a, const B &b)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename ThreadTraits = ThreadSafeThreadTraits> </div>
-<div class="memtemplate">
-template<typename Output , typename A , typename B > </div>
-<table class="memname">
-<tr>
-<td class="memname"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a>< typename <a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><Output>::StorageType> <a class="el" href="classpp_1_1_completion_callback_factory.html">pp::CompletionCallbackFactory</a>< T, ThreadTraits >::<a class="el" href="classpp_1_1_completion_callback_factory.html#aea74805def24c8f5271e7907bd858205">NewExtCallbackWithOutput</a> </td>
-<td>(</td>
-<td class="paramtype">void(T::*)(int32_t, Output, A, B) </td>
-<td class="paramname"><em>method</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const A & </td>
-<td class="paramname"><em>a</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const B & </td>
-<td class="paramname"><em>b</em> </td>
-</tr>
-<tr>
-<td></td>
-<td>)</td>
-<td></td><td><code> [inline]</code></td>
-</tr>
-</table>
-</div>
-<div class="memdoc">
-<p>Similar to <a class="el" href="classpp_1_1_completion_callback_factory.html#a8c550ff8d18548ba962af29309880eeb" title="NewCallbackWithOutput() allocates a new, single-use CompletionCallback where the browser will pass an...">NewCallbackWithOutput()</a>, but returns an <code><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html" title="ExtCompletionCallbackWithOutput is similar to CompletionCallbackWithOutput, but used by APIs within t...">ext::ExtCompletionCallbackWithOutput</a></code>. </p>
-</div>
-</div>
-<a class="anchor" id="ae5d26a15726c295a45e8ab596507dfde"></a><!-- doxytag: member="pp::CompletionCallbackFactory::NewExtCallbackWithOutput" ref="ae5d26a15726c295a45e8ab596507dfde" args="(void(T::*method)(int32_t, Output, A, B, C), const A &a, const B &b, const C &c)" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename ThreadTraits = ThreadSafeThreadTraits> </div>
-<div class="memtemplate">
-template<typename Output , typename A , typename B , typename C > </div>
-<table class="memname">
-<tr>
-<td class="memname"><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html">ext::ExtCompletionCallbackWithOutput</a>< typename <a class="el" href="structpp_1_1internal_1_1_type_unwrapper.html">internal::TypeUnwrapper</a><Output>::StorageType> <a class="el" href="classpp_1_1_completion_callback_factory.html">pp::CompletionCallbackFactory</a>< T, ThreadTraits >::<a class="el" href="classpp_1_1_completion_callback_factory.html#aea74805def24c8f5271e7907bd858205">NewExtCallbackWithOutput</a> </td>
-<td>(</td>
-<td class="paramtype">void(T::*)(int32_t, Output, A, B, C) </td>
-<td class="paramname"><em>method</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const A & </td>
-<td class="paramname"><em>a</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const B & </td>
-<td class="paramname"><em>b</em>, </td>
-</tr>
-<tr>
-<td class="paramkey"></td>
-<td></td>
-<td class="paramtype">const C & </td>
-<td class="paramname"><em>c</em> </td>
-</tr>
-<tr>
-<td></td>
-<td>)</td>
-<td></td><td><code> [inline]</code></td>
-</tr>
-</table>
-</div>
-<div class="memdoc">
-<p>Similar to <a class="el" href="classpp_1_1_completion_callback_factory.html#a8c550ff8d18548ba962af29309880eeb" title="NewCallbackWithOutput() allocates a new, single-use CompletionCallback where the browser will pass an...">NewCallbackWithOutput()</a>, but returns an <code><a class="el" href="classpp_1_1ext_1_1_ext_completion_callback_with_output.html" title="ExtCompletionCallbackWithOutput is similar to CompletionCallbackWithOutput, but used by APIs within t...">ext::ExtCompletionCallbackWithOutput</a></code>. </p>
-</div>
-</div>
<a class="anchor" id="adacce232874e0d5ab52ffa4bd8af9ef7"></a><!-- doxytag: member="pp::CompletionCallbackFactory::NewOptionalCallback" ref="adacce232874e0d5ab52ffa4bd8af9ef7" args="(Method method)" -->
<div class="memitem">
<div class="memproto">