zypp::capability::CapabilityImpl Class Reference

Abstract base for Capability implementations. More...

#include <CapabilityImpl.h>

Inheritance diagram for zypp::capability::CapabilityImpl:
[legend]

List of all members.

Public Types

typedef CapabilityImpl Self
typedef
CapabilityImpl_Ptr 
Ptr
typedef
CapabilityImpl_constPtr 
constPtr
typedef
CapabilityTraits::KindType 
Kind

Public Member Functions

virtual const Kindkind () const =0
 Kind of capability.
const Resolvable::Kindrefers () const
 Kind of Resolvable this refers to.
virtual bool relevant () const
 Relevant per default.
virtual CapMatch matches (const constPtr &rhs) const =0
 Return whether the Capabilities match.
virtual std::string encode () const =0
 The string representation that enables CapFactory to recreate this capability.
virtual std::string asString () const
 More or less human readable representation as string.
virtual std::string index () const

Static Public Member Functions

static SplitInfo getSplitInfo (const Capability &cap)
 Solver hack.
static constPtr backdoor (const Capability &cap)
 Access to Capability details.

Protected Member Functions

 CapabilityImpl (const Resolvable::Kind &refers_r)
 Ctor taking the kind of Resolvable this refers to.
bool sameKind (const constPtr &rhs) const
bool sameRefers (const constPtr &rhs) const
bool sameKindAndRefers (const constPtr &rhs) const
virtual std::ostream & dumpOn (std::ostream &str) const
 Helper for stream output.

Private Member Functions

virtual bool capImplOrderLess (const constPtr &rhs) const
 Helper for CapImplOrder to define an order relation.

Private Attributes

Resolvable::Kind _refers
 Kind of Resolvable this refers to.

Friends

struct CapImplOrder

Classes

struct  SplitInfo
 Solver hack. More...


Detailed Description

Abstract base for Capability implementations.

Example: Adding a new kind of capability: FilesystemCap

 1) Create the implementataion files
       zypp/capability/FilesystemCap.h
       zypp/capability/FilesystemCap.cc
    for
       class FilesystemCap : public CapabilityImpl

 2) Add include in zypp/capability/Capabilities.h
       #include "zypp/capability/FilesystemCap.h"

 3) Add forward declaration in zypp/capability/CapTraits.h
       class FilesystemCap;

 4) Define the capabilities kind in zypp/capability/CapTraits.cc
       template<>
       const CapabilityTraits::KindType CapTraits<FilesystemCap> ::kind( "FilesystemCap" );

 5) If needed, define the EvalCap in zypp/CapFactory.h
       Capability filesystemEvalCap() const;
    What's this?
    Some capabilities are not evaluated by comparing 2 capabilities, but represent a query
    for some system property: 'filesystem(xfs)' -> 'xfs is listed in /etc/sysconfig/stoage'.
    The query is performed iff the capability is compared to a special EvalCap, which is usg.
    provided by a special SystemResolvable>
       <System> : provides    : filesystem()    // the filesystemEvalCap
       <Package>: supplements : filesystem(xfs) // a package that supplements xfs filesystem

Definition at line 66 of file CapabilityImpl.h.


Member Typedef Documentation

typedef CapabilityImpl zypp::capability::CapabilityImpl::Self

Reimplemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, zypp::capability::NullCap, zypp::capability::SplitCap, and zypp::capability::VersionedCap.

Definition at line 69 of file CapabilityImpl.h.

typedef CapabilityImpl_Ptr zypp::capability::CapabilityImpl::Ptr

Reimplemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, and zypp::capability::SplitCap.

Definition at line 70 of file CapabilityImpl.h.

typedef CapabilityImpl_constPtr zypp::capability::CapabilityImpl::constPtr

Reimplemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, and zypp::capability::SplitCap.

Definition at line 71 of file CapabilityImpl.h.

typedef CapabilityTraits::KindType zypp::capability::CapabilityImpl::Kind

Definition at line 73 of file CapabilityImpl.h.


Constructor & Destructor Documentation

zypp::capability::CapabilityImpl::CapabilityImpl ( const Resolvable::Kind refers_r  )  [protected]

Ctor taking the kind of Resolvable this refers to.

Definition at line 35 of file CapabilityImpl.cc.


Member Function Documentation

virtual const Kind& zypp::capability::CapabilityImpl::kind (  )  const [pure virtual]

Kind of capability.

Implemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, zypp::capability::NullCap, and zypp::capability::SplitCap.

Referenced by dumpOn().

