📄 _pion_plugin_8hpp-source.html
字号:
<a name="l00238"></a>00238 PionPluginData& plugin_data);<a name="l00239"></a>00239 <a name="l00241"></a>00241 <span class="keyword">static</span> std::string <a class="code" href="classpion_1_1_pion_plugin.html#693a3b35e4b8086ef33c11cffdab3491" title="returns the name of the plugin that is currently open">getPluginName</a>(<span class="keyword">const</span> std::string& plugin_file);<a name="l00242"></a>00242 <a name="l00244"></a>00244 <span class="keyword">static</span> <span class="keywordtype">void</span> *loadDynamicLibrary(<span class="keyword">const</span> std::string& plugin_file);<a name="l00245"></a>00245 <a name="l00247"></a>00247 <span class="keyword">static</span> <span class="keywordtype">void</span> closeDynamicLibrary(<span class="keywordtype">void</span> *lib_handle);<a name="l00248"></a>00248 <a name="l00250"></a>00250 <span class="keyword">static</span> <span class="keywordtype">void</span> *getLibrarySymbol(<span class="keywordtype">void</span> *lib_handle, <span class="keyword">const</span> std::string& symbol);<a name="l00251"></a>00251 <a name="l00252"></a>00252 <a name="l00254"></a>00254 <span class="keyword">typedef</span> std::map<std::string, PionPluginData*> PluginMap;<a name="l00255"></a>00255 <a name="l00256"></a>00256 <a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">const</span> std::string PION_PLUGIN_CREATE;<a name="l00259"></a>00259 <a name="l00261"></a>00261 <span class="keyword">static</span> <span class="keyword">const</span> std::string PION_PLUGIN_DESTROY;<a name="l00262"></a>00262 <a name="l00264"></a>00264 <span class="keyword">static</span> <span class="keyword">const</span> std::string PION_PLUGIN_EXTENSION;<a name="l00265"></a>00265 <a name="l00267"></a>00267 <span class="keyword">static</span> <span class="keyword">const</span> std::string PION_CONFIG_EXTENSION;<a name="l00268"></a>00268 <a name="l00269"></a>00269 <a name="l00271"></a>00271 <span class="keyword">static</span> std::vector<std::string> m_plugin_dirs;<a name="l00272"></a>00272 <a name="l00274"></a>00274 <span class="keyword">static</span> PluginMap m_plugin_map;<a name="l00275"></a>00275 <a name="l00277"></a>00277 <span class="keyword">static</span> boost::mutex m_plugin_mutex;<a name="l00278"></a>00278 <a name="l00279"></a>00279 <a name="l00281"></a>00281 PionPluginData * m_plugin_data;<a name="l00282"></a>00282 };<a name="l00283"></a>00283 <a name="l00284"></a>00284 <a name="l00289"></a>00289 <span class="keyword">template</span> <<span class="keyword">typename</span> InterfaceClassType><a name="l00290"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html">00290</a> <span class="keyword">class </span><a class="code" href="classpion_1_1_pion_plugin_ptr.html">PionPluginPtr</a> :<a name="l00291"></a>00291 <span class="keyword">public</span> <a class="code" href="classpion_1_1_pion_plugin.html">PionPlugin</a><a name="l00292"></a>00292 {<a name="l00293"></a>00293 <span class="keyword">protected</span>:<a name="l00294"></a>00294 <a name="l00296"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#027205ef929dfcd377f05a03c8ae1909">00296</a> <span class="keyword">typedef</span> InterfaceClassType* <a class="code" href="classpion_1_1_pion_plugin_ptr.html#027205ef929dfcd377f05a03c8ae1909" title="data type for a function that is used to create object instances">CreateObjectFunction</a>(<span class="keywordtype">void</span>);<a name="l00297"></a>00297 <a name="l00299"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#67bef082f115d41f53dad0ed0981a06a">00299</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1_pion_plugin_ptr.html#67bef082f115d41f53dad0ed0981a06a" title="data type for a function that is used to destroy object instances">DestroyObjectFunction</a>(InterfaceClassType*);<a name="l00300"></a>00300 <a name="l00301"></a>00301 <a name="l00302"></a>00302 <span class="keyword">public</span>:<a name="l00303"></a>00303 <a name="l00305"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#8b4b92d1c0efdfab643c9775db060e7b">00305</a> <a class="code" href="classpion_1_1_pion_plugin_ptr.html#8b4b92d1c0efdfab643c9775db060e7b" title="default constructor & destructor">PionPluginPtr</a>(<span class="keywordtype">void</span>) : <a class="code" href="classpion_1_1_pion_plugin.html">PionPlugin</a>() {}<a name="l00306"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#ddfb4859392584aff201fa56e7941715">00306</a> <span class="keyword">virtual</span> <a class="code" href="classpion_1_1_pion_plugin_ptr.html#ddfb4859392584aff201fa56e7941715">~PionPluginPtr</a>() {}<a name="l00307"></a>00307 <a name="l00309"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#278ecf5fa8f5cb9277815ed13474e53f">00309</a> <a class="code" href="classpion_1_1_pion_plugin_ptr.html#8b4b92d1c0efdfab643c9775db060e7b" title="default constructor & destructor">PionPluginPtr</a>(<span class="keyword">const</span> <a class="code" href="classpion_1_1_pion_plugin_ptr.html">PionPluginPtr</a>& p) : <a class="code" href="classpion_1_1_pion_plugin.html">PionPlugin</a>(p) {}<a name="l00310"></a>00310 <a name="l00312"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#b5523bdd29a7067a632c9bc72775dcdc">00312</a> <a class="code" href="classpion_1_1_pion_plugin_ptr.html">PionPluginPtr</a>& <a class="code" href="classpion_1_1_pion_plugin_ptr.html#b5523bdd29a7067a632c9bc72775dcdc" title="assignment operator">operator=</a>(<span class="keyword">const</span> <a class="code" href="classpion_1_1_pion_plugin_ptr.html">PionPluginPtr</a>& p) { <span class="keywordflow">return</span>(*<span class="keyword">this</span> = p); }<a name="l00313"></a>00313 <a name="l00314"></a>00314 <a name="l00316"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#5b0b5f11f5439ab9f0270d28f5424c42">00316</a> <span class="keyword">inline</span> InterfaceClassType *<a class="code" href="classpion_1_1_pion_plugin_ptr.html#5b0b5f11f5439ab9f0270d28f5424c42" title="creates a new instance of the plug-in object">create</a>(<span class="keywordtype">void</span>) {<a name="l00317"></a>00317 <a class="code" href="classpion_1_1_pion_plugin_ptr.html#027205ef929dfcd377f05a03c8ae1909" title="data type for a function that is used to create object instances">CreateObjectFunction</a> *create_func =<a name="l00318"></a>00318 (<a class="code" href="classpion_1_1_pion_plugin_ptr.html#027205ef929dfcd377f05a03c8ae1909" title="data type for a function that is used to create object instances">CreateObjectFunction</a>*)(<a class="code" href="classpion_1_1_pion_plugin.html#072e8c34ecffa3202c8e0782415b5de0" title="returns a pointer to the plug-in's "create object" function">getCreateFunction</a>());<a name="l00319"></a>00319 <span class="keywordflow">if</span> (create_func == NULL)<a name="l00320"></a>00320 <span class="keywordflow">throw</span> PluginUndefinedException();<a name="l00321"></a>00321 <span class="keywordflow">return</span> create_func();<a name="l00322"></a>00322 }<a name="l00323"></a>00323 <a name="l00325"></a><a class="code" href="classpion_1_1_pion_plugin_ptr.html#d48491247c707f82c0e44ac60a5cbbee">00325</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classpion_1_1_pion_plugin_ptr.html#d48491247c707f82c0e44ac60a5cbbee" title="destroys an instance of the plug-in object">destroy</a>(InterfaceClassType *object_ptr) {<a name="l00326"></a>00326 <a class="code" href="classpion_1_1_pion_plugin_ptr.html#67bef082f115d41f53dad0ed0981a06a" title="data type for a function that is used to destroy object instances">DestroyObjectFunction</a> *destroy_func =<a name="l00327"></a>00327 (<a class="code" href="classpion_1_1_pion_plugin_ptr.html#67bef082f115d41f53dad0ed0981a06a" title="data type for a function that is used to destroy object instances">DestroyObjectFunction</a>*)(<a class="code" href="classpion_1_1_pion_plugin.html#563e914ec913f5114774495ff85eca2b" title="returns a pointer to the plug-in's "destroy object" function">getDestroyFunction</a>());<a name="l00328"></a>00328 <span class="keywordflow">if</span> (destroy_func == NULL)<a name="l00329"></a>00329 <span class="keywordflow">throw</span> PluginUndefinedException();<a name="l00330"></a>00330 destroy_func(object_ptr);<a name="l00331"></a>00331 }<a name="l00332"></a>00332 };<a name="l00333"></a>00333 <a name="l00334"></a>00334 } <span class="comment">// end namespace pion</span><a name="l00335"></a>00335 <a name="l00336"></a>00336 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 19 13:29:22 2007 for libpion by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -