00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef LIMAL_CA_MGM_EXTENSION_BASE_HPP
00023 #define LIMAL_CA_MGM_EXTENSION_BASE_HPP
00024
00025 #include <limal/ca-mgm/config.h>
00026 #include <limal/ca-mgm/CommonData.hpp>
00027 #include <blocxx/COWIntrusiveReference.hpp>
00028
00029 namespace LIMAL_NAMESPACE {
00030
00031 namespace CA_MGM_NAMESPACE {
00032
00033 class CA;
00034 class ExtensionBaseImpl;
00035
00036 class ExtensionBase {
00037
00038 public:
00039 ExtensionBase(bool extPresent = false, bool extCritical = false);
00040
00041 ExtensionBase(const ExtensionBase& extension);
00042
00043 virtual ~ExtensionBase();
00044
00045 #ifndef SWIG
00046
00047 ExtensionBase& operator=(const ExtensionBase& extension);
00048
00049 #endif
00050
00051 void setPresent(bool extPresent);
00052 void setCritical(bool extCritical);
00053
00054 bool isCritical() const;
00055 bool isPresent() const;
00056
00057 virtual void commit2Config(CA& ca, Type type) const = 0;
00058
00059 virtual bool valid() const =0;
00060 virtual blocxx::StringArray verify() const =0;
00061
00062 virtual blocxx::StringArray dump() const;
00063
00064 private:
00065 blocxx::COWIntrusiveReference<ExtensionBaseImpl> m_impl;
00066 };
00067
00068 }
00069 }
00070
00071 #endif // LIMAL_CA_MGM_EXTENSION_BASE_HPP