00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00039 #ifndef SWMGR_H
00040 #define SWMGR_H
00041
00042 #include <sys/types.h>
00043 #include <string>
00044 #include <map>
00045 #include <list>
00046 #include <swmodule.h>
00047 #include <swconfig.h>
00048 #include <swlog.h>
00049 #include <swfiltermgr.h>
00050
00051 #include <defs.h>
00052
00053 SWORD_NAMESPACE_START
00054
00055 typedef std::map < std::string, SWModule *, std::less < std::string > >ModMap;
00056 typedef std::list < std::string > OptionsList;
00057 typedef std::map < std::string, SWFilter * >FilterMap;
00058
00069 class SWDLLEXPORT SWMgr {
00070
00071 private:
00072 void commonInit(SWConfig * iconfig, SWConfig * isysconfig, bool autoload, SWFilterMgr *filterMgr);
00073
00074 protected:
00075 SWFilterMgr *filterMgr;
00076 SWConfig * myconfig;
00077 SWConfig *mysysconfig;
00078 SWConfig *homeConfig;
00079 void CreateMods();
00080 SWModule *CreateMod(std::string name, std::string driver, ConfigEntMap & section);
00081 void DeleteMods();
00082 char configType;
00083 FilterMap optionFilters;
00084 FilterMap cipherFilters;
00085 SWFilter *gbfplain;
00086 SWFilter *thmlplain;
00087 SWFilter *transliterator;
00088 FilterList cleanupFilters;
00089 OptionsList options;
00090 virtual void init();
00091 virtual char AddModToConfig(int conffd, const char *fname);
00092 virtual void loadConfigDir(const char *ipath);
00093 virtual void AddGlobalOptions(SWModule * module, ConfigEntMap & section,
00094 ConfigEntMap::iterator start,
00095 ConfigEntMap::iterator end);
00096 virtual void AddLocalOptions(SWModule * module, ConfigEntMap & section,
00097 ConfigEntMap::iterator start,
00098 ConfigEntMap::iterator end);
00099 std::list<std::string> augPaths;
00100
00106 virtual void AddEncodingFilters(SWModule * module, ConfigEntMap & section);
00112 virtual void AddRenderFilters(SWModule * module, ConfigEntMap & section);
00118 virtual void AddStripFilters(SWModule * module, ConfigEntMap & section);
00124 virtual void AddRawFilters(SWModule * module, ConfigEntMap & section);
00125
00126 virtual void augmentModules(const char *ipath);
00127
00128 public:
00129
00134 static bool debug;
00135 static bool isICU;
00136 static const char *globalConfPath;
00140 static void findConfig(char *configType, char **prefixPath, char **configPath, std::list<std::string> *augPaths = 0);
00149 SWConfig *config;
00153 SWConfig *sysconfig;
00176 ModMap Modules;
00177 SWModule *getModule(const char *modName) { ModMap::iterator it = Modules.find(modName); return ((it != Modules.end()) ? it->second : 0); }
00181 char *prefixPath;
00185 char *configPath;
00186
00194 SWMgr(SWConfig * iconfig = 0, SWConfig * isysconfig = 0, bool autoload = true, SWFilterMgr *filterMgr = 0);
00199 SWMgr(SWFilterMgr *filterMgr);
00209 SWMgr(const char *iConfigPath, bool autoload = true, SWFilterMgr *filterMgr = 0);
00215 virtual ~SWMgr();
00219 virtual void InstallScan(const char *dir);
00224 virtual signed char Load();
00232 virtual void setGlobalOption(const char *option, const char *value);
00237 virtual const char *getGlobalOption(const char *option);
00243 virtual const char *getGlobalOptionTip(const char *option);
00247 virtual OptionsList getGlobalOptions();
00251 virtual OptionsList getGlobalOptionValues(const char *option);
00293 virtual signed char setCipherKey(const char *modName, const char *key);
00294 };
00295
00296 SWORD_NAMESPACE_END
00297 #endif