aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-11-07 09:05:00 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-11-07 03:11:14 +0000
commit96784fd72f76a92d81564a3b19639ce708cc6c9d (patch)
treeb13588b91d7a61a980be0453ba15e00e918f5e61
parent90b55defb8d8202d5e3a426df83f4976a7c2231a (diff)
downloadpaludis-96784fd72f76a92d81564a3b19639ce708cc6c9d.tar.gz
paludis-96784fd72f76a92d81564a3b19639ce708cc6c9d.tar.xz
Support multiple profile formats
-rw-r--r--paludis/repositories/e/Makefile.am10
-rw-r--r--paludis/repositories/e/e_choices_key.cc2
-rw-r--r--paludis/repositories/e/e_key.cc1
-rw-r--r--paludis/repositories/e/e_repository.cc13
-rw-r--r--paludis/repositories/e/e_repository.hh5
-rw-r--r--paludis/repositories/e/e_repository_entries.hh14
-rw-r--r--paludis/repositories/e/e_repository_profile.hh175
-rw-r--r--paludis/repositories/e/ebuild_entries.cc16
-rw-r--r--paludis/repositories/e/ebuild_entries.hh12
-rw-r--r--paludis/repositories/e/profile.cc28
-rw-r--r--paludis/repositories/e/profile.hh103
-rw-r--r--paludis/repositories/e/profile_file.cc (renamed from paludis/repositories/e/e_repository_profile_file.cc)0
-rw-r--r--paludis/repositories/e/profile_file.hh (renamed from paludis/repositories/e/e_repository_profile_file.hh)13
-rw-r--r--paludis/repositories/e/traditional_profile.cc (renamed from paludis/repositories/e/e_repository_profile.cc)88
-rw-r--r--paludis/repositories/e/traditional_profile.hh98
15 files changed, 313 insertions, 265 deletions
diff --git a/paludis/repositories/e/Makefile.am b/paludis/repositories/e/Makefile.am
index 93b3f3e..ca5dd7b 100644
--- a/paludis/repositories/e/Makefile.am
+++ b/paludis/repositories/e/Makefile.am
@@ -42,8 +42,6 @@ noinst_HEADERS = \
e_repository_news.hh \
e_repository_params-se.hh \
e_repository_params.hh \
- e_repository_profile.hh \
- e_repository_profile_file.hh \
e_repository_sets.hh \
e_stripper.hh \
eapi.hh \
@@ -72,8 +70,11 @@ noinst_HEADERS = \
myoption.hh \
myoptions_requirements_verifier.hh \
pipe_command_handler.hh \
+ profile.hh \
+ profile_file.hh \
source_uri_finder.hh \
traditional_layout.hh \
+ traditional_profile.hh \
use_desc.hh \
xml_things_handle.hh \
vdb_contents_tokeniser.hh \
@@ -102,8 +103,6 @@ libpaludiserepository_la_SOURCES = \
e_repository_mask_file.cc \
e_repository_news.cc \
e_repository_params.cc \
- e_repository_profile.cc \
- e_repository_profile_file.cc \
e_repository_sets.cc \
e_stripper.cc \
eapi.cc \
@@ -130,9 +129,12 @@ libpaludiserepository_la_SOURCES = \
myoption.cc \
myoptions_requirements_verifier.cc \
pipe_command_handler.cc \
+ profile.cc \
+ profile_file.cc \
registration.cc \
source_uri_finder.cc \
traditional_layout.cc \
+ traditional_profile.cc \
use_desc.cc \
xml_things_handle.cc \
vdb_id.cc \
diff --git a/paludis/repositories/e/e_choices_key.cc b/paludis/repositories/e/e_choices_key.cc
index f569cf1..154448d 100644
--- a/paludis/repositories/e/e_choices_key.cc
+++ b/paludis/repositories/e/e_choices_key.cc
@@ -22,7 +22,7 @@
#include <paludis/repositories/e/ebuild_id.hh>
#include <paludis/repositories/e/eapi.hh>
#include <paludis/repositories/e/dep_spec_pretty_printer.hh>
-#include <paludis/repositories/e/e_repository_profile.hh>
+#include <paludis/repositories/e/profile.hh>
#include <paludis/repositories/e/e_repository.hh>
#include <paludis/repositories/e/myoption.hh>
diff --git a/paludis/repositories/e/e_key.cc b/paludis/repositories/e/e_key.cc
index 244b4dc..3a5b6e6 100644
--- a/paludis/repositories/e/e_key.cc
+++ b/paludis/repositories/e/e_key.cc
@@ -23,7 +23,6 @@
#include <paludis/repositories/e/eapi.hh>
#include <paludis/repositories/e/dep_spec_pretty_printer.hh>
#include <paludis/repositories/e/vdb_contents_tokeniser.hh>
-#include <paludis/repositories/e/e_repository_profile.hh>
#include <paludis/repositories/e/e_repository.hh>
#include <paludis/repositories/e/myoption.hh>
diff --git a/paludis/repositories/e/e_repository.cc b/paludis/repositories/e/e_repository.cc
index 80133d5..4390501 100644
--- a/paludis/repositories/e/e_repository.cc
+++ b/paludis/repositories/e/e_repository.cc
@@ -24,8 +24,9 @@
#include <paludis/repositories/e/e_key.hh>
#include <paludis/repositories/e/e_repository.hh>
#include <paludis/repositories/e/e_repository_mask_file.hh>
-#include <paludis/repositories/e/e_repository_profile_file.hh>
-#include <paludis/repositories/e/e_repository_profile.hh>
+#include <paludis/repositories/e/profile.hh>
+#include <paludis/repositories/e/profile_file.hh>
+#include <paludis/repositories/e/traditional_profile.hh>
#include <paludis/repositories/e/e_repository_news.hh>
#include <paludis/repositories/e/e_repository_sets.hh>
#include <paludis/repositories/e/e_repository_exceptions.hh>
@@ -190,7 +191,7 @@ namespace paludis
mutable bool has_mirrors;
mutable MirrorMap mirrors;
- mutable std::tr1::shared_ptr<ERepositoryProfile> profile_ptr;
+ mutable std::tr1::shared_ptr<erepository::Profile> profile_ptr;
mutable std::tr1::shared_ptr<const FSEntry> main_profile_path;
mutable std::tr1::shared_ptr<ERepositoryNews> news_ptr;
@@ -400,7 +401,7 @@ namespace paludis
else
main_profile_path.reset(new FSEntry(*params.profiles()->begin()));
- profile_ptr.reset(new ERepositoryProfile(
+ profile_ptr.reset(new TraditionalProfile(
params.environment(), repo, repo->name(), *profiles,
EAPIData::get_instance()->eapi_from_string(
params.eapi_when_unknown())->supported()->ebuild_environment_variables()->env_arch(),
@@ -841,7 +842,7 @@ ERepository::layout() const
return _imp->layout;
}
-const std::tr1::shared_ptr<const ERepositoryProfile>
+const std::tr1::shared_ptr<const Profile>
ERepository::profile() const
{
_imp->need_profiles();
@@ -900,7 +901,7 @@ ERepository::virtual_packages() const
std::tr1::shared_ptr<VirtualsSequence> result(new VirtualsSequence);
- for (ERepositoryProfile::VirtualsConstIterator i(_imp->profile_ptr->begin_virtuals()),
+ for (erepository::Profile::VirtualsConstIterator i(_imp->profile_ptr->begin_virtuals()),
i_end(_imp->profile_ptr->end_virtuals()) ; i != i_end ; ++i)
result->push_back(make_named_values<RepositoryVirtualsEntry>(
value_for<n::provided_by_spec>(i->second),
diff --git a/paludis/repositories/e/e_repository.hh b/paludis/repositories/e/e_repository.hh
index 6f76fb5..1b03674 100644
--- a/paludis/repositories/e/e_repository.hh
+++ b/paludis/repositories/e/e_repository.hh
@@ -26,7 +26,7 @@
#include <paludis/util/fs_entry.hh>
#include <paludis/util/private_implementation_pattern.hh>
#include <paludis/repositories/e/e_repository_params.hh>
-#include <paludis/repositories/e/e_repository_profile.hh>
+#include <paludis/repositories/e/profile.hh>
#include <paludis/repositories/e/layout.hh>
#include <tr1/memory>
#include <string>
@@ -39,7 +39,6 @@
namespace paludis
{
- class ERepositoryProfile;
class ERepositoryNews;
/**
@@ -165,7 +164,7 @@ namespace paludis
const std::tr1::shared_ptr<const erepository::Layout> layout() const;
const std::tr1::shared_ptr<const erepository::ERepositoryEntries> entries() const;
- const std::tr1::shared_ptr<const ERepositoryProfile> profile() const;
+ const std::tr1::shared_ptr<const erepository::Profile> profile() const;
std::tr1::shared_ptr<const RepositoryMaskInfo> repository_masked(const PackageID &) const;
diff --git a/paludis/repositories/e/e_repository_entries.hh b/paludis/repositories/e/e_repository_entries.hh
index 3e18f60..63036d4 100644
--- a/paludis/repositories/e/e_repository_entries.hh
+++ b/paludis/repositories/e/e_repository_entries.hh
@@ -28,7 +28,7 @@
#include <paludis/environment-fwd.hh>
#include <paludis/util/instantiation_policy.hh>
#include <paludis/output_manager-fwd.hh>
-#include <paludis/repositories/e/e_repository_profile.hh>
+#include <paludis/repositories/e/profile.hh>
#include <paludis/repositories/e/e_repository_params.hh>
#include <paludis/repositories/e/e_repository_id.hh>
#include <tr1/memory>
@@ -78,40 +78,40 @@ namespace paludis
* Fetch an environment variable.
*/
virtual std::string get_environment_variable(const std::tr1::shared_ptr<const ERepositoryID> &, const std::string & var,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const = 0;
/**
* Handle an install.
*/
virtual void install(const std::tr1::shared_ptr<const ERepositoryID> &, const InstallAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const = 0;
/**
* Handle a fetch.
*/
virtual void fetch(const std::tr1::shared_ptr<const ERepositoryID> &,
const FetchAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const = 0;
/**
* Handle a pretend fetch.
*/
virtual void pretend_fetch(const std::tr1::shared_ptr<const ERepositoryID> &, PretendFetchAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const = 0;
/**
* Handle a pretend.
*/
virtual bool pretend(const std::tr1::shared_ptr<const ERepositoryID> &,
const PretendAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
/**
* Handle an info.
*/
virtual void info(const std::tr1::shared_ptr<const ERepositoryID> &,
const InfoAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const = 0;
+ const std::tr1::shared_ptr<const erepository::Profile> &) const = 0;
/**
* Handle a merge.
diff --git a/paludis/repositories/e/e_repository_profile.hh b/paludis/repositories/e/e_repository_profile.hh
deleted file mode 100644
index 88d7a55..0000000
--- a/paludis/repositories/e/e_repository_profile.hh
+++ /dev/null
@@ -1,175 +0,0 @@
-/* vim: set sw=4 sts=4 et foldmethod=syntax : */
-
-/*
- * Copyright (c) 2005, 2006, 2007, 2008, 2009 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_REPOSITORIES_E_E_REPOSITORY_PROFILE_HH
-#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_REPOSITORY_PROFILE_HH 1
-
-#include <paludis/dep_spec-fwd.hh>
-#include <paludis/package_id-fwd.hh>
-#include <paludis/name.hh>
-#include <paludis/version_spec-fwd.hh>
-#include <paludis/mask-fwd.hh>
-#include <paludis/metadata_key-fwd.hh>
-#include <paludis/choice-fwd.hh>
-#include <paludis/spec_tree-fwd.hh>
-#include <paludis/util/fs_entry.hh>
-#include <paludis/util/private_implementation_pattern.hh>
-#include <paludis/util/instantiation_policy.hh>
-#include <paludis/util/tribool.hh>
-#include <paludis/util/wrapped_forward_iterator-fwd.hh>
-#include <paludis/util/mutex-fwd.hh>
-#include <paludis/util/named_value.hh>
-#include <paludis/repositories/e/e_repository_id.hh>
-#include <string>
-
-/** \file
- * Declaration for the ERepositoryProfile class.
- *
- * \ingroup grperepository
- */
-
-namespace paludis
-{
- class Environment;
- class ERepository;
-
- namespace n
- {
- struct arch_var_if_special;
- struct environment;
- struct location;
- struct mutex;
- struct profiles_explicitly_set;
- struct repository;
- struct repository_name;
- struct value;
- }
-
- class ERepositoryProfile;
-
- /**
- * Holds the profile data (but <em>not</em> the profiles/ top level data) for
- * a ERepository instance.
- *
- * \ingroup grperepository
- * \nosubgrouping
- */
- class PALUDIS_VISIBLE ERepositoryProfile :
- private PrivateImplementationPattern<ERepositoryProfile>,
- private InstantiationPolicy<ERepositoryProfile, instantiation_method::NonCopyableTag>
- {
- public:
- ///\name Basic operations
- ///\{
-
- ERepositoryProfile(const Environment * const env,
- const ERepository * const,
- const RepositoryName & name,
- const FSEntrySequence & location,
- const std::string & arch_var_if_special,
- const bool profiles_explicitly_set);
- ~ERepositoryProfile();
-
- ///\}
-
- ///\name Use flag queries
- ///\{
-
- /// Is a use flag masked?
- bool use_masked(
- const std::tr1::shared_ptr<const PackageID> &,
- const std::tr1::shared_ptr<const Choice> &,
- const UnprefixedChoiceName & value_unprefixed,
- const ChoiceNameWithPrefix & value_prefixed
- ) const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- /// Is a use flag forced?
- bool use_forced(
- const std::tr1::shared_ptr<const PackageID> &,
- const std::tr1::shared_ptr<const Choice> &,
- const UnprefixedChoiceName & value_unprefixed,
- const ChoiceNameWithPrefix & value_prefixed
- ) const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- /// Use flag state, ignoring mask and force?
- Tribool use_state_ignoring_masks(
- const std::tr1::shared_ptr<const PackageID> &,
- const std::tr1::shared_ptr<const Choice> &,
- const UnprefixedChoiceName & value_unprefixed,
- const ChoiceNameWithPrefix & value_prefixed
- ) const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- std::tr1::shared_ptr<const Set<UnprefixedChoiceName> > known_choice_value_names(
- const std::tr1::shared_ptr<const erepository::ERepositoryID> &,
- const std::tr1::shared_ptr<const Choice> &
- ) const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- ///\}
-
- ///\name Iterate over USE_EXPAND, USE_EXPAND_HIDDEN etc
- ///\{
-
- const std::tr1::shared_ptr<const Set<std::string> > use_expand() const PALUDIS_ATTRIBUTE((warn_unused_result));
- const std::tr1::shared_ptr<const Set<std::string> > use_expand_hidden() const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- const std::tr1::shared_ptr<const Set<std::string> > use_expand_unprefixed() const PALUDIS_ATTRIBUTE((warn_unused_result));
- const std::tr1::shared_ptr<const Set<std::string> > use_expand_implicit() const PALUDIS_ATTRIBUTE((warn_unused_result));
- const std::tr1::shared_ptr<const Set<std::string> > iuse_implicit() const PALUDIS_ATTRIBUTE((warn_unused_result));
- const std::tr1::shared_ptr<const Set<std::string> > use_expand_values(const std::string &) const PALUDIS_ATTRIBUTE((warn_unused_result));
-
- ///\}
-
- ///\name Environment variable queries
- ///\{
-
- /// What is the value of an environment variable?
- std::string environment_variable(const std::string &) const;
-
- ///\}
-
- ///\name Masks
- ///\{
-
- std::tr1::shared_ptr<const RepositoryMaskInfo> profile_masked(const PackageID &) const;
-
- ///\}
-
- ///\name System package set
- ///\{
-
- const std::tr1::shared_ptr<const SetSpecTree> system_packages() const;
-
- ///\}
-
- ///\name Virtuals
- ///\{
-
- struct VirtualsConstIteratorTag;
- typedef WrappedForwardIterator<VirtualsConstIteratorTag,
- const std::pair<const QualifiedPackageName, std::tr1::shared_ptr<const PackageDepSpec> > > VirtualsConstIterator;
-
- VirtualsConstIterator begin_virtuals() const;
- VirtualsConstIterator end_virtuals() const;
- VirtualsConstIterator find_virtual(const QualifiedPackageName &) const;
-
- ///\}
- };
-}
-
-#endif
diff --git a/paludis/repositories/e/ebuild_entries.cc b/paludis/repositories/e/ebuild_entries.cc
index b11b856..6c08197 100644
--- a/paludis/repositories/e/ebuild_entries.cc
+++ b/paludis/repositories/e/ebuild_entries.cc
@@ -226,7 +226,7 @@ namespace
{
std::string make_use(const Environment * const,
const ERepositoryID & id,
- std::tr1::shared_ptr<const ERepositoryProfile> profile)
+ std::tr1::shared_ptr<const Profile> profile)
{
if (! id.eapi()->supported())
{
@@ -262,7 +262,7 @@ namespace
std::tr1::shared_ptr<Map<std::string, std::string> >
make_expand(const Environment * const,
const ERepositoryID & e,
- std::tr1::shared_ptr<const ERepositoryProfile> profile)
+ std::tr1::shared_ptr<const Profile> profile)
{
std::tr1::shared_ptr<Map<std::string, std::string> > expand_vars(
new Map<std::string, std::string>);
@@ -350,7 +350,7 @@ namespace
void
EbuildEntries::fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
- const FetchAction & fetch_action, const std::tr1::shared_ptr<const ERepositoryProfile> & p) const
+ const FetchAction & fetch_action, const std::tr1::shared_ptr<const Profile> & p) const
{
using namespace std::tr1::placeholders;
@@ -585,7 +585,7 @@ EbuildEntries::fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
void
EbuildEntries::pretend_fetch(const std::tr1::shared_ptr<const ERepositoryID> & id,
- PretendFetchAction & a, const std::tr1::shared_ptr<const ERepositoryProfile> &) const
+ PretendFetchAction & a, const std::tr1::shared_ptr<const Profile> &) const
{
using namespace std::tr1::placeholders;
@@ -634,7 +634,7 @@ namespace
void
EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
- const InstallAction & install_action, const std::tr1::shared_ptr<const ERepositoryProfile> & p) const
+ const InstallAction & install_action, const std::tr1::shared_ptr<const Profile> & p) const
{
using namespace std::tr1::placeholders;
@@ -931,7 +931,7 @@ EbuildEntries::install(const std::tr1::shared_ptr<const ERepositoryID> & id,
void
EbuildEntries::info(const std::tr1::shared_ptr<const ERepositoryID> & id,
const InfoAction & a,
- const std::tr1::shared_ptr<const ERepositoryProfile> & p) const
+ const std::tr1::shared_ptr<const Profile> & p) const
{
using namespace std::tr1::placeholders;
@@ -1015,7 +1015,7 @@ EbuildEntries::info(const std::tr1::shared_ptr<const ERepositoryID> & id,
std::string
EbuildEntries::get_environment_variable(
const std::tr1::shared_ptr<const ERepositoryID> & id,
- const std::string & var, const std::tr1::shared_ptr<const ERepositoryProfile> &) const
+ const std::string & var, const std::tr1::shared_ptr<const Profile> &) const
{
EAPIPhases phases(id->eapi()->supported()->ebuild_phases()->ebuild_variable());
@@ -1146,7 +1146,7 @@ bool
EbuildEntries::pretend(
const std::tr1::shared_ptr<const ERepositoryID> & id,
const PretendAction & a,
- const std::tr1::shared_ptr<const ERepositoryProfile> & p) const
+ const std::tr1::shared_ptr<const Profile> & p) const
{
using namespace std::tr1::placeholders;
diff --git a/paludis/repositories/e/ebuild_entries.hh b/paludis/repositories/e/ebuild_entries.hh
index 0868d17..a3669df 100644
--- a/paludis/repositories/e/ebuild_entries.hh
+++ b/paludis/repositories/e/ebuild_entries.hh
@@ -80,26 +80,26 @@ namespace paludis
PALUDIS_ATTRIBUTE((warn_unused_result));
virtual std::string get_environment_variable(const std::tr1::shared_ptr<const ERepositoryID> &, const std::string & var,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual void fetch(const std::tr1::shared_ptr<const ERepositoryID> &,
const FetchAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual void pretend_fetch(const std::tr1::shared_ptr<const ERepositoryID> &, PretendFetchAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual void install(const std::tr1::shared_ptr<const ERepositoryID> &,
const InstallAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual bool pretend(const std::tr1::shared_ptr<const ERepositoryID> &,
const PretendAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual void info(const std::tr1::shared_ptr<const ERepositoryID> &,
const InfoAction &,
- const std::tr1::shared_ptr<const ERepositoryProfile> &) const;
+ const std::tr1::shared_ptr<const Profile> &) const;
virtual std::string get_package_file_manifest_key(const FSEntry &, const QualifiedPackageName &) const;
diff --git a/paludis/repositories/e/profile.cc b/paludis/repositories/e/profile.cc
new file mode 100644
index 0000000..dfde049
--- /dev/null
+++ b/paludis/repositories/e/profile.cc
@@ -0,0 +1,28 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2009 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
+ */
+
+#include <paludis/repositories/e/profile.hh>
+
+using namespace paludis;
+using namespace paludis::erepository;
+
+Profile::~Profile()
+{
+}
+
diff --git a/paludis/repositories/e/profile.hh b/paludis/repositories/e/profile.hh
new file mode 100644
index 0000000..465266c
--- /dev/null
+++ b/paludis/repositories/e/profile.hh
@@ -0,0 +1,103 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2005, 2006, 2007, 2008, 2009 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_REPOSITORIES_E_E_REPOSITORY_PROFILE_HH
+#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_REPOSITORY_PROFILE_HH 1
+
+#include <paludis/dep_spec-fwd.hh>
+#include <paludis/package_id-fwd.hh>
+#include <paludis/name.hh>
+#include <paludis/version_spec-fwd.hh>
+#include <paludis/mask-fwd.hh>
+#include <paludis/metadata_key-fwd.hh>
+#include <paludis/choice-fwd.hh>
+#include <paludis/spec_tree-fwd.hh>
+#include <paludis/util/fs_entry-fwd.hh>
+#include <paludis/util/tribool.hh>
+#include <paludis/util/wrapped_forward_iterator-fwd.hh>
+#include <paludis/repositories/e/e_repository_id.hh>
+#include <string>
+
+namespace paludis
+{
+ namespace erepository
+ {
+ class PALUDIS_VISIBLE Profile
+ {
+ public:
+ virtual ~Profile() = 0;
+
+ virtual bool use_masked(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual bool use_forced(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual Tribool use_state_ignoring_masks(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual const std::tr1::shared_ptr<const Set<UnprefixedChoiceName> > known_choice_value_names(
+ const std::tr1::shared_ptr<const erepository::ERepositoryID> &,
+ const std::tr1::shared_ptr<const Choice> &
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand() const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_hidden() const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_unprefixed() const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_implicit() const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ virtual const std::tr1::shared_ptr<const Set<std::string> > iuse_implicit() const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_values(const std::string &) const
+ PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
+
+ virtual const std::string environment_variable(const std::string &) const = 0;
+
+ virtual const std::tr1::shared_ptr<const RepositoryMaskInfo> profile_masked(const PackageID &) const = 0;
+
+ virtual const std::tr1::shared_ptr<const SetSpecTree> system_packages() const = 0;
+
+ struct VirtualsConstIteratorTag;
+ typedef WrappedForwardIterator<VirtualsConstIteratorTag,
+ const std::pair<const QualifiedPackageName, std::tr1::shared_ptr<const PackageDepSpec> > > VirtualsConstIterator;
+
+ virtual VirtualsConstIterator begin_virtuals() const = 0;
+ virtual VirtualsConstIterator end_virtuals() const = 0;
+ virtual VirtualsConstIterator find_virtual(const QualifiedPackageName &) const = 0;
+ };
+ }
+}
+
+#endif
diff --git a/paludis/repositories/e/e_repository_profile_file.cc b/paludis/repositories/e/profile_file.cc
index 89e8afa..89e8afa 100644
--- a/paludis/repositories/e/e_repository_profile_file.cc
+++ b/paludis/repositories/e/profile_file.cc
diff --git a/paludis/repositories/e/e_repository_profile_file.hh b/paludis/repositories/e/profile_file.hh
index 2241fc8..c9913f6 100644
--- a/paludis/repositories/e/e_repository_profile_file.hh
+++ b/paludis/repositories/e/profile_file.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
+ * Copyright (c) 2006, 2007, 2008, 2009 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
@@ -17,8 +17,8 @@
* Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_REPOSITORY_PROFILE_FILE_HH
-#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_REPOSITORY_PROFILE_FILE_HH 1
+#ifndef PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_PROFILE_FILE_HH
+#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_PROFILE_FILE_HH 1
#include <paludis/repositories/e/eapi-fwd.hh>
#include <paludis/util/private_implementation_pattern.hh>
@@ -34,13 +34,6 @@ namespace paludis
namespace erepository
{
- /**
- * A file in a ERepository profile.
- *
- * Handles -lines, comments, inherits automatically.
- *
- * \ingroup grperepository
- */
template <typename F_>
class PALUDIS_VISIBLE ProfileFile :
private PrivateImplementationPattern<ProfileFile<F_> >
diff --git a/paludis/repositories/e/e_repository_profile.cc b/paludis/repositories/e/traditional_profile.cc
index b0b3af6..48a79b1 100644
--- a/paludis/repositories/e/e_repository_profile.cc
+++ b/paludis/repositories/e/traditional_profile.cc
@@ -17,8 +17,8 @@
* Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <paludis/repositories/e/e_repository_profile.hh>
-#include <paludis/repositories/e/e_repository_profile_file.hh>
+#include <paludis/repositories/e/traditional_profile.hh>
+#include <paludis/repositories/e/profile_file.hh>
#include <paludis/repositories/e/e_repository_mask_file.hh>
#include <paludis/repositories/e/e_repository_exceptions.hh>
#include <paludis/repositories/e/e_repository.hh>
@@ -62,7 +62,7 @@
using namespace paludis;
using namespace paludis::erepository;
-template class WrappedForwardIterator<ERepositoryProfile::VirtualsConstIteratorTag,
+template class WrappedForwardIterator<TraditionalProfile::VirtualsConstIteratorTag,
const std::pair<const QualifiedPackageName, std::tr1::shared_ptr<const PackageDepSpec> > >;
typedef std::tr1::unordered_map<std::string, std::tr1::shared_ptr<Set<UnprefixedChoiceName> > > KnownMap;
@@ -100,13 +100,13 @@ namespace
namespace paludis
{
/**
- * Implementation for ERepositoryProfile.
+ * Implementation for TraditionalProfile.
*
* \ingroup grperepository
- * \see ERepositoryProfile
+ * \see TraditionalProfile
*/
template<>
- class Implementation<ERepositoryProfile>
+ class Implementation<TraditionalProfile>
{
private:
void load_environment();
@@ -241,14 +241,14 @@ namespace paludis
}
void
-Implementation<ERepositoryProfile>::load_environment()
+Implementation<TraditionalProfile>::load_environment()
{
environment_variables["CONFIG_PROTECT"] = getenv_with_default("CONFIG_PROTECT", "/etc");
environment_variables["CONFIG_PROTECT_MASK"] = getenv_with_default("CONFIG_PROTECT_MASK", "");
}
void
-Implementation<ERepositoryProfile>::load_profile_directory_recursively(const FSEntry & dir)
+Implementation<TraditionalProfile>::load_profile_directory_recursively(const FSEntry & dir)
{
Context context("When adding profile directory '" + stringify(dir) + ":");
@@ -284,7 +284,7 @@ Implementation<ERepositoryProfile>::load_profile_directory_recursively(const FSE
}
void
-Implementation<ERepositoryProfile>::load_profile_parent(const FSEntry & dir)
+Implementation<TraditionalProfile>::load_profile_parent(const FSEntry & dir)
{
Context context("When handling parent file for profile directory '" + stringify(dir) + ":");
@@ -330,7 +330,7 @@ Implementation<ERepositoryProfile>::load_profile_parent(const FSEntry & dir)
}
void
-Implementation<ERepositoryProfile>::load_profile_make_defaults(const FSEntry & dir)
+Implementation<TraditionalProfile>::load_profile_make_defaults(const FSEntry & dir)
{
Context context("When handling make.defaults file for profile directory '" + stringify(dir) + ":");
@@ -478,7 +478,7 @@ Implementation<ERepositoryProfile>::load_profile_make_defaults(const FSEntry & d
}
void
-Implementation<ERepositoryProfile>::load_special_make_defaults_vars(const FSEntry & dir)
+Implementation<TraditionalProfile>::load_special_make_defaults_vars(const FSEntry & dir)
{
const std::tr1::shared_ptr<const EAPI> eapi(EAPIData::get_instance()->eapi_from_string(
repository->eapi_for_file(dir / "make.defaults")));
@@ -546,7 +546,7 @@ Implementation<ERepositoryProfile>::load_special_make_defaults_vars(const FSEntr
}
bool
-Implementation<ERepositoryProfile>::is_incremental(const EAPI & e, const std::string & s) const
+Implementation<TraditionalProfile>::is_incremental(const EAPI & e, const std::string & s) const
{
Context c("When checking whether '" + s + "' is incremental:");
@@ -562,7 +562,7 @@ Implementation<ERepositoryProfile>::is_incremental(const EAPI & e, const std::st
}
void
-Implementation<ERepositoryProfile>::make_vars_from_file_vars()
+Implementation<TraditionalProfile>::make_vars_from_file_vars()
{
try
{
@@ -660,7 +660,7 @@ Implementation<ERepositoryProfile>::make_vars_from_file_vars()
}
void
-Implementation<ERepositoryProfile>::load_basic_use_file(const FSEntry & file, FlagStatusMap & m)
+Implementation<TraditionalProfile>::load_basic_use_file(const FSEntry & file, FlagStatusMap & m)
{
if (! file.exists())
return;
@@ -699,7 +699,7 @@ Implementation<ERepositoryProfile>::load_basic_use_file(const FSEntry & file, Fl
}
void
-Implementation<ERepositoryProfile>::load_spec_use_file(const EAPI & eapi, const FSEntry & file, PackageFlagStatusMapList & m)
+Implementation<TraditionalProfile>::load_spec_use_file(const EAPI & eapi, const FSEntry & file, PackageFlagStatusMapList & m)
{
if (! file.exists())
return;
@@ -755,7 +755,7 @@ Implementation<ERepositoryProfile>::load_spec_use_file(const EAPI & eapi, const
}
void
-Implementation<ERepositoryProfile>::add_use_expand_to_use()
+Implementation<TraditionalProfile>::add_use_expand_to_use()
{
Context context("When adding USE_EXPAND to USE:");
@@ -776,7 +776,7 @@ Implementation<ERepositoryProfile>::add_use_expand_to_use()
}
void
-Implementation<ERepositoryProfile>::fish_out_use_expand_names()
+Implementation<TraditionalProfile>::fish_out_use_expand_names()
{
Context context("When finding all known USE_EXPAND names:");
@@ -802,7 +802,7 @@ Implementation<ERepositoryProfile>::fish_out_use_expand_names()
}
void
-Implementation<ERepositoryProfile>::handle_profile_arch_var(const std::string & s)
+Implementation<TraditionalProfile>::handle_profile_arch_var(const std::string & s)
{
Context context("When handling profile " + s + " variable:");
@@ -828,21 +828,21 @@ Implementation<ERepositoryProfile>::handle_profile_arch_var(const std::string &
}
}
-ERepositoryProfile::ERepositoryProfile(
+TraditionalProfile::TraditionalProfile(
const Environment * const env, const ERepository * const p, const RepositoryName & name,
const FSEntrySequence & location,
const std::string & arch_var_if_special, const bool x) :
- PrivateImplementationPattern<ERepositoryProfile>(
- new Implementation<ERepositoryProfile>(env, p, name, location, arch_var_if_special, x))
+ PrivateImplementationPattern<TraditionalProfile>(
+ new Implementation<TraditionalProfile>(env, p, name, location, arch_var_if_special, x))
{
}
-ERepositoryProfile::~ERepositoryProfile()
+TraditionalProfile::~TraditionalProfile()
{
}
bool
-ERepositoryProfile::use_masked(
+TraditionalProfile::use_masked(
const std::tr1::shared_ptr<const PackageID> & id,
const std::tr1::shared_ptr<const Choice> & choice,
const UnprefixedChoiceName & value_unprefixed,
@@ -878,7 +878,7 @@ ERepositoryProfile::use_masked(
}
bool
-ERepositoryProfile::use_forced(
+TraditionalProfile::use_forced(
const std::tr1::shared_ptr<const PackageID> & id,
const std::tr1::shared_ptr<const Choice> & choice,
const UnprefixedChoiceName & value_unprefixed,
@@ -914,7 +914,7 @@ ERepositoryProfile::use_forced(
}
Tribool
-ERepositoryProfile::use_state_ignoring_masks(
+TraditionalProfile::use_state_ignoring_masks(
const std::tr1::shared_ptr<const PackageID> & id,
const std::tr1::shared_ptr<const Choice> & choice,
const UnprefixedChoiceName & value_unprefixed,
@@ -964,8 +964,8 @@ namespace
}
}
-std::tr1::shared_ptr<const Set<UnprefixedChoiceName> >
-ERepositoryProfile::known_choice_value_names(
+const std::tr1::shared_ptr<const Set<UnprefixedChoiceName> >
+TraditionalProfile::known_choice_value_names(
const std::tr1::shared_ptr<const ERepositoryID> & id,
const std::tr1::shared_ptr<const Choice> & choice
) const
@@ -1007,8 +1007,8 @@ ERepositoryProfile::known_choice_value_names(
return it2->second;
}
-std::string
-ERepositoryProfile::environment_variable(const std::string & s) const
+const std::string
+TraditionalProfile::environment_variable(const std::string & s) const
{
EnvironmentVariablesMap::const_iterator i(_imp->environment_variables.find(s));
if (_imp->environment_variables.end() == i)
@@ -1018,31 +1018,31 @@ ERepositoryProfile::environment_variable(const std::string & s) const
}
const std::tr1::shared_ptr<const SetSpecTree>
-ERepositoryProfile::system_packages() const
+TraditionalProfile::system_packages() const
{
return _imp->system_packages;
}
-ERepositoryProfile::VirtualsConstIterator
-ERepositoryProfile::begin_virtuals() const
+TraditionalProfile::VirtualsConstIterator
+TraditionalProfile::begin_virtuals() const
{
return VirtualsConstIterator(_imp->virtuals.begin());
}
-ERepositoryProfile::VirtualsConstIterator
-ERepositoryProfile::find_virtual(const QualifiedPackageName & n) const
+TraditionalProfile::VirtualsConstIterator
+TraditionalProfile::find_virtual(const QualifiedPackageName & n) const
{
return VirtualsConstIterator(_imp->virtuals.find(n));
}
-ERepositoryProfile::VirtualsConstIterator
-ERepositoryProfile::end_virtuals() const
+TraditionalProfile::VirtualsConstIterator
+TraditionalProfile::end_virtuals() const
{
return VirtualsConstIterator(_imp->virtuals.end());
}
-std::tr1::shared_ptr<const RepositoryMaskInfo>
-ERepositoryProfile::profile_masked(const PackageID & id) const
+const std::tr1::shared_ptr<const RepositoryMaskInfo>
+TraditionalProfile::profile_masked(const PackageID & id) const
{
PackageMaskMap::const_iterator rr(_imp->package_mask.find(id.name()));
if (_imp->package_mask.end() == rr)
@@ -1059,31 +1059,31 @@ ERepositoryProfile::profile_masked(const PackageID & id) const
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::use_expand() const
+TraditionalProfile::use_expand() const
{
return _imp->use_expand;
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::use_expand_hidden() const
+TraditionalProfile::use_expand_hidden() const
{
return _imp->use_expand_hidden;
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::use_expand_unprefixed() const
+TraditionalProfile::use_expand_unprefixed() const
{
return _imp->use_expand_unprefixed;
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::use_expand_implicit() const
+TraditionalProfile::use_expand_implicit() const
{
return _imp->use_expand_implicit;
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::use_expand_values(const std::string & x) const
+TraditionalProfile::use_expand_values(const std::string & x) const
{
Context context("When finding USE_EXPAND_VALUES_" + x + ":");
std::tr1::unordered_map<std::string, std::tr1::shared_ptr<Set<std::string> > >::const_iterator i(_imp->use_expand_values.find(x));
@@ -1093,7 +1093,7 @@ ERepositoryProfile::use_expand_values(const std::string & x) const
}
const std::tr1::shared_ptr<const Set<std::string> >
-ERepositoryProfile::iuse_implicit() const
+TraditionalProfile::iuse_implicit() const
{
return _imp->iuse_implicit;
}
diff --git a/paludis/repositories/e/traditional_profile.hh b/paludis/repositories/e/traditional_profile.hh
new file mode 100644
index 0000000..67e3a21
--- /dev/null
+++ b/paludis/repositories/e/traditional_profile.hh
@@ -0,0 +1,98 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2005, 2006, 2007, 2008, 2009 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_REPOSITORIES_E_E_REPOSITORY_TRADITIONAL_PROFILE_HH
+#define PALUDIS_GUARD_PALUDIS_REPOSITORIES_E_E_REPOSITORY_TRADITIONAL_PROFILE_HH 1
+
+#include <paludis/repositories/e/profile.hh>
+#include <paludis/repositories/e/e_repository.hh>
+#include <string>
+
+namespace paludis
+{
+ namespace erepository
+ {
+ class PALUDIS_VISIBLE TraditionalProfile :
+ private PrivateImplementationPattern<TraditionalProfile>,
+ public Profile
+ {
+ public:
+ TraditionalProfile(
+ const Environment * const, const ERepository * const, const RepositoryName &,
+ const FSEntrySequence &,
+ const std::string & arch_var_if_special,
+ const bool x
+ );
+
+ virtual ~TraditionalProfile();
+
+ virtual bool use_masked(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual bool use_forced(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual Tribool use_state_ignoring_masks(
+ const std::tr1::shared_ptr<const PackageID> &,
+ const std::tr1::shared_ptr<const Choice> &,
+ const UnprefixedChoiceName & value_unprefixed,
+ const ChoiceNameWithPrefix & value_prefixed
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual const std::tr1::shared_ptr<const Set<UnprefixedChoiceName> > known_choice_value_names(
+ const std::tr1::shared_ptr<const erepository::ERepositoryID> &,
+ const std::tr1::shared_ptr<const Choice> &
+ ) const PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand() const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_hidden() const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_unprefixed() const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_implicit() const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+ virtual const std::tr1::shared_ptr<const Set<std::string> > iuse_implicit() const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+ virtual const std::tr1::shared_ptr<const Set<std::string> > use_expand_values(const std::string &) const
+ PALUDIS_ATTRIBUTE((warn_unused_result));
+
+ virtual const std::string environment_variable(const std::string &) const;
+
+ virtual const std::tr1::shared_ptr<const RepositoryMaskInfo> profile_masked(const PackageID &) const;
+
+ virtual const std::tr1::shared_ptr<const SetSpecTree> system_packages() const;
+
+ virtual VirtualsConstIterator begin_virtuals() const;
+ virtual VirtualsConstIterator end_virtuals() const;
+ virtual VirtualsConstIterator find_virtual(const QualifiedPackageName &) const;
+ };
+ }
+}
+
+#endif