const Resolvable::Kind& zypp::capability::CapabilityImpl::refers (  )  const [inline]

Kind of Resolvable this refers to.

Definition at line 80 of file CapabilityImpl.h.

Referenced by dumpOn().

virtual bool zypp::capability::CapabilityImpl::relevant (  )  const [inline, virtual]

Relevant per default.

Reimplemented in zypp::capability::NullCap, and zypp::capability::SplitCap.

Definition at line 84 of file CapabilityImpl.h.

virtual CapMatch zypp::capability::CapabilityImpl::matches ( const constPtr rhs  )  const [pure virtual]

Return whether the Capabilities match.

Note:
We rely on Capability passing non NULL pointers.

Implemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, zypp::capability::NullCap, and zypp::capability::SplitCap.

virtual std::string zypp::capability::CapabilityImpl::encode (  )  const [pure virtual]

The string representation that enables CapFactory to recreate this capability.

Todo:
check it!

Implemented in zypp::capability::FileCap, zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, zypp::capability::NamedCap, zypp::capability::NullCap, zypp::capability::SplitCap, and zypp::capability::VersionedCap.

Referenced by capImplOrderLess().

virtual std::string zypp::capability::CapabilityImpl::asString (  )  const [inline, virtual]

More or less human readable representation as string.

Suitable for displaying it at the UI. Defaults to encode.

Definition at line 102 of file CapabilityImpl.h.

References zypp::url::encode().

Referenced by dumpOn().

virtual std::string zypp::capability::CapabilityImpl::index (  )  const [inline, virtual]

Deprecated:
A string representation usg. without edition range. All Capabilities that may match each other must have the same index. That's ugly, but the way the solver currently uses it.

Reimplemented in zypp::capability::FilesystemCap, zypp::capability::HalCap, zypp::capability::ModaliasCap, and zypp::capability::VersionedCap.

Definition at line 110 of file CapabilityImpl.h.

References zypp::url::encode().

CapabilityImpl::SplitInfo zypp::capability::CapabilityImpl::getSplitInfo ( const Capability cap  )  [static]

Solver hack.

Definition at line 40 of file SplitCap.cc.

References zypp::Capability::_pimpl, zypp::capability::CapabilityImpl::SplitInfo::name, and zypp::capability::CapabilityImpl::SplitInfo::path.

static constPtr zypp::capability::CapabilityImpl::backdoor ( const Capability cap  )  [inline, static]

Access to Capability details.

Definition at line 124 of file CapabilityImpl.h.

References zypp::Capability::_pimpl.

Referenced by zypp::capability::asKind().

bool zypp::capability::CapabilityImpl::sameKind ( const constPtr rhs  )  const [inline, protected]

Definition at line 132 of file CapabilityImpl.h.

bool zypp::capability::CapabilityImpl::sameRefers ( const constPtr rhs  )  const [inline, protected]

Definition at line 135 of file CapabilityImpl.h.

bool zypp::capability::CapabilityImpl::sameKindAndRefers ( const constPtr rhs  )  const [inline, protected]

Definition at line 138 of file CapabilityImpl.h.

Referenced by zypp::capability::NamedCap::matches(), zypp::capability::ModaliasCap::matches(), zypp::capability::HalCap::matches(), zypp::capability::FilesystemCap::matches(), and zypp::capability::FileCap::matches().

std::ostream & zypp::capability::CapabilityImpl::dumpOn ( std::ostream &  str  )  const [protected, virtual]

Helper for stream output.

Reimplemented from zypp::base::ReferenceCounted.

Definition at line 54 of file CapabilityImpl.cc.

References asString(), kind(), and refers().

bool zypp::capability::CapabilityImpl::capImplOrderLess ( const constPtr rhs  )  const [private, virtual]

Helper for CapImplOrder to define an order relation.

Invariant:
CapImplOrder asserts that rhs refers and kind values are equal to this. Implementation may concentrate on the remaining values.
Default compares encoded.

Definition at line 44 of file CapabilityImpl.cc.

References encode().


Friends And Related Function Documentation

friend struct CapImplOrder [friend]

Definition at line 150 of file CapabilityImpl.h.


Member Data Documentation

Resolvable::Kind zypp::capability::CapabilityImpl::_refers [private]

Kind of Resolvable this refers to.

Definition at line 147 of file CapabilityImpl.h.


The documentation for this class was generated from the following files:
Generated on Tue Sep 25 19:23:18 2007 for libzypp by  doxygen 1.5.3