aboutsummaryrefslogtreecommitdiff
path: root/paludis/mask.hh
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-10-08 09:04:54 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2007-10-08 09:04:54 +0000
commitba60ed5885f0ba43151f4cf94da447bac9545728 (patch)
treee3652c1628e0a5fd27ee244bfa6110fc008913e1 /paludis/mask.hh
parentbe4baf788345073b27f9307c64f412c6f43521c8 (diff)
downloadpaludis-ba60ed5885f0ba43151f4cf94da447bac9545728.tar.gz
paludis-ba60ed5885f0ba43151f4cf94da447bac9545728.tar.xz
More doxygen work.
Diffstat (limited to 'paludis/mask.hh')
-rw-r--r--paludis/mask.hh104
1 files changed, 104 insertions, 0 deletions
diff --git a/paludis/mask.hh b/paludis/mask.hh
index 29b660cf1..4681e91dc 100644
--- a/paludis/mask.hh
+++ b/paludis/mask.hh
@@ -29,11 +29,28 @@
#include <paludis/util/sequence-fwd.hh>
#include <string>
+/** \file
+ * Declarations for mask classes.
+ *
+ * \ingroup g_mask
+ *
+ * \section Examples
+ *
+ * - \ref example_mask.cc "example_mask.cc" (for masks)
+ */
+
namespace paludis
{
#include <paludis/mask-sr.hh>
+ /**
+ * Types for a visitor that can visit a Mask subclass.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
struct MaskVisitorTypes :
VisitorTypes<
MaskVisitorTypes,
@@ -47,51 +64,138 @@ namespace paludis
{
};
+ /**
+ * A Mask represents one reason why a PackageID is masked (not available to
+ * be installed).
+ *
+ * A basic Mask has:
+ *
+ * - A single character key, which can be used by clients if they need a
+ * very compact way of representing a mask.
+ *
+ * - A description.
+ *
+ * Subclasses provide additional information.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE Mask :
public virtual ConstAcceptInterface<MaskVisitorTypes>
{
public:
+ ///\name Basic operations
+ ///\{
+
virtual ~Mask() = 0;
+ ///\}
+
+ /**
+ * A single character key, which can be used by clients if they need
+ * a very compact way of representing a mask.
+ */
virtual const char key() const = 0;
+
+ /**
+ * A description of the mask.
+ */
virtual const std::string description() const = 0;
};
+ /**
+ * A UserMask is a Mask due to user configuration.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE UserMask :
public Mask,
public ConstAcceptInterfaceVisitsThis<MaskVisitorTypes, UserMask>
{
};
+ /**
+ * An UnacceptedMask is a Mask that signifies that a particular value or
+ * combination of values in (for example) a MetadataSetKey or
+ * MetadataSpecTreeKey is not accepted by user configuration.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE UnacceptedMask :
public Mask,
public ConstAcceptInterfaceVisitsThis<MaskVisitorTypes, UnacceptedMask>
{
public:
+ /**
+ * Fetch the metadata key that is not accepted.
+ */
virtual const tr1::shared_ptr<const MetadataKey> unaccepted_key() const = 0;
};
+ /**
+ * A RepositoryMask is a Mask that signifies that a PackageID has been
+ * marked as masked by a Repository.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE RepositoryMask :
public Mask,
public ConstAcceptInterfaceVisitsThis<MaskVisitorTypes, RepositoryMask>
{
public:
+ /**
+ * Fetch a metadata key explaining the mask. May return a zero
+ * pointer, if no more information is available.
+ */
virtual const tr1::shared_ptr<const MetadataKey> mask_key() const = 0;
};
+ /**
+ * An UnsupportedMask is a Mask that signifies that a PackageID is not
+ * supported, for example because it is broken or because it uses an
+ * unrecognised EAPI.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE UnsupportedMask :
public Mask,
public ConstAcceptInterfaceVisitsThis<MaskVisitorTypes, UnsupportedMask>
{
public:
+ /**
+ * An explanation of why we are unsupported.
+ */
virtual const std::string explanation() const = 0;
};
+ /**
+ * An AssociationMask is a Mask that signifies that a PackageID is masked
+ * because of its association with another PackageID that is itself masked.
+ *
+ * This is used by old-style virtuals. If the provider of a virtual is
+ * masked then the virtual itself is masked by association.
+ *
+ * \ingroup g_mask
+ * \since 0.26
+ * \nosubgrouping
+ */
class PALUDIS_VISIBLE AssociationMask :
public Mask,
public ConstAcceptInterfaceVisitsThis<MaskVisitorTypes, AssociationMask>
{
public:
+ /**
+ * Fetch the associated package.
+ */
virtual const tr1::shared_ptr<const PackageID> associated_package() const = 0;
};
}