00001 00009 #ifndef __GeneralSubtree_H__ 00010 #define __GeneralSubtree_H__ 00011 00012 #include "PKIFdll.h" 00013 #include "Buffer.h" 00014 #define CAC_API_FACTORY 00015 00016 #include <vector> 00017 00018 #include "GeneralName.h" 00019 00020 struct CPKIFGeneralSubtreeImpl; 00021 FD_SMART_PTR(CPKIFName); 00022 00029 class CAC_API CPKIFGeneralSubtree 00030 { 00031 public: 00032 enum MatchState { MATCH, NO_MATCH, NOT_APPLICABLE }; 00033 CPKIFGeneralSubtree(); 00034 CPKIFGeneralSubtree(const CPKIFBufferPtr& genSubtree); 00035 //CPKIFGeneralSubtree(const CACX509V3GeneralSubtree& name); 00036 virtual ~CPKIFGeneralSubtree(); 00037 00038 CPKIFGeneralNamePtr GetBase() const; 00039 int GetMin() const; 00040 int GetMax() const; 00041 00042 void SetBase(CPKIFGeneralNamePtr ); 00043 void SetMin(int); 00044 void SetMax(int); 00045 void SetEmpty(void); 00046 00047 static bool IsSupported(CPKIFGeneralName::GENNAMETYPE type); 00048 00049 MatchState IsInSubtree(const CPKIFNamePtr& cert) const; 00050 MatchState IsInSubtree(const CPKIFGeneralNamePtr &) const; 00051 00052 bool operator==(const CPKIFGeneralSubtree& rhs); 00053 CPKIFGeneralSubtree * ShallowCopy(); 00054 00055 private: 00056 CPKIFGeneralSubtree(const CPKIFGeneralSubtree& name); 00057 CPKIFGeneralSubtree& operator=(const CPKIFGeneralSubtree& rhs); //added 4/6/2004 00058 00059 CPKIFGeneralSubtreeImpl *m_impl; 00060 }; 00061 DECLARE_SMART_POINTERS(CPKIFGeneralSubtree); 00062 typedef std::vector<CPKIFGeneralSubtreePtr, PKIFAlloc<CPKIFGeneralSubtreePtr> > CPKIFGeneralSubtreeList; 00063 DECLARE_SMART_POINTERS(CPKIFGeneralSubtreeList); 00064 typedef CPKIFGeneralSubtreeList CPKIFGeneralSubtrees; 00065 DECLARE_SMART_POINTERS(CPKIFGeneralSubtrees); 00066 #endif