⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pluginmgr_8h-source.html

📁 pwlib开发文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00090         obj.LoadPlugin(entry);00091     }00092   } <span class="keywordflow">while</span> (dir.<a class="code" href="classPDirectory.html#z211_2">Next</a>());00093 }00094 00096 <span class="comment">//</span>00097 <span class="comment">//  Manager for plugins</span>00098 <span class="comment">//</span>00099 <a name="l00100"></a><a class="code" href="classPPluginManager.html">00100</a> <span class="keyword">class </span><a class="code" href="classPPluginManager.html">PPluginManager</a> : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00101 {00102   <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPPluginManager.html">PPluginManager</a>, <a class="code" href="classPObject.html">PObject</a>);00103 00104   <span class="keyword">public</span>:00105     <span class="comment">// functions to load/unload a dynamic plugin </span>00106     BOOL <a class="code" href="classPPluginManager.html#a0">LoadPlugin</a> (<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; fileName);00107     <span class="keywordtype">void</span> <a class="code" href="classPPluginManager.html#a1">LoadPluginDirectory</a> (<span class="keyword">const</span> <a class="code" href="classPDirectory.html">PDirectory</a> &amp; dir);00108   00109     <span class="comment">// functions to access the plugins' services </span>00110     <a class="code" href="classPStringList.html">PStringList</a> <a class="code" href="classPPluginManager.html#a2">GetPluginTypes</a>() <span class="keyword">const</span>;00111     <a class="code" href="classPStringList.html">PStringList</a> <a class="code" href="classPPluginManager.html#a3">GetPluginsProviding</a> (<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; serviceType) <span class="keyword">const</span>;00112     <a class="code" href="classPPluginServiceDescriptor.html">PPluginServiceDescriptor</a> * <a class="code" href="classPPluginManager.html#a4">GetServiceDescriptor</a> (<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; serviceName, <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; serviceType);00113 00114     <span class="comment">// function to register a service (used by the plugins themselves)</span>00115     BOOL <a class="code" href="classPPluginManager.html#a5">RegisterService</a> (<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; serviceName, <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; serviceType, <a class="code" href="classPPluginServiceDescriptor.html">PPluginServiceDescriptor</a> * descriptor);00116 00117     <span class="comment">// Get the list of plugin directories</span>00118     <span class="keyword">static</span> <a class="code" href="classPStringArray.html">PStringArray</a> <a class="code" href="classPPluginManager.html#d0">GetPluginDirs</a>();00119 00120     <span class="comment">// static functions for accessing global instances of plugin managers</span>00121     <span class="keyword">static</span> <a class="code" href="classPPluginManager.html">PPluginManager</a> &amp; <a class="code" href="classPPluginManager.html#d1">GetPluginManager</a>();00122 00140     <span class="keywordtype">void</span> <a class="code" href="classPPluginManager.html#a6">AddNotifier</a>(00141       <span class="keyword">const</span> <a class="code" href="classPNotifier.html">PNotifier</a> &amp; filterFunction,00142       BOOL existing = FALSE00143     );00144 00145     <span class="keywordtype">void</span> <a class="code" href="classPPluginManager.html#a7">RemoveNotifier</a>(00146       <span class="keyword">const</span> <a class="code" href="classPNotifier.html">PNotifier</a> &amp; filterFunction00147     );00148 00149   <span class="keyword">protected</span>:00150     <span class="keywordtype">void</span> <a class="code" href="classPPluginManager.html#b0">CallNotifier</a>(<a class="code" href="classPDynaLink.html">PDynaLink</a> &amp; dll, INT code);00151 <a name="l00152"></a><a class="code" href="classPPluginManager.html#n0">00152</a>     <a class="code" href="classPMutex.html">PMutex</a> <a class="code" href="classPPluginManager.html#n0">pluginListMutex</a>;<a name="l00153"></a><a class="code" href="classPPluginManager.html#n1">00153</a>     PList&lt;PDynaLink&gt; <a class="code" href="classPPluginManager.html#n1">pluginList</a>;00154     <a name="l00155"></a><a class="code" href="classPPluginManager.html#n2">00155</a>     <a class="code" href="classPMutex.html">PMutex</a> <a class="code" href="classPPluginManager.html#n2">serviceListMutex</a>;<a name="l00156"></a><a class="code" href="classPPluginManager.html#n3">00156</a>     PList&lt;PPluginService&gt; <a class="code" href="classPPluginManager.html#n3">serviceList</a>;00157 <a name="l00158"></a><a class="code" href="classPPluginManager.html#n4">00158</a>     <a class="code" href="classPMutex.html">PMutex</a> <a class="code" href="classPPluginManager.html#n4">notifierMutex</a>;<a name="l00159"></a><a class="code" href="classPPluginManager.html#n5">00159</a>     PList&lt;PNotifier&gt; <a class="code" href="classPPluginManager.html#n5">notifierList</a>;00160 };00161 00163 <span class="comment">//</span>00164 <span class="comment">//  Manager for plugin modules</span>00165 <span class="comment">//</span>00166 <a name="l00167"></a><a class="code" href="classPPluginModuleManager.html">00167</a> <span class="keyword">class </span><a class="code" href="classPPluginModuleManager.html">PPluginModuleManager</a> : <span class="keyword">public</span> <a class="code" href="classPObject.html">PObject</a>00168 {00169   <span class="keyword">public</span>:<a name="l00170"></a><a class="code" href="classPPluginModuleManager.html#s0">00170</a>     <span class="keyword">typedef</span> PDictionary&lt;PString, PDynaLink&gt; <a class="code" href="classPPluginModuleManager.html#s0">PluginListType</a>;00171 00172     <a class="code" href="classPPluginModuleManager.html#a0">PPluginModuleManager</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> * _signatureFunctionName, <a class="code" href="classPPluginManager.html">PPluginManager</a> * <a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a> = NULL);00173 <a name="l00174"></a><a class="code" href="classPPluginModuleManager.html#a1">00174</a>     BOOL <a class="code" href="classPPluginModuleManager.html#a1">LoadPlugin</a>(<span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> &amp; fileName)00175     { <span class="keywordflow">if</span> (<a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a> == NULL) <span class="keywordflow">return</span> FALSE; <span class="keywordflow">else</span> <span class="keywordflow">return</span> <a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a>-&gt;<a class="code" href="classPPluginManager.html#a0">LoadPlugin</a>(fileName); }00176 <a name="l00177"></a><a class="code" href="classPPluginModuleManager.html#a2">00177</a>     <span class="keywordtype">void</span> <a class="code" href="classPPluginModuleManager.html#a2">LoadPluginDirectory</a>(<span class="keyword">const</span> <a class="code" href="classPDirectory.html">PDirectory</a> &amp;directory)00178     { <span class="keywordflow">if</span> (<a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a> != NULL) <a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a>-&gt;<a class="code" href="classPPluginManager.html#a1">LoadPluginDirectory</a>(directory); }00179 <a name="l00180"></a><a class="code" href="classPPluginModuleManager.html#a3">00180</a>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPPluginModuleManager.html#a3">OnLoadPlugin</a>(<a class="code" href="classPDynaLink.html">PDynaLink</a> &amp; <span class="comment">/*dll*/</span>, INT <span class="comment">/*code*/</span>)00181     { }00182 <a name="l00183"></a><a class="code" href="classPPluginModuleManager.html#a4">00183</a>     <span class="keyword">virtual</span> <a class="code" href="classPPluginModuleManager.html#s0">PluginListType</a> <a class="code" href="classPPluginModuleManager.html#a4">GetPluginList</a>()<span class="keyword"> const</span>00184 <span class="keyword">    </span>{ <span class="keywordflow">return</span> <a class="code" href="classPPluginModuleManager.html#n0">pluginList</a>; }00185 <a name="l00186"></a><a class="code" href="classPPluginModuleManager.html#a5">00186</a>     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPPluginModuleManager.html#a5">OnShutdown</a>()00187     { }00188 00189   <span class="keyword">protected</span>:<a name="l00190"></a><a class="code" href="classPPluginModuleManager.html#n0">00190</a>     <a class="code" href="classPPluginModuleManager.html#s0">PluginListType</a> <a class="code" href="classPPluginModuleManager.html#n0">pluginList</a>;00191     <a class="code" href="classPPluginModuleManager.html#b0">PDECLARE_NOTIFIER</a>(<a class="code" href="classPDynaLink.html">PDynaLink</a>, <a class="code" href="classPPluginModuleManager.html">PPluginModuleManager</a>, OnLoadModule);00192 00193   <span class="keyword">protected</span>:<a name="l00194"></a><a class="code" href="classPPluginModuleManager.html#n1">00194</a>     <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classPPluginModuleManager.html#n1">signatureFunctionName</a>;<a name="l00195"></a><a class="code" href="classPPluginModuleManager.html#n2">00195</a>     <a class="code" href="classPPluginManager.html">PPluginManager</a> * <a class="code" href="classPPluginModuleManager.html#n2">pluginMgr</a>;00196 };00197 00198 <span class="preprocessor">#endif // ifndef _PLUGINMGR_H</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:11 2004 for PWLib by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -