00001 /*! 00002 * \file PasswordCodecPrototypeManager.h 00003 * \brief Defines the manager of all the codec prototype available 00004 * 00005 * \author Frederic RUAUDEL <grumz@users.sf.net> 00006 * 00007 * $Revision: 1.8 $ 00008 * $Date: 2003/03/08 17:04:21 $ 00009 * 00010 * \b PassGuardFramework 00011 * Copyleft (c) 2002 Frederic RUAUDEL, all rights reversed 00012 * 00013 * This program is free software which I release under the GNU General Public 00014 * License. You may redistribute and/or modify this program under the terms 00015 * of that license as published by the Free Software Foundation; either 00016 * version 2 of the License, or (at your option) any later version. 00017 * 00018 * This program is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 * GNU General Public License for more details. Version 2 is in the 00022 * COPYING file in the top level directory of this distribution. 00023 * 00024 * To get a copy of the GNU General Public License, write to the Free Software 00025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00026 **/ 00027 00028 #ifndef PASSWORD_CODEC_PROTOTYPE_MANAGER_H 00029 #define PASSWORD_CODEC_PROTOTYPE_MANAGER_H 00030 00031 #include <stdio.h> 00032 #include <dirent.h> 00033 #include <dlfcn.h> 00034 #include <sys/types.h> 00035 00036 #include <map> 00037 #include <string> 00038 #include <list> 00039 00040 #include <PasswordCodecPrototype.h> 00041 00042 using namespace std; 00043 00044 /*! 00045 * \brief the manager of all the codec prototype available as plugins 00046 **/ 00047 class PasswordCodecPrototypeManager : public PassguardErrorManager 00048 { 00049 public: 00050 PasswordCodecPrototypeManager (); 00051 ~PasswordCodecPrototypeManager (); 00052 00053 bool loadPlugins (string path_to_plugins); 00054 00055 PasswordCodecPrototype* getPasswordCodecPrototype (string codec_type); 00056 string getCodecDefaultFilename (string codec_type); 00057 00058 list<string> getPasswordCodecPrototypeTypeList (void); 00059 00060 private: 00061 bool registerPlugin (string plugin_filename); 00062 00063 map<string,PasswordCodecPrototype*> _codec_map; 00064 map<string,void*> _plugins_handle_map; 00065 list<string> _codec_type_list; 00066 00067 }; 00068 00069 #endif /* PASSWORD_CODEC_PROTOTYPE_MANAGER_H */