00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_PLUGLDR_H__
00020 #define __CS_PLUGLDR_H__
00021
00022 #include "csutil/parray.h"
00023 #include "csutil/util.h"
00024
00025 struct iObjectRegistry;
00026
00028 struct csPluginLoadRec
00029 {
00030 char* Tag;
00031 char* ClassID;
00032 iBase* plugin;
00033
00034 csPluginLoadRec (const char* iTag, const char* iClassID)
00035 { Tag = csStrNew (iTag); ClassID = csStrNew (iClassID); }
00036 ~csPluginLoadRec ()
00037 { delete [] ClassID; delete [] Tag; }
00038 };
00039
00041 class csPluginList : public csPDelArray<csPluginLoadRec>
00042 {
00043 public:
00044 bool Sort (iObjectRegistry* object_reg);
00045 private:
00046 bool RecurseSort (iObjectRegistry*, int row, int *order, int *loop,
00047 bool *matrix);
00048 };
00049
00054 class csPluginLoader
00055 {
00056 friend class csPluginList;
00057
00058 private:
00059
00060 iObjectRegistry* object_reg;
00061
00062 csPluginList requested_plugins;
00063
00064 public:
00066 csPluginLoader (iObjectRegistry* object_reg);
00068 virtual ~csPluginLoader ();
00069
00080 void RequestPlugin (const char* pluginName, const char* tagName);
00081
00083 bool LoadPlugins ();
00084 };
00085
00086 #endif // __CS_PLUGLDR_H__
00087