📄 pluginmgr_8h-source.html
字号:
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> & 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> & 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> & 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> & serviceName, <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & 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> & serviceName, <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & 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> & <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> & 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> & 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> & 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<PDynaLink> <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<PPluginService> <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<PNotifier> <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<PString, PDynaLink> <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> & 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>-><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> &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>-><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> & <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 + -