limal-ca-mgm
ExtensionBase.hpp
Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                                                                      |
00003 |                     _     _   _   _     __     _                     |
00004 |                    | |   | | | \_/ |   /  \   | |                    |
00005 |                    | |   | | | |_| |  / /\ \  | |                    |
00006 |                    | |__ | | | | | | / ____ \ | |__                  |
00007 |                    |____||_| |_| |_|/ /    \ \|____|                 |
00008 |                                                                      |
00009 |                             ca-mgm library                           |
00010 |                                                                      |
00011 |                                         (C) SUSE Linux Products GmbH |
00012 \----------------------------------------------------------------------/
00013 
00014   File:       ExtensionBase.hpp
00015 
00016   Author:     <Michael Calmer>     <mc@suse.de>
00017   Maintainer: <Michael Calmer>     <mc@suse.de>
00018 
00019   Purpose:
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