/* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* * Copyright (c) 2007, 2008, 2009, 2010, 2011 Ciaran McCreesh * * This file is part of the Paludis package manager. Paludis is free software; * you can redistribute it and/or modify it under the terms of the GNU General * Public License version 2, as published by the Free Software Foundation. * * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef PALUDIS_GUARD_PALUDIS_LITERAL_METADATA_KEY_HH #define PALUDIS_GUARD_PALUDIS_LITERAL_METADATA_KEY_HH 1 #include #include #include #include /** \file * Declarations for literal metadata key classes. * * \ingroup g_literal_metadata_key * * \section Examples * * - \ref example_metadata_key.cc "example_metadata_key.cc" (for metadata keys) */ namespace paludis { template class PALUDIS_VISIBLE PrettyPrintableLiteralMetadataValueKey : public MetadataValueKey { public: virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataValueKey is a MetadataValueKey whose value is a * copyable literal that is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.26 */ template class PALUDIS_VISIBLE LiteralMetadataValueKey : public std::conditional::value, PrettyPrintableLiteralMetadataValueKey, MetadataValueKey >::type { private: Pimp > _imp; public: ///\name Basic operations ///\{ LiteralMetadataValueKey(const std::string &, const std::string &, const MetadataKeyType, const T_ &); ~LiteralMetadataValueKey(); ///\} virtual const T_ parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); /** * \since 0.36 */ void change_value(const T_ &); }; /** * A LiteralMetadataFSPathSequenceKey is a MetadataCollectionKey * whose value is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.26 */ class PALUDIS_VISIBLE LiteralMetadataFSPathSequenceKey : public MetadataCollectionKey { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataFSPathSequenceKey(const std::string &, const std::string &, const MetadataKeyType, const std::shared_ptr &); ~LiteralMetadataFSPathSequenceKey(); ///\} virtual const std::shared_ptr parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataStringSetKey is a MetadataCollectionKey > * whose value is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.26 */ class PALUDIS_VISIBLE LiteralMetadataStringSetKey : public MetadataCollectionKey > { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataStringSetKey(const std::string &, const std::string &, const MetadataKeyType, const std::shared_ptr > &); ~LiteralMetadataStringSetKey(); ///\} virtual const std::shared_ptr > parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataStringSequenceKey is a MetadataCollectionKey > * whose value is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.30 */ class PALUDIS_VISIBLE LiteralMetadataStringSequenceKey : public MetadataCollectionKey > { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataStringSequenceKey(const std::string &, const std::string &, const MetadataKeyType, const std::shared_ptr > &); ~LiteralMetadataStringSequenceKey(); ///\} virtual const std::shared_ptr > parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataTimeKey is a MetadataTimeKey whose value is known at * construction time. * * \ingroup g_literal_metadata_key * \since 0.36 * \since 0.44 Timestamp instead of time_t */ class PALUDIS_VISIBLE LiteralMetadataTimeKey : public MetadataTimeKey { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataTimeKey(const std::string &, const std::string &, const MetadataKeyType, const Timestamp); ~LiteralMetadataTimeKey(); ///\} virtual Timestamp parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataStringStringMapKey is a MetadataCollectionKey > * whose value is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.55 */ class PALUDIS_VISIBLE LiteralMetadataStringStringMapKey : public MetadataCollectionKey > { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataStringStringMapKey(const std::string &, const std::string &, const MetadataKeyType, const std::shared_ptr > &); ~LiteralMetadataStringStringMapKey(); ///\} virtual const std::shared_ptr > parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; /** * A LiteralMetadataMaintainersKey is a MetadataCollectionKey * whose value is known at construction time. * * \ingroup g_literal_metadata_key * \since 0.68 */ class PALUDIS_VISIBLE LiteralMetadataMaintainersKey : public MetadataCollectionKey { private: Pimp _imp; public: ///\name Basic operations ///\{ LiteralMetadataMaintainersKey(const std::string &, const std::string &, const MetadataKeyType, const std::shared_ptr &); ~LiteralMetadataMaintainersKey(); ///\} virtual const std::shared_ptr parse_value() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string raw_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string human_name() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual MetadataKeyType type() const PALUDIS_ATTRIBUTE((warn_unused_result)); virtual const std::string pretty_print_value( const PrettyPrinter &, const PrettyPrintOptions &) const PALUDIS_ATTRIBUTE((warn_unused_result)); }; } #endif