blob: 4c207b157716bdb58d413a1d361aa89b9038bb97 [file] [log] [blame]
{{+bindTo:partials.standard_nacl_api}}
<h1>pp::Module Class Reference</h1>
<div id="doxygen-ref">
{{- dummy div to appease doxygen -}}
<div>
<!-- Generated by Doxygen 1.7.6.1 -->
</div>
<!--header-->
<div class="contents">
<!-- doxytag: class="pp::Module" -->
<p><a href="classpp_1_1_module-members.html">List of all members.</a></p>
<h2>
Public Types</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top">typedef std::map&lt; PP_Instance, <br class="typebreak" />
<a class="el" href="classpp_1_1_instance.html">Instance</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a47cd6188f0321e74b71126a5fd014b12">InstanceMap</a></td></tr>
</table><h2>
Public Member Functions</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a67b76ad37316a2e89ebd2902a6503686">Module</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#ac3c912841726117a128d2e056f15210e">~Module</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a873a824f0e462008d1167e34544ad360">Init</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PP_Module&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a95bb3148c925f46938ee0f267b1c66e5">pp_module</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">PPB_GetInterface&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a8955edbfec01524388338b440633850a">get_browser_interface</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1_core.html">Core</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#afd1d02002faaa6a4531ad06ca0423c9f">core</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a8c8c946f741e140ff7dd21b36b1a42a5">GetPluginInterface</a> (const char *interface_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a2aece372fdef35ded56d69a4e881a376">GetBrowserInterface</a> (const char *interface_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpp_1_1_instance.html">Instance</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#ab57a787b61cd72fdcea0d232ed88eaef">InstanceForPPInstance</a> (PP_Instance instance)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#aeddc6021140b4bdea3a83c36e7b8ec7e">AddPluginInterface</a> (const std::string &amp;interface_name, const void *vtable)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#acd9a63a4b364c28abfeac39687f2fa1a">InternalInit</a> (PP_Module mod, PPB_GetInterface <a class="el" href="classpp_1_1_module.html#a8955edbfec01524388338b440633850a">get_browser_interface</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classpp_1_1_module.html#a47cd6188f0321e74b71126a5fd014b12">InstanceMap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a3b9ec2c079aa51ceeedfe98f4c9e1a98">current_instances</a> () const </td></tr>
</table><h2>
Static Public Member Functions</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classpp_1_1_module.html">Module</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#ac8cca5d744e812ec3221bc391086b026">Get</a> ()</td></tr>
</table><h2>
Protected Member Functions</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classpp_1_1_instance.html">Instance</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#a648f236af50501bac40ce40296611825">CreateInstance</a> (PP_Instance instance)=0</td></tr>
</table><h2>
Friends</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top">PP_Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#ab0f2ba24fd03fa31fc2e47d4f8ceb158">Instance_DidCreate</a> (PP_Instance pp_instance, uint32_t argc, const char *argn[], const char *argv[])</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpp_1_1_module.html#accf4ce5410f02db9c87dcca045043128">Instance_DidDestroy</a> (PP_Instance instance)</td></tr>
</table>
<hr /><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>The <a class="el" href="classpp_1_1_module.html" title="The Module class.">Module</a> class. </p>
<p>The browser calls <a class="el" href="classpp_1_1_module.html#a648f236af50501bac40ce40296611825" title="CreateInstance() should be overridden to create your own module type.">CreateInstance()</a> to create an instance of your module on the web page. The browser creates a new instance for each <code>&lt;embed&gt;</code> tag with <code>type="application/x-nacl"</code> </p>
</div><hr /><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a47cd6188f0321e74b71126a5fd014b12"></a><!-- doxytag: member="pp::Module::InstanceMap" ref="a47cd6188f0321e74b71126a5fd014b12" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::map&lt;PP_Instance, <a class="el" href="classpp_1_1_instance.html">Instance</a>*&gt; <a class="el" href="classpp_1_1_module.html#a47cd6188f0321e74b71126a5fd014b12">pp::Module::InstanceMap</a></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr /><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a67b76ad37316a2e89ebd2902a6503686"></a><!-- doxytag: member="pp::Module::Module" ref="a67b76ad37316a2e89ebd2902a6503686" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classpp_1_1_module.html#a67b76ad37316a2e89ebd2902a6503686">pp::Module::Module</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="ac3c912841726117a128d2e056f15210e"></a><!-- doxytag: member="pp::Module::~Module" ref="ac3c912841726117a128d2e056f15210e" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classpp_1_1_module.html#ac3c912841726117a128d2e056f15210e">pp::Module::~Module</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr /><h2>Member Function Documentation</h2>
<a class="anchor" id="aeddc6021140b4bdea3a83c36e7b8ec7e"></a><!-- doxytag: member="pp::Module::AddPluginInterface" ref="aeddc6021140b4bdea3a83c36e7b8ec7e" args="(const std::string &amp;interface_name, const void *vtable)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classpp_1_1_module.html#aeddc6021140b4bdea3a83c36e7b8ec7e">pp::Module::AddPluginInterface</a> </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>interface_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>vtable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#aeddc6021140b4bdea3a83c36e7b8ec7e" title="AddPluginInterface() adds a handler for a provided interface name.">AddPluginInterface()</a> adds a handler for a provided interface name. </p>
<p>When the browser requests that interface name, the provided <code>vtable</code> will be returned.</p>
<p>In general, modules will not need to call this directly. Instead, the C++ wrappers for each interface will register themselves with this function.</p>
<p>This function may be called more than once with the same interface name and vtable with no effect. However, it may not be used to register a different vtable for an already-registered interface. It will assert for a different registration for an already-registered interface in debug mode, and just ignore the registration in release mode.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">interface_name</td><td>The interface name that will receive a handler. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">vtable</td><td>The vtable to return for <code>interface_name</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="afd1d02002faaa6a4531ad06ca0423c9f"></a><!-- doxytag: member="pp::Module::core" ref="afd1d02002faaa6a4531ad06ca0423c9f" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classpp_1_1_core.html">Core</a>* <a class="el" href="classpp_1_1_module.html#afd1d02002faaa6a4531ad06ca0423c9f">pp::Module::core</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The <a class="el" href="classpp_1_1_module.html#afd1d02002faaa6a4531ad06ca0423c9f" title="The core() function returns the core interface for doing basic global operations.">core()</a> function returns the core interface for doing basic global operations. </p>
<p>The return value is guaranteed to be non-NULL once the module has successfully initialized and during the <a class="el" href="classpp_1_1_module.html#a873a824f0e462008d1167e34544ad360" title="Init() is automatically called after the object is created.">Init()</a> call.</p>
<p>It will be NULL before <a class="el" href="classpp_1_1_module.html#a873a824f0e462008d1167e34544ad360" title="Init() is automatically called after the object is created.">Init()</a> has been called.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The core interface for doing basic global operations. </dd></dl>
</div>
</div>
<a class="anchor" id="a648f236af50501bac40ce40296611825"></a><!-- doxytag: member="pp::Module::CreateInstance" ref="a648f236af50501bac40ce40296611825" args="(PP_Instance instance)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classpp_1_1_instance.html">Instance</a>* <a class="el" href="classpp_1_1_module.html#a648f236af50501bac40ce40296611825">pp::Module::CreateInstance</a> </td>
<td>(</td>
<td class="paramtype">PP_Instance&#160;</td>
<td class="paramname"><em>instance</em></td><td>)</td>
<td><code> [protected, pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#a648f236af50501bac40ce40296611825" title="CreateInstance() should be overridden to create your own module type.">CreateInstance()</a> should be overridden to create your own module type. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>A <code>PP_Instance</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The resulting instance. </dd></dl>
</div>
</div>
<a class="anchor" id="a3b9ec2c079aa51ceeedfe98f4c9e1a98"></a><!-- doxytag: member="pp::Module::current_instances" ref="a3b9ec2c079aa51ceeedfe98f4c9e1a98" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classpp_1_1_module.html#a47cd6188f0321e74b71126a5fd014b12">InstanceMap</a>&amp; <a class="el" href="classpp_1_1_module.html#a3b9ec2c079aa51ceeedfe98f4c9e1a98">pp::Module::current_instances</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The <a class="el" href="classpp_1_1_module.html#a3b9ec2c079aa51ceeedfe98f4c9e1a98" title="The current_instances() function allows iteration over the current instances in the module...">current_instances()</a> function allows iteration over the current instances in the module. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>An <code>InstanceMap</code> of all instances in the module. </dd></dl>
</div>
</div>
<a class="anchor" id="ac8cca5d744e812ec3221bc391086b026"></a><!-- doxytag: member="pp::Module::Get" ref="ac8cca5d744e812ec3221bc391086b026" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classpp_1_1_module.html">Module</a>* <a class="el" href="classpp_1_1_module.html#ac8cca5d744e812ec3221bc391086b026">pp::Module::Get</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [static]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#ac8cca5d744e812ec3221bc391086b026" title="Get() returns the global instance of this module object, or NULL if the module is not initialized yet...">Get()</a> returns the global instance of this module object, or NULL if the module is not initialized yet. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The global instance of the module object. </dd></dl>
</div>
</div>
<a class="anchor" id="a8955edbfec01524388338b440633850a"></a><!-- doxytag: member="pp::Module::get_browser_interface" ref="a8955edbfec01524388338b440633850a" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PPB_GetInterface <a class="el" href="classpp_1_1_module.html#a8955edbfec01524388338b440633850a">pp::Module::get_browser_interface</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The <a class="el" href="classpp_1_1_module.html#a8955edbfec01524388338b440633850a" title="The get_browser_interface() function returns the internal get_browser_interface pointer.">get_browser_interface()</a> function returns the internal <code>get_browser_interface</code> pointer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PPB_GetInterface</code> internal pointer. </dd></dl>
</div>
</div>
<a class="anchor" id="a2aece372fdef35ded56d69a4e881a376"></a><!-- doxytag: member="pp::Module::GetBrowserInterface" ref="a2aece372fdef35ded56d69a4e881a376" args="(const char *interface_name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const void* <a class="el" href="classpp_1_1_module.html#a2aece372fdef35ded56d69a4e881a376">pp::Module::GetBrowserInterface</a> </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>interface_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#a2aece372fdef35ded56d69a4e881a376" title="GetBrowserInterface() returns interfaces which the browser implements (i.e.">GetBrowserInterface()</a> returns interfaces which the browser implements (i.e. </p>
<p>PPB interfaces). </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">interface_name</td><td>The browser interface for the module to get. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a8c8c946f741e140ff7dd21b36b1a42a5"></a><!-- doxytag: member="pp::Module::GetPluginInterface" ref="a8c8c946f741e140ff7dd21b36b1a42a5" args="(const char *interface_name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const void* <a class="el" href="classpp_1_1_module.html#a8c8c946f741e140ff7dd21b36b1a42a5">pp::Module::GetPluginInterface</a> </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>interface_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#a8c8c946f741e140ff7dd21b36b1a42a5" title="GetPluginInterface() implements GetInterface for the browser to get module interfaces.">GetPluginInterface()</a> implements <code>GetInterface</code> for the browser to get module interfaces. </p>
<p>If you need to provide your own implementations of new interfaces, use <a class="el" href="classpp_1_1_module.html#aeddc6021140b4bdea3a83c36e7b8ec7e" title="AddPluginInterface() adds a handler for a provided interface name.">AddPluginInterface()</a> which this function will use.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">interface_name</td><td>The module interface for the browser to get. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a873a824f0e462008d1167e34544ad360"></a><!-- doxytag: member="pp::Module::Init" ref="a873a824f0e462008d1167e34544ad360" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual bool <a class="el" href="classpp_1_1_module.html#a873a824f0e462008d1167e34544ad360">pp::Module::Init</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#a873a824f0e462008d1167e34544ad360" title="Init() is automatically called after the object is created.">Init()</a> is automatically called after the object is created. </p>
<p>This is where you can put functions that rely on other parts of the API, now that the module has been created.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if successful, otherwise false. </dd></dl>
</div>
</div>
<a class="anchor" id="ab57a787b61cd72fdcea0d232ed88eaef"></a><!-- doxytag: member="pp::Module::InstanceForPPInstance" ref="ab57a787b61cd72fdcea0d232ed88eaef" args="(PP_Instance instance)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classpp_1_1_instance.html">Instance</a>* <a class="el" href="classpp_1_1_module.html#ab57a787b61cd72fdcea0d232ed88eaef">pp::Module::InstanceForPPInstance</a> </td>
<td>(</td>
<td class="paramtype">PP_Instance&#160;</td>
<td class="paramname"><em>instance</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p><a class="el" href="classpp_1_1_module.html#ab57a787b61cd72fdcea0d232ed88eaef" title="InstanceForPPInstance() returns the object associated with this PP_Instance, or NULL if one is not fo...">InstanceForPPInstance()</a> returns the object associated with this <code>PP_Instance</code>, or NULL if one is not found. </p>
<p>This should only be called from the main thread! This instance object may be destroyed at any time on the main thread, so using it on other threads may cause a crash.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>This <code>PP_Instance</code>.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The object associated with this <code>PP_Instance</code>, or NULL if one is not found. </dd></dl>
</div>
</div>
<a class="anchor" id="acd9a63a4b364c28abfeac39687f2fa1a"></a><!-- doxytag: member="pp::Module::InternalInit" ref="acd9a63a4b364c28abfeac39687f2fa1a" args="(PP_Module mod, PPB_GetInterface get_browser_interface)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classpp_1_1_module.html#acd9a63a4b364c28abfeac39687f2fa1a">pp::Module::InternalInit</a> </td>
<td>(</td>
<td class="paramtype">PP_Module&#160;</td>
<td class="paramname"><em>mod</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">PPB_GetInterface&#160;</td>
<td class="paramname"><em>get_browser_interface</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>function that can be overridden by the base classes. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">mod</td><td>A <code>PP_Module</code>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">get_browser_interface</td><td>The browser interface to set.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if successful, otherwise false. </dd></dl>
</div>
</div>
<a class="anchor" id="a95bb3148c925f46938ee0f267b1c66e5"></a><!-- doxytag: member="pp::Module::pp_module" ref="a95bb3148c925f46938ee0f267b1c66e5" args="() const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PP_Module <a class="el" href="classpp_1_1_module.html#a95bb3148c925f46938ee0f267b1c66e5">pp::Module::pp_module</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const<code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The <a class="el" href="classpp_1_1_module.html#a95bb3148c925f46938ee0f267b1c66e5" title="The pp_module() function returns the internal module handle.">pp_module()</a> function returns the internal module handle. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PP_Module</code> internal module handle. </dd></dl>
</div>
</div>
<hr /><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="ab0f2ba24fd03fa31fc2e47d4f8ceb158"></a><!-- doxytag: member="pp::Module::Instance_DidCreate" ref="ab0f2ba24fd03fa31fc2e47d4f8ceb158" args="(PP_Instance pp_instance, uint32_t argc, const char *argn[], const char *argv[])" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PP_Bool <a class="el" href="classpp_1_1_module.html#ab0f2ba24fd03fa31fc2e47d4f8ceb158">Instance_DidCreate</a> </td>
<td>(</td>
<td class="paramtype">PP_Instance&#160;</td>
<td class="paramname"><em>pp_instance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>argn</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [friend]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<a class="anchor" id="accf4ce5410f02db9c87dcca045043128"></a><!-- doxytag: member="pp::Module::Instance_DidDestroy" ref="accf4ce5410f02db9c87dcca045043128" args="(PP_Instance instance)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classpp_1_1_module.html#accf4ce5410f02db9c87dcca045043128">Instance_DidDestroy</a> </td>
<td>(</td>
<td class="paramtype">PP_Instance&#160;</td>
<td class="paramname"><em>instance</em></td><td>)</td>
<td><code> [friend]</code></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="module_8h.html">module.h</a></li>
</ul>
</div><!-- contents -->
</div>
{{/partials.standard_nacl_api}}