00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_CAPABILITY_HALCAP_H
00013 #define ZYPP_CAPABILITY_HALCAP_H
00014
00015 #include "zypp/capability/CapabilityImpl.h"
00016
00018 namespace zypp
00019 {
00020
00021 namespace capability
00022 {
00023
00024 DEFINE_PTR_TYPE(HalCap)
00025
00026
00027
00028
00029
00043 class HalCap : public CapabilityImpl
00044 {
00045 public:
00046 typedef HalCap Self;
00047 typedef HalCap_Ptr Ptr;
00048 typedef HalCap_constPtr constPtr;
00049
00050 public:
00052 HalCap( const Resolvable::Kind & refers_r, const std::string & name_r )
00053 : CapabilityImpl( refers_r )
00054 , _name( name_r )
00055 {}
00056
00058 HalCap( const Resolvable::Kind & refers_r,
00059 const std::string & name_r,
00060 Rel op_r,
00061 const std::string & value_r )
00062 : CapabilityImpl( refers_r )
00063 , _name( name_r )
00064 , _op( op_r )
00065 , _value( value_r )
00066 {}
00067
00068 public:
00070 virtual const Kind & kind() const;
00071
00073 virtual CapMatch matches( const CapabilityImpl::constPtr & rhs ) const;
00074
00076 virtual std::string encode() const;
00077
00079 virtual std::string index() const;
00080
00081 public:
00082 const std::string & name() const
00083 { return _name; }
00084
00085 Rel op() const
00086 { return _op; }
00087
00088 const std::string & value() const
00089 { return _value; }
00090
00091 private:
00093 bool isEvalCmd() const;
00094
00096 bool evaluate() const;
00097
00098 private:
00100 std::string _name;
00101 Rel _op;
00102 std::string _value;
00103 };
00105
00107 }
00110 }
00112 #endif // ZYPP_CAPABILITY_HALCAP_H