Provider.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_BEE_SECURITY_PROVIDER_H
00024 #define _CLASS_BEE_SECURITY_PROVIDER_H
00025
00026 #ifdef __cplusplus
00027
00028 #include "beecrypt/c++/util/Properties.h"
00029 using beecrypt::util::Properties;
00030
00031 #include <unicode/ucnv.h>
00032
00033 namespace beecrypt {
00034 namespace security {
00037 class Provider : public Properties
00038 {
00039 friend class Security;
00040
00041 private:
00042 typedef Object* (*instantiator)();
00043
00044 class Instantiator : public Object
00045 {
00046 private:
00047 instantiator _inst;
00048
00049 public:
00050 Instantiator(instantiator inst);
00051 virtual ~Instantiator() {}
00052
00053 Object* instantiate();
00054 };
00055
00056 String _name;
00057 String _info;
00058 double _vers;
00059
00060 UConverter* _conv;
00061
00062 Hashtable<String,Instantiator> _imap;
00063
00064 Object* instantiate(const String& name) const;
00065
00066 protected:
00067 #if WIN32
00068 HANDLE _dlhandle;
00069 #else
00070 void* _dlhandle;
00071 #endif
00072
00073 BEECRYPTCXXAPI
00074 Provider(const String& name, double version, const String& info);
00075
00076 public:
00077 BEECRYPTCXXAPI
00078 virtual ~Provider();
00079
00080 BEECRYPTCXXAPI
00081 Object* setProperty(const String& key, const String& value);
00082
00083 BEECRYPTCXXAPI
00084 const String& getName() const throw ();
00085 BEECRYPTCXXAPI
00086 const String& getInfo() const throw ();
00087 BEECRYPTCXXAPI
00088 double getVersion() const throw ();
00089 };
00090 }
00091 }
00092
00093 #endif
00094
00095 #endif