00001 00009 #ifndef __PKIFFUNCSTORAGE_H__ 00010 #define __PKIFFUNCSTORAGE_H__ 00011 00012 #include "PKIFdll.h" 00013 #include "PKIFEnums.h" 00014 #include <vector> 00015 00016 FD_SMART_PTR(CPKIFCertificateNodeEntry); 00017 class CPKIFPathValidationResults; 00018 // forward declaration 00019 struct CPKIFFuncStorageImpl; 00020 00032 class CAC_API CPKIFFuncStorage 00033 { 00034 public: 00035 CPKIFFuncStorage(void (*) (const CPKIFCertificateNodeEntryPtr&, CPKIFPathValidationResults&, CertificateType)); 00036 ~CPKIFFuncStorage(); 00037 00038 void addFuncs(CPKIFFuncStorage& v); 00039 void addFunc( void (*) (const CPKIFCertificateNodeEntryPtr&, CPKIFPathValidationResults&, CertificateType)); 00040 void getFuncs(std::vector<void (*) (const CPKIFCertificateNodeEntryPtr&, CPKIFPathValidationResults&, CertificateType)>&vec); 00041 void operator()(const CPKIFCertificateNodeEntryPtr&, CPKIFPathValidationResults&, CertificateType); 00042 bool empty(); 00043 00044 private: 00046 CPKIFFuncStorage(const CPKIFFuncStorage& ext);//added 8/21/2004 00048 CPKIFFuncStorage& operator=(const CPKIFFuncStorage& rhs); //added 8/21/2004 00049 00050 //std::vector<void (*) (const CPKIFCertificateNodeEntryPtr&, CPKIFPathValidationResults&, CertificateType)> m_storage; 00051 CPKIFFuncStorageImpl *m_impl; 00052 }; 00053 DECLARE_SMART_POINTERS(CPKIFFuncStorage) 00054 00055 00064 class CAC_API CPKIFFuncStorageSingleton : public CPKIFFuncStorage 00065 { 00066 public: 00067 static CPKIFFuncStorageSingleton * GetInstance(void); 00068 ~CPKIFFuncStorageSingleton(); 00069 00070 private: 00071 CPKIFFuncStorageSingleton(); 00073 CPKIFFuncStorageSingleton(const CPKIFFuncStorageSingleton& ext);//added 8/21/2004 00075 CPKIFFuncStorageSingleton& operator=(const CPKIFFuncStorageSingleton& rhs); //added 8/21/2004 00076 00077 static CPKIFFuncStorageSingleton * m_hInstance; 00078 }; 00079 00080 #endif 00081 00082