]> Creatis software - cpPlugins.git/blob - doc/third_party/Pluma/html/classpluma_1_1Pluma.htm
Base objects migration
[cpPlugins.git] / doc / third_party / Pluma / html / classpluma_1_1Pluma.htm
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3     <head>
4         <title>Pluma - Plug-in Management Framework</title>
5         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
6         <link href="doxygen.css" rel="stylesheet" type="text/css" />
7         <link href="tabs.css" rel="stylesheet" type="text/css" />
8     </head>
9     <body>
10         <div id="logo">
11             <img src="./logo.png" title="Pluma home" alt="Pluma logo" />
12         </div>
13 <!-- Generated by Doxygen 1.8.6 -->
14   <div id="navrow1" class="tabs">
15     <ul class="tablist">
16       <li><a href="index.htm"><span>Main&#160;Page</span></a></li>
17       <li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
18       <li><a href="files.htm"><span>Files</span></a></li>
19     </ul>
20   </div>
21   <div id="navrow2" class="tabs2">
22     <ul class="tablist">
23       <li><a href="annotated.htm"><span>Class&#160;List</span></a></li>
24       <li><a href="classes.htm"><span>Class&#160;Index</span></a></li>
25       <li><a href="hierarchy.htm"><span>Class&#160;Hierarchy</span></a></li>
26       <li><a href="functions.htm"><span>Class&#160;Members</span></a></li>
27     </ul>
28   </div>
29 <div id="nav-path" class="navpath">
30   <ul>
31 <li class="navelem"><b>pluma</b></li><li class="navelem"><a class="el" href="classpluma_1_1Pluma.htm">Pluma</a></li>  </ul>
32 </div>
33 </div><!-- top -->
34 <div class="header">
35   <div class="summary">
36 <a href="#pub-methods">Public Member Functions</a> &#124;
37 <a href="#pro-methods">Protected Member Functions</a> &#124;
38 <a href="classpluma_1_1Pluma-members.htm">List of all members</a>  </div>
39   <div class="headertitle">
40 <div class="title">pluma::Pluma Class Reference</div>  </div>
41 </div><!--header-->
42 <div class="contents">
43
44 <p><a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> plugins management.  
45  <a href="classpluma_1_1Pluma.htm#details">More...</a></p>
46
47 <p><code>#include &lt;<a class="el" href="Pluma_8hpp_source.htm">Pluma.hpp</a>&gt;</code></p>
48 <div class="dynheader">
49 Inheritance diagram for pluma::Pluma:</div>
50 <div class="dyncontent">
51  <div class="center">
52   <img src="classpluma_1_1Pluma.png" usemap="#pluma::Pluma_map" alt=""/>
53   <map id="pluma::Pluma_map" name="pluma::Pluma_map">
54 <area href="classpluma_1_1PluginManager.htm" title="Manages loaded plugins. " alt="pluma::PluginManager" shape="rect" coords="0,0,137,24"/>
55 </map>
56  </div></div>
57 <table class="memberdecls">
58 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
59 Public Member Functions</h2></td></tr>
60 <tr class="memitem:adf4e065f5169931f6290f3828b49e7bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1Pluma.htm#adf4e065f5169931f6290f3828b49e7bb">Pluma</a> ()</td></tr>
61 <tr class="memdesc:adf4e065f5169931f6290f3828b49e7bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor.  <a href="#adf4e065f5169931f6290f3828b49e7bb">More...</a><br/></td></tr>
62 <tr class="separator:adf4e065f5169931f6290f3828b49e7bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
63 <tr class="memitem:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memTemplParams" colspan="2">template&lt;typename ProviderType &gt; </td></tr>
64 <tr class="memitem:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpluma_1_1Pluma.htm#a200c59b0983c7ca53d11b03cf8220bc7">acceptProviderType</a> ()</td></tr>
65 <tr class="memdesc:a200c59b0983c7ca53d11b03cf8220bc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tell <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> to accept a certain type of providers.  <a href="#a200c59b0983c7ca53d11b03cf8220bc7">More...</a><br/></td></tr>
66 <tr class="separator:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
67 <tr class="memitem:a49fa0b2b4497885c4e978259be0a7abe"><td class="memTemplParams" colspan="2">template&lt;typename ProviderType &gt; </td></tr>
68 <tr class="memitem:a49fa0b2b4497885c4e978259be0a7abe"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpluma_1_1Pluma.htm#a49fa0b2b4497885c4e978259be0a7abe">getProviders</a> (std::vector&lt; ProviderType * &gt; &amp;providers)</td></tr>
69 <tr class="memdesc:a49fa0b2b4497885c4e978259be0a7abe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the stored providers of a certain type.  <a href="#a49fa0b2b4497885c4e978259be0a7abe">More...</a><br/></td></tr>
70 <tr class="separator:a49fa0b2b4497885c4e978259be0a7abe"><td class="memSeparator" colspan="2">&#160;</td></tr>
71 <tr class="memitem:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a200c59b0983c7ca53d11b03cf8220bc7"></a>
72 template&lt;typename ProviderType &gt; </td></tr>
73 <tr class="memitem:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>acceptProviderType</b> ()</td></tr>
74 <tr class="separator:a200c59b0983c7ca53d11b03cf8220bc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
75 <tr class="memitem:a49fa0b2b4497885c4e978259be0a7abe"><td class="memTemplParams" colspan="2"><a class="anchor" id="a49fa0b2b4497885c4e978259be0a7abe"></a>
76 template&lt;typename ProviderType &gt; </td></tr>
77 <tr class="memitem:a49fa0b2b4497885c4e978259be0a7abe"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>getProviders</b> (std::vector&lt; ProviderType * &gt; &amp;providers)</td></tr>
78 <tr class="separator:a49fa0b2b4497885c4e978259be0a7abe"><td class="memSeparator" colspan="2">&#160;</td></tr>
79 <tr class="memitem:aa00400d23efa8a8f94e44dd1c5bf54e6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6">load</a> (const std::string &amp;path)</td></tr>
80 <tr class="memdesc:aa00400d23efa8a8f94e44dd1c5bf54e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a plugin given it's path.  <a href="#aa00400d23efa8a8f94e44dd1c5bf54e6">More...</a><br/></td></tr>
81 <tr class="separator:aa00400d23efa8a8f94e44dd1c5bf54e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
82 <tr class="memitem:a866127044950094bb789260bc15a2874"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#a866127044950094bb789260bc15a2874">load</a> (const std::string &amp;folder, const std::string &amp;pluginName)</td></tr>
83 <tr class="memdesc:a866127044950094bb789260bc15a2874"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load a plugin from a given folder.  <a href="#a866127044950094bb789260bc15a2874">More...</a><br/></td></tr>
84 <tr class="separator:a866127044950094bb789260bc15a2874"><td class="memSeparator" colspan="2">&#160;</td></tr>
85 <tr class="memitem:a4d892e345288c26dea091d62ee2b03eb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#a4d892e345288c26dea091d62ee2b03eb">loadFromFolder</a> (const std::string &amp;folder, bool recursive=false)</td></tr>
86 <tr class="memdesc:a4d892e345288c26dea091d62ee2b03eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Load all plugins from a given folder.  <a href="#a4d892e345288c26dea091d62ee2b03eb">More...</a><br/></td></tr>
87 <tr class="separator:a4d892e345288c26dea091d62ee2b03eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
88 <tr class="memitem:a52f6408d4cf95c6f36b518ab2d3a7745"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#a52f6408d4cf95c6f36b518ab2d3a7745">unload</a> (const std::string &amp;pluginName)</td></tr>
89 <tr class="memdesc:a52f6408d4cf95c6f36b518ab2d3a7745"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unload a plugin.  <a href="#a52f6408d4cf95c6f36b518ab2d3a7745">More...</a><br/></td></tr>
90 <tr class="separator:a52f6408d4cf95c6f36b518ab2d3a7745"><td class="memSeparator" colspan="2">&#160;</td></tr>
91 <tr class="memitem:a697a20dc97957e0c2a5dad33f39d93db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#a697a20dc97957e0c2a5dad33f39d93db">unloadAll</a> ()</td></tr>
92 <tr class="memdesc:a697a20dc97957e0c2a5dad33f39d93db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unload all loaded plugins.  <a href="#a697a20dc97957e0c2a5dad33f39d93db">More...</a><br/></td></tr>
93 <tr class="separator:a697a20dc97957e0c2a5dad33f39d93db"><td class="memSeparator" colspan="2">&#160;</td></tr>
94 <tr class="memitem:af27f8e89b8e29359495b6398464ebf02"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#af27f8e89b8e29359495b6398464ebf02">addProvider</a> (<a class="el" href="classpluma_1_1Provider.htm">Provider</a> *provider)</td></tr>
95 <tr class="memdesc:af27f8e89b8e29359495b6398464ebf02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Directly add a new provider.  <a href="#af27f8e89b8e29359495b6398464ebf02">More...</a><br/></td></tr>
96 <tr class="separator:af27f8e89b8e29359495b6398464ebf02"><td class="memSeparator" colspan="2">&#160;</td></tr>
97 <tr class="memitem:a187e60d3fe7524774c08eb58ebcb843f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#a187e60d3fe7524774c08eb58ebcb843f">getLoadedPlugins</a> (std::vector&lt; const std::string * &gt; &amp;pluginNames) const </td></tr>
98 <tr class="memdesc:a187e60d3fe7524774c08eb58ebcb843f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name of all loaded plugins.  <a href="#a187e60d3fe7524774c08eb58ebcb843f">More...</a><br/></td></tr>
99 <tr class="separator:a187e60d3fe7524774c08eb58ebcb843f"><td class="memSeparator" colspan="2">&#160;</td></tr>
100 <tr class="memitem:adbd75738cd4d8969608c9da8b58a03c3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#adbd75738cd4d8969608c9da8b58a03c3">isLoaded</a> (const std::string &amp;pluginName) const </td></tr>
101 <tr class="memdesc:adbd75738cd4d8969608c9da8b58a03c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a plug-in is loaded.  <a href="#adbd75738cd4d8969608c9da8b58a03c3">More...</a><br/></td></tr>
102 <tr class="separator:adbd75738cd4d8969608c9da8b58a03c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
103 </table><table class="memberdecls">
104 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
105 Protected Member Functions</h2></td></tr>
106 <tr class="memitem:ab70b5b6b719bdbd64c27ae2dcb12a64d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#ab70b5b6b719bdbd64c27ae2dcb12a64d">registerType</a> (const std::string &amp;type, unsigned int version, unsigned int lowestVersion)</td></tr>
107 <tr class="memdesc:ab70b5b6b719bdbd64c27ae2dcb12a64d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a provider type.  <a href="#ab70b5b6b719bdbd64c27ae2dcb12a64d">More...</a><br/></td></tr>
108 <tr class="separator:ab70b5b6b719bdbd64c27ae2dcb12a64d"><td class="memSeparator" colspan="2">&#160;</td></tr>
109 <tr class="memitem:ad5eab1dcae10122fdfb8d94d7b391e9e"><td class="memItemLeft" align="right" valign="top">const std::list&lt; <a class="el" href="classpluma_1_1Provider.htm">Provider</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpluma_1_1PluginManager.htm#ad5eab1dcae10122fdfb8d94d7b391e9e">getProviders</a> (const std::string &amp;type) const </td></tr>
110 <tr class="memdesc:ad5eab1dcae10122fdfb8d94d7b391e9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get providers of a certain type.  <a href="#ad5eab1dcae10122fdfb8d94d7b391e9e">More...</a><br/></td></tr>
111 <tr class="separator:ad5eab1dcae10122fdfb8d94d7b391e9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
112 </table>
113 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
114 <div class="textblock"><p><a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> plugins management. </p>
115 <p><a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> is the main class of <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> library. Allows hosting applications to load/unload dlls in runtime (plugins), and to get providers of shared interface objects.</p>
116 <p>Example: </p>
117 <div class="fragment"><div class="line"><a class="code" href="classpluma_1_1Pluma.htm">pluma::Pluma</a> pluma;</div>
118 <div class="line"><span class="comment">// Tell it to accept providers of the type DeviceProvider</span></div>
119 <div class="line">pluma.<a class="code" href="classpluma_1_1Pluma.htm#a200c59b0983c7ca53d11b03cf8220bc7">acceptProviderType</a>&lt;DeviceProvider&gt;();</div>
120 <div class="line"><span class="comment">// Load some dll</span></div>
121 <div class="line">pluma.<a class="code" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6">load</a>(<span class="stringliteral">&quot;plugins/standard_devices&quot;</span>);</div>
122 <div class="line"><span class="comment">// Get device providers into a vector</span></div>
123 <div class="line">std::vector&lt;DeviceProvider*&gt; providers;</div>
124 <div class="line">pluma.<a class="code" href="classpluma_1_1Pluma.htm#a49fa0b2b4497885c4e978259be0a7abe">getProviders</a>(providers);</div>
125 <div class="line"><span class="comment">// create a Device from the first provider</span></div>
126 <div class="line"><span class="keywordflow">if</span> (!providers.empty()){</div>
127 <div class="line">    Device* myDevice = providers.first()-&gt;create();</div>
128 <div class="line">    <span class="comment">// do something with myDevice</span></div>
129 <div class="line">    std::cout &lt;&lt; device-&gt;getDescription() &lt;&lt; std::endl;</div>
130 <div class="line">    <span class="comment">// (...)</span></div>
131 <div class="line">    <span class="keyword">delete</span> myDevice;</div>
132 <div class="line">}</div>
133 </div><!-- fragment --><p>It is also possible to add local providers, providers that are defined directly on the host application. That can be useful to provide and use default implementations of certain interfaces, along with plugin implementations. </p>
134
135 <p>Definition at line <a class="el" href="Pluma_8hpp_source.htm#l00094">94</a> of file <a class="el" href="Pluma_8hpp_source.htm">Pluma.hpp</a>.</p>
136 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
137 <a class="anchor" id="adf4e065f5169931f6290f3828b49e7bb"></a>
138 <div class="memitem">
139 <div class="memproto">
140 <table class="mlabels">
141   <tr>
142   <td class="mlabels-left">
143       <table class="memname">
144         <tr>
145           <td class="memname">Pluma::Pluma </td>
146           <td>(</td>
147           <td class="paramname"></td><td>)</td>
148           <td></td>
149         </tr>
150       </table>
151   </td>
152   <td class="mlabels-right">
153 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
154   </tr>
155 </table>
156 </div><div class="memdoc">
157
158 <p>Default Constructor. </p>
159
160 <p>Definition at line <a class="el" href="Pluma_8inl_source.htm#l00027">27</a> of file <a class="el" href="Pluma_8inl_source.htm">Pluma.inl</a>.</p>
161
162 </div>
163 </div>
164 <h2 class="groupheader">Member Function Documentation</h2>
165 <a class="anchor" id="a200c59b0983c7ca53d11b03cf8220bc7"></a>
166 <div class="memitem">
167 <div class="memproto">
168 <div class="memtemplate">
169 template&lt;typename ProviderType &gt; </div>
170       <table class="memname">
171         <tr>
172           <td class="memname">void pluma::Pluma::acceptProviderType </td>
173           <td>(</td>
174           <td class="paramname"></td><td>)</td>
175           <td></td>
176         </tr>
177       </table>
178 </div><div class="memdoc">
179
180 <p>Tell <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> to accept a certain type of providers. </p>
181 <p>A <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> object is able to accept multiple types of providers. When a plugin is loaded, it tries to register it's providers implementations. Those are only accepted by the host application if it's accepting providers of that kind.</p>
182 <dl class="tparams"><dt>Template Parameters</dt><dd>
183   <table class="tparams">
184     <tr><td class="paramname">ProviderType</td><td>type of provider. </td></tr>
185   </table>
186   </dd>
187 </dl>
188
189 </div>
190 </div>
191 <a class="anchor" id="af27f8e89b8e29359495b6398464ebf02"></a>
192 <div class="memitem">
193 <div class="memproto">
194 <table class="mlabels">
195   <tr>
196   <td class="mlabels-left">
197       <table class="memname">
198         <tr>
199           <td class="memname">bool pluma::PluginManager::addProvider </td>
200           <td>(</td>
201           <td class="paramtype"><a class="el" href="classpluma_1_1Provider.htm">Provider</a> *&#160;</td>
202           <td class="paramname"><em>provider</em></td><td>)</td>
203           <td></td>
204         </tr>
205       </table>
206   </td>
207   <td class="mlabels-right">
208 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
209   </tr>
210 </table>
211 </div><div class="memdoc">
212
213 <p>Directly add a new provider. </p>
214 <dl class="params"><dt>Parameters</dt><dd>
215   <table class="params">
216     <tr><td class="paramname">provider</td><td><a class="el" href="classpluma_1_1Provider.htm" title="Interface to provide applications with objects from plugins. ">Provider</a>. </td></tr>
217   </table>
218   </dd>
219 </dl>
220
221 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00168">168</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
222
223 </div>
224 </div>
225 <a class="anchor" id="a187e60d3fe7524774c08eb58ebcb843f"></a>
226 <div class="memitem">
227 <div class="memproto">
228 <table class="mlabels">
229   <tr>
230   <td class="mlabels-left">
231       <table class="memname">
232         <tr>
233           <td class="memname">void pluma::PluginManager::getLoadedPlugins </td>
234           <td>(</td>
235           <td class="paramtype">std::vector&lt; const std::string * &gt; &amp;&#160;</td>
236           <td class="paramname"><em>pluginNames</em></td><td>)</td>
237           <td> const</td>
238         </tr>
239       </table>
240   </td>
241   <td class="mlabels-right">
242 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
243   </tr>
244 </table>
245 </div><div class="memdoc">
246
247 <p>Get the name of all loaded plugins. </p>
248 <dl class="params"><dt>Parameters</dt><dd>
249   <table class="params">
250     <tr><td class="paramname">pluginNames</td><td>A vector to fill with the plugins names. </td></tr>
251   </table>
252   </dd>
253 </dl>
254
255 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00178">178</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
256
257 </div>
258 </div>
259 <a class="anchor" id="a49fa0b2b4497885c4e978259be0a7abe"></a>
260 <div class="memitem">
261 <div class="memproto">
262 <div class="memtemplate">
263 template&lt;typename ProviderType &gt; </div>
264       <table class="memname">
265         <tr>
266           <td class="memname">void pluma::Pluma::getProviders </td>
267           <td>(</td>
268           <td class="paramtype">std::vector&lt; ProviderType * &gt; &amp;&#160;</td>
269           <td class="paramname"><em>providers</em></td><td>)</td>
270           <td></td>
271         </tr>
272       </table>
273 </div><div class="memdoc">
274
275 <p>Get the stored providers of a certain type. </p>
276 <p>Providers are added at the end of the <em>providers</em> vector.</p>
277 <dl class="tparams"><dt>Template Parameters</dt><dd>
278   <table class="tparams">
279     <tr><td class="paramname">ProviderType</td><td>type of provider to be returned. </td></tr>
280   </table>
281   </dd>
282 </dl>
283 <dl class="params"><dt>Parameters</dt><dd>
284   <table class="params">
285     <tr><td class="paramdir">[out]</td><td class="paramname">providers</td><td>Vector to fill with the existing providers. </td></tr>
286   </table>
287   </dd>
288 </dl>
289
290 </div>
291 </div>
292 <a class="anchor" id="ad5eab1dcae10122fdfb8d94d7b391e9e"></a>
293 <div class="memitem">
294 <div class="memproto">
295 <table class="mlabels">
296   <tr>
297   <td class="mlabels-left">
298       <table class="memname">
299         <tr>
300           <td class="memname">const std::list&lt; <a class="el" href="classpluma_1_1Provider.htm">Provider</a> * &gt; * pluma::PluginManager::getProviders </td>
301           <td>(</td>
302           <td class="paramtype">const std::string &amp;&#160;</td>
303           <td class="paramname"><em>type</em></td><td>)</td>
304           <td> const</td>
305         </tr>
306       </table>
307   </td>
308   <td class="mlabels-right">
309 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span>  </td>
310   </tr>
311 </table>
312 </div><div class="memdoc">
313
314 <p>Get providers of a certain type. </p>
315 <dl class="params"><dt>Parameters</dt><dd>
316   <table class="params">
317     <tr><td class="paramname">type</td><td><a class="el" href="classpluma_1_1Provider.htm" title="Interface to provide applications with objects from plugins. ">Provider</a> type.</td></tr>
318   </table>
319   </dd>
320 </dl>
321 <dl class="section return"><dt>Returns</dt><dd>Pointer to the list of providers of that <em>type</em>, or NULL if <em>type</em> is not registered.</dd></dl>
322 <dl class="section see"><dt>See Also</dt><dd>Host::getProviders </dd></dl>
323
324 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00194">194</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
325
326 </div>
327 </div>
328 <a class="anchor" id="adbd75738cd4d8969608c9da8b58a03c3"></a>
329 <div class="memitem">
330 <div class="memproto">
331 <table class="mlabels">
332   <tr>
333   <td class="mlabels-left">
334       <table class="memname">
335         <tr>
336           <td class="memname">bool pluma::PluginManager::isLoaded </td>
337           <td>(</td>
338           <td class="paramtype">const std::string &amp;&#160;</td>
339           <td class="paramname"><em>pluginName</em></td><td>)</td>
340           <td> const</td>
341         </tr>
342       </table>
343   </td>
344   <td class="mlabels-right">
345 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
346   </tr>
347 </table>
348 </div><div class="memdoc">
349
350 <p>Check if a plug-in is loaded. </p>
351 <dl class="params"><dt>Parameters</dt><dd>
352   <table class="params">
353     <tr><td class="paramname">pluginName</td><td>the plug-in tname o check. </td></tr>
354   </table>
355   </dd>
356 </dl>
357
358 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00188">188</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
359
360 </div>
361 </div>
362 <a class="anchor" id="aa00400d23efa8a8f94e44dd1c5bf54e6"></a>
363 <div class="memitem">
364 <div class="memproto">
365 <table class="mlabels">
366   <tr>
367   <td class="mlabels-left">
368       <table class="memname">
369         <tr>
370           <td class="memname">bool pluma::PluginManager::load </td>
371           <td>(</td>
372           <td class="paramtype">const std::string &amp;&#160;</td>
373           <td class="paramname"><em>path</em></td><td>)</td>
374           <td></td>
375         </tr>
376       </table>
377   </td>
378   <td class="mlabels-right">
379 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
380   </tr>
381 </table>
382 </div><div class="memdoc">
383
384 <p>Load a plugin given it's path. </p>
385 <dl class="params"><dt>Parameters</dt><dd>
386   <table class="params">
387     <tr><td class="paramname">path</td><td>Path for the plugin, including plugin name. File extension may be included, but is discouraged for better cross platform code. If file extension isn't present on the path, <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> will deduce it from the operating system.</td></tr>
388   </table>
389   </dd>
390 </dl>
391 <dl class="section return"><dt>Returns</dt><dd>True if the plugin is successfully loaded.</dd></dl>
392 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classpluma_1_1PluginManager.htm#a866127044950094bb789260bc15a2874" title="Load a plugin from a given folder. ">load(const std::string&amp;, const std::string&amp;)</a> </dd>
393 <dd>
394 <a class="el" href="classpluma_1_1PluginManager.htm#a4d892e345288c26dea091d62ee2b03eb" title="Load all plugins from a given folder. ">loadFromFolder</a> </dd>
395 <dd>
396 <a class="el" href="classpluma_1_1PluginManager.htm#a52f6408d4cf95c6f36b518ab2d3a7745" title="Unload a plugin. ">unload</a> </dd>
397 <dd>
398 <a class="el" href="classpluma_1_1PluginManager.htm#a697a20dc97957e0c2a5dad33f39d93db" title="Unload all loaded plugins. ">unloadAll</a> </dd></dl>
399
400 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00049">49</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
401
402 </div>
403 </div>
404 <a class="anchor" id="a866127044950094bb789260bc15a2874"></a>
405 <div class="memitem">
406 <div class="memproto">
407 <table class="mlabels">
408   <tr>
409   <td class="mlabels-left">
410       <table class="memname">
411         <tr>
412           <td class="memname">bool pluma::PluginManager::load </td>
413           <td>(</td>
414           <td class="paramtype">const std::string &amp;&#160;</td>
415           <td class="paramname"><em>folder</em>, </td>
416         </tr>
417         <tr>
418           <td class="paramkey"></td>
419           <td></td>
420           <td class="paramtype">const std::string &amp;&#160;</td>
421           <td class="paramname"><em>pluginName</em>&#160;</td>
422         </tr>
423         <tr>
424           <td></td>
425           <td>)</td>
426           <td></td><td></td>
427         </tr>
428       </table>
429   </td>
430   <td class="mlabels-right">
431 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
432   </tr>
433 </table>
434 </div><div class="memdoc">
435
436 <p>Load a plugin from a given folder. </p>
437 <dl class="params"><dt>Parameters</dt><dd>
438   <table class="params">
439     <tr><td class="paramname">folder</td><td>The folder path. </td></tr>
440     <tr><td class="paramname">pluginName</td><td>Name of the plugin. File extension may be included, but is discouraged for better cross platform code. If file extension is omitted, <a class="el" href="classpluma_1_1Pluma.htm" title="Pluma plugins management. ">Pluma</a> will deduce it from the operating system.</td></tr>
441   </table>
442   </dd>
443 </dl>
444 <dl class="section return"><dt>Returns</dt><dd>True if the plugin is successfully loaded.</dd></dl>
445 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6" title="Load a plugin given it&#39;s path. ">load(const std::string&amp;)</a> </dd>
446 <dd>
447 <a class="el" href="classpluma_1_1PluginManager.htm#a4d892e345288c26dea091d62ee2b03eb" title="Load all plugins from a given folder. ">loadFromFolder</a> </dd>
448 <dd>
449 <a class="el" href="classpluma_1_1PluginManager.htm#a52f6408d4cf95c6f36b518ab2d3a7745" title="Unload a plugin. ">unload</a> </dd>
450 <dd>
451 <a class="el" href="classpluma_1_1PluginManager.htm#a697a20dc97957e0c2a5dad33f39d93db" title="Unload all loaded plugins. ">unloadAll</a> </dd></dl>
452
453 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00085">85</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
454
455 </div>
456 </div>
457 <a class="anchor" id="a4d892e345288c26dea091d62ee2b03eb"></a>
458 <div class="memitem">
459 <div class="memproto">
460 <table class="mlabels">
461   <tr>
462   <td class="mlabels-left">
463       <table class="memname">
464         <tr>
465           <td class="memname">int pluma::PluginManager::loadFromFolder </td>
466           <td>(</td>
467           <td class="paramtype">const std::string &amp;&#160;</td>
468           <td class="paramname"><em>folder</em>, </td>
469         </tr>
470         <tr>
471           <td class="paramkey"></td>
472           <td></td>
473           <td class="paramtype">bool&#160;</td>
474           <td class="paramname"><em>recursive</em> = <code>false</code>&#160;</td>
475         </tr>
476         <tr>
477           <td></td>
478           <td>)</td>
479           <td></td><td></td>
480         </tr>
481       </table>
482   </td>
483   <td class="mlabels-right">
484 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
485   </tr>
486 </table>
487 </div><div class="memdoc">
488
489 <p>Load all plugins from a given folder. </p>
490 <dl class="params"><dt>Parameters</dt><dd>
491   <table class="params">
492     <tr><td class="paramname">folder</td><td>Path for the folder where the plug-ins are. </td></tr>
493     <tr><td class="paramname">recursive</td><td>If true it will search on sub-folders as well</td></tr>
494   </table>
495   </dd>
496 </dl>
497 <dl class="section return"><dt>Returns</dt><dd>Number of successfully loaded plug-ins.</dd></dl>
498 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classpluma_1_1PluginManager.htm#a866127044950094bb789260bc15a2874" title="Load a plugin from a given folder. ">load(const std::string&amp;, const std::string&amp;)</a> </dd>
499 <dd>
500 <a class="el" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6" title="Load a plugin given it&#39;s path. ">load(const std::string&amp;)</a> </dd>
501 <dd>
502 <a class="el" href="classpluma_1_1PluginManager.htm#a52f6408d4cf95c6f36b518ab2d3a7745" title="Unload a plugin. ">unload</a> </dd>
503 <dd>
504 <a class="el" href="classpluma_1_1PluginManager.htm#a697a20dc97957e0c2a5dad33f39d93db" title="Unload all loaded plugins. ">unloadAll</a> </dd></dl>
505
506 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00095">95</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
507
508 </div>
509 </div>
510 <a class="anchor" id="ab70b5b6b719bdbd64c27ae2dcb12a64d"></a>
511 <div class="memitem">
512 <div class="memproto">
513 <table class="mlabels">
514   <tr>
515   <td class="mlabels-left">
516       <table class="memname">
517         <tr>
518           <td class="memname">void pluma::PluginManager::registerType </td>
519           <td>(</td>
520           <td class="paramtype">const std::string &amp;&#160;</td>
521           <td class="paramname"><em>type</em>, </td>
522         </tr>
523         <tr>
524           <td class="paramkey"></td>
525           <td></td>
526           <td class="paramtype">unsigned int&#160;</td>
527           <td class="paramname"><em>version</em>, </td>
528         </tr>
529         <tr>
530           <td class="paramkey"></td>
531           <td></td>
532           <td class="paramtype">unsigned int&#160;</td>
533           <td class="paramname"><em>lowestVersion</em>&#160;</td>
534         </tr>
535         <tr>
536           <td></td>
537           <td>)</td>
538           <td></td><td></td>
539         </tr>
540       </table>
541   </td>
542   <td class="mlabels-right">
543 <span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span>  </td>
544   </tr>
545 </table>
546 </div><div class="memdoc">
547
548 <p>Register a provider type. </p>
549 <dl class="params"><dt>Parameters</dt><dd>
550   <table class="params">
551     <tr><td class="paramname">type</td><td><a class="el" href="classpluma_1_1Provider.htm" title="Interface to provide applications with objects from plugins. ">Provider</a> type. </td></tr>
552     <tr><td class="paramname">version</td><td>Current version of that provider type. </td></tr>
553     <tr><td class="paramname">lowestVersion</td><td>Lowest compatible version of that provider type.</td></tr>
554   </table>
555   </dd>
556 </dl>
557 <dl class="section see"><dt>See Also</dt><dd>Host::registerType </dd></dl>
558
559 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00162">162</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
560
561 </div>
562 </div>
563 <a class="anchor" id="a52f6408d4cf95c6f36b518ab2d3a7745"></a>
564 <div class="memitem">
565 <div class="memproto">
566 <table class="mlabels">
567   <tr>
568   <td class="mlabels-left">
569       <table class="memname">
570         <tr>
571           <td class="memname">bool pluma::PluginManager::unload </td>
572           <td>(</td>
573           <td class="paramtype">const std::string &amp;&#160;</td>
574           <td class="paramname"><em>pluginName</em></td><td>)</td>
575           <td></td>
576         </tr>
577       </table>
578   </td>
579   <td class="mlabels-right">
580 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
581   </tr>
582 </table>
583 </div><div class="memdoc">
584
585 <p>Unload a plugin. </p>
586 <dl class="params"><dt>Parameters</dt><dd>
587   <table class="params">
588     <tr><td class="paramname">pluginName</td><td>Name or path of the plugin.</td></tr>
589   </table>
590   </dd>
591 </dl>
592 <dl class="section return"><dt>Returns</dt><dd>True if the plugin is successfully unloaded, false if no such plugin exists on the manager.</dd></dl>
593 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classpluma_1_1PluginManager.htm#a866127044950094bb789260bc15a2874" title="Load a plugin from a given folder. ">load(const std::string&amp;, const std::string&amp;)</a> </dd>
594 <dd>
595 <a class="el" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6" title="Load a plugin given it&#39;s path. ">load(const std::string&amp;)</a> </dd>
596 <dd>
597 <a class="el" href="classpluma_1_1PluginManager.htm#a4d892e345288c26dea091d62ee2b03eb" title="Load all plugins from a given folder. ">loadFromFolder</a> </dd>
598 <dd>
599 <a class="el" href="classpluma_1_1PluginManager.htm#a697a20dc97957e0c2a5dad33f39d93db" title="Unload all loaded plugins. ">unloadAll</a> </dd></dl>
600
601 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00109">109</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
602
603 </div>
604 </div>
605 <a class="anchor" id="a697a20dc97957e0c2a5dad33f39d93db"></a>
606 <div class="memitem">
607 <div class="memproto">
608 <table class="mlabels">
609   <tr>
610   <td class="mlabels-left">
611       <table class="memname">
612         <tr>
613           <td class="memname">void pluma::PluginManager::unloadAll </td>
614           <td>(</td>
615           <td class="paramname"></td><td>)</td>
616           <td></td>
617         </tr>
618       </table>
619   </td>
620   <td class="mlabels-right">
621 <span class="mlabels"><span class="mlabel">inherited</span></span>  </td>
622   </tr>
623 </table>
624 </div><div class="memdoc">
625
626 <p>Unload all loaded plugins. </p>
627 <dl class="section see"><dt>See Also</dt><dd><a class="el" href="classpluma_1_1PluginManager.htm#a866127044950094bb789260bc15a2874" title="Load a plugin from a given folder. ">load(const std::string&amp;, const std::string&amp;)</a> </dd>
628 <dd>
629 <a class="el" href="classpluma_1_1PluginManager.htm#aa00400d23efa8a8f94e44dd1c5bf54e6" title="Load a plugin given it&#39;s path. ">load(const std::string&amp;)</a> </dd>
630 <dd>
631 <a class="el" href="classpluma_1_1PluginManager.htm#a4d892e345288c26dea091d62ee2b03eb" title="Load all plugins from a given folder. ">loadFromFolder</a> </dd>
632 <dd>
633 <a class="el" href="classpluma_1_1PluginManager.htm#a52f6408d4cf95c6f36b518ab2d3a7745" title="Unload a plugin. ">unload</a> </dd></dl>
634
635 <p>Definition at line <a class="el" href="PluginManager_8cpp_source.htm#l00122">122</a> of file <a class="el" href="PluginManager_8cpp_source.htm">PluginManager.cpp</a>.</p>
636
637 </div>
638 </div>
639 <hr/>The documentation for this class was generated from the following files:<ul>
640 <li><a class="el" href="Pluma_8hpp_source.htm">Pluma.hpp</a></li>
641 <li><a class="el" href="Pluma_8inl_source.htm">Pluma.inl</a></li>
642 </ul>
643 </div><!-- contents -->
644
645         <p id="footer">
646             &nbsp;::&nbsp; Copyright &copy; 2011 Gil Costa, all rights reserved &nbsp;::&nbsp;
647             Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.7.4</a> &nbsp;::&nbsp;
648         </p>
649     </body>
650 </html>