aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-09-08 14:43:07 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-09-08 04:23:53 +0100
commit8d8edc99e87a778c002def103714abfbeb005e71 (patch)
tree7e346aed806a16e43b0ba3588106f890b6bdeae3
parent69f549d700cacfba0644623ee1da114b0e55c92b (diff)
downloadpaludis-8d8edc99e87a778c002def103714abfbeb005e71.tar.gz
paludis-8d8edc99e87a778c002def103714abfbeb005e71.tar.xz
PackageID::dependencies_key
Clients can either continue using the split up keys, or use the new dependencies_key if it exists, ignoring the split up keys if it doesn't. Not all repositories provide a combined key.
-rw-r--r--paludis/package_id.hh15
-rw-r--r--paludis/repositories/accounts/accounts_id.cc7
-rw-r--r--paludis/repositories/accounts/accounts_id.hh1
-rw-r--r--paludis/repositories/accounts/installed_accounts_id.cc7
-rw-r--r--paludis/repositories/accounts/installed_accounts_id.hh1
-rw-r--r--paludis/repositories/e/e_installed_repository_id.cc7
-rw-r--r--paludis/repositories/e/e_installed_repository_id.hh1
-rw-r--r--paludis/repositories/e/ebuild_flat_metadata_cache.cc4
-rw-r--r--paludis/repositories/e/ebuild_id.cc2
-rw-r--r--paludis/repositories/e/ebuild_id.hh2
-rw-r--r--paludis/repositories/fake/fake_package_id.cc6
-rw-r--r--paludis/repositories/fake/fake_package_id.hh1
-rw-r--r--paludis/repositories/unavailable/unavailable_id.cc6
-rw-r--r--paludis/repositories/unavailable/unavailable_id.hh2
-rw-r--r--paludis/repositories/unpackaged/installed_id.cc6
-rw-r--r--paludis/repositories/unpackaged/installed_id.hh1
-rw-r--r--paludis/repositories/unpackaged/unpackaged_id.cc6
-rw-r--r--paludis/repositories/unpackaged/unpackaged_id.hh1
-rw-r--r--paludis/repositories/unwritten/unwritten_id.cc6
-rw-r--r--paludis/repositories/unwritten/unwritten_id.hh2
-rw-r--r--paludis/repositories/virtuals/package_id.cc6
-rw-r--r--paludis/repositories/virtuals/package_id.hh1
-rw-r--r--paludis/resolver/sanitised_dependencies.cc19
23 files changed, 100 insertions, 10 deletions
diff --git a/paludis/package_id.hh b/paludis/package_id.hh
index aded3c1..df53848 100644
--- a/paludis/package_id.hh
+++ b/paludis/package_id.hh
@@ -401,6 +401,21 @@ namespace paludis
PALUDIS_ATTRIBUTE((warn_unused_result)) = 0;
///\}
+
+ /**
+ * The dependencies_key, if non-zero, provides all of a package's
+ * dependencies.
+ *
+ * If dependencies_key is used, the client should ignore
+ * build_dependencies_key, run_dependencies_key,
+ * post_dependencies_key and suggested_dependencies_key.
+ *
+ * Repositories that support this key must also provide the old
+ * split out keys.
+ *
+ * \since 0.40.1
+ */
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const = 0;
};
/**
diff --git a/paludis/repositories/accounts/accounts_id.cc b/paludis/repositories/accounts/accounts_id.cc
index c31c88c..8d4e6fd 100644
--- a/paludis/repositories/accounts/accounts_id.cc
+++ b/paludis/repositories/accounts/accounts_id.cc
@@ -338,6 +338,13 @@ AccountsID::suggested_dependencies_key() const
return make_null_shared_ptr();
}
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+AccountsID::dependencies_key() const
+{
+ _need_file_keys();
+ return _imp->dependencies_key;
+}
+
const std::tr1::shared_ptr<const MetadataSpecTreeKey<FetchableURISpecTree> >
AccountsID::fetches_key() const
{
diff --git a/paludis/repositories/accounts/accounts_id.hh b/paludis/repositories/accounts/accounts_id.hh
index 93264f3..998f9d5 100644
--- a/paludis/repositories/accounts/accounts_id.hh
+++ b/paludis/repositories/accounts/accounts_id.hh
@@ -82,6 +82,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataValueKey<FSEntry> > fs_location_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<bool> > transient_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const Choices> > > choices_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
///\}
diff --git a/paludis/repositories/accounts/installed_accounts_id.cc b/paludis/repositories/accounts/installed_accounts_id.cc
index faecdde..fa4e914 100644
--- a/paludis/repositories/accounts/installed_accounts_id.cc
+++ b/paludis/repositories/accounts/installed_accounts_id.cc
@@ -257,6 +257,13 @@ InstalledAccountsID::post_dependencies_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+InstalledAccountsID::dependencies_key() const
+{
+ need_keys_added();
+ return _imp->dependencies_key;
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
InstalledAccountsID::suggested_dependencies_key() const
{
return make_null_shared_ptr();
diff --git a/paludis/repositories/accounts/installed_accounts_id.hh b/paludis/repositories/accounts/installed_accounts_id.hh
index b1d05c3..4ef80ae 100644
--- a/paludis/repositories/accounts/installed_accounts_id.hh
+++ b/paludis/repositories/accounts/installed_accounts_id.hh
@@ -80,6 +80,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataValueKey<FSEntry> > fs_location_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<bool> > transient_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const Choices> > > choices_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
///\}
diff --git a/paludis/repositories/e/e_installed_repository_id.cc b/paludis/repositories/e/e_installed_repository_id.cc
index 875f888..0122cda 100644
--- a/paludis/repositories/e/e_installed_repository_id.cc
+++ b/paludis/repositories/e/e_installed_repository_id.cc
@@ -729,6 +729,13 @@ EInstalledRepositoryID::provide_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+EInstalledRepositoryID::dependencies_key() const
+{
+ need_keys_added();
+ return _imp->raw_dependencies;
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
EInstalledRepositoryID::build_dependencies_key() const
{
need_keys_added();
diff --git a/paludis/repositories/e/e_installed_repository_id.hh b/paludis/repositories/e/e_installed_repository_id.hh
index 0110578..1ed10a4 100644
--- a/paludis/repositories/e/e_installed_repository_id.hh
+++ b/paludis/repositories/e/e_installed_repository_id.hh
@@ -66,6 +66,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > suggested_dependencies_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<PlainTextSpecTree> > restrict_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<PlainTextSpecTree> > properties_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<FetchableURISpecTree> > fetches_key() const;
diff --git a/paludis/repositories/e/ebuild_flat_metadata_cache.cc b/paludis/repositories/e/ebuild_flat_metadata_cache.cc
index 48398d9..4621261 100644
--- a/paludis/repositories/e/ebuild_flat_metadata_cache.cc
+++ b/paludis/repositories/e/ebuild_flat_metadata_cache.cc
@@ -723,8 +723,8 @@ EbuildFlatMetadataCache::save(const std::tr1::shared_ptr<const EbuildID> & id)
{
std::string s;
- if (id->raw_dependencies_key())
- s.append(flatten(id->raw_dependencies_key()->value()));
+ if (id->dependencies_key())
+ s.append(flatten(id->dependencies_key()->value()));
else
{
if (id->build_dependencies_key())
diff --git a/paludis/repositories/e/ebuild_id.cc b/paludis/repositories/e/ebuild_id.cc
index b14a813..4cd0dfc 100644
--- a/paludis/repositories/e/ebuild_id.cc
+++ b/paludis/repositories/e/ebuild_id.cc
@@ -704,7 +704,7 @@ EbuildID::provide_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
-EbuildID::raw_dependencies_key() const
+EbuildID::dependencies_key() const
{
need_keys_added();
return _imp->raw_dependencies;
diff --git a/paludis/repositories/e/ebuild_id.hh b/paludis/repositories/e/ebuild_id.hh
index cf9155c..f72b8c5 100644
--- a/paludis/repositories/e/ebuild_id.hh
+++ b/paludis/repositories/e/ebuild_id.hh
@@ -71,6 +71,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > suggested_dependencies_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<FetchableURISpecTree> > fetches_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<SimpleURISpecTree> > homepage_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::string> > short_description_key() const;
@@ -98,7 +99,6 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataValueKey<bool> > transient_key() const;
- const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > raw_dependencies_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<PlainTextSpecTree> > remote_ids_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<PlainTextSpecTree> > bugs_to_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<SimpleURISpecTree> > upstream_changelog_key() const;
diff --git a/paludis/repositories/fake/fake_package_id.cc b/paludis/repositories/fake/fake_package_id.cc
index ed519cd..31dd643 100644
--- a/paludis/repositories/fake/fake_package_id.cc
+++ b/paludis/repositories/fake/fake_package_id.cc
@@ -824,6 +824,12 @@ FakePackageID::suggested_dependencies_key()
return _imp->suggested_dependencies;
}
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+FakePackageID::dependencies_key() const
+{
+ return make_null_shared_ptr();
+}
+
const std::tr1::shared_ptr<const MetadataSpecTreeKey<FetchableURISpecTree> >
FakePackageID::fetches_key() const
{
diff --git a/paludis/repositories/fake/fake_package_id.hh b/paludis/repositories/fake/fake_package_id.hh
index 2ffbb0f..949c42d 100644
--- a/paludis/repositories/fake/fake_package_id.hh
+++ b/paludis/repositories/fake/fake_package_id.hh
@@ -248,6 +248,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > > virtual_for_key() const;
virtual const std::tr1::shared_ptr<const MetadataCollectionKey<KeywordNameSet> > keywords_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<ProvideSpecTree> > provide_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > build_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
diff --git a/paludis/repositories/unavailable/unavailable_id.cc b/paludis/repositories/unavailable/unavailable_id.cc
index 3ae025c..b9aa2a5 100644
--- a/paludis/repositories/unavailable/unavailable_id.cc
+++ b/paludis/repositories/unavailable/unavailable_id.cc
@@ -241,6 +241,12 @@ UnavailableID::provide_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+UnavailableID::dependencies_key() const
+{
+ return std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >();
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
UnavailableID::build_dependencies_key() const
{
return std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >();
diff --git a/paludis/repositories/unavailable/unavailable_id.hh b/paludis/repositories/unavailable/unavailable_id.hh
index d28dd8c..ab5009f 100644
--- a/paludis/repositories/unavailable/unavailable_id.hh
+++ b/paludis/repositories/unavailable/unavailable_id.hh
@@ -87,6 +87,8 @@ namespace paludis
const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > >
contained_in_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+ dependencies_key() const;
+ const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
build_dependencies_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
run_dependencies_key() const;
diff --git a/paludis/repositories/unpackaged/installed_id.cc b/paludis/repositories/unpackaged/installed_id.cc
index 57b6710..ae53deb 100644
--- a/paludis/repositories/unpackaged/installed_id.cc
+++ b/paludis/repositories/unpackaged/installed_id.cc
@@ -571,6 +571,12 @@ InstalledUnpackagedID::contained_in_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+InstalledUnpackagedID::dependencies_key() const
+{
+ return make_null_shared_ptr();
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
InstalledUnpackagedID::build_dependencies_key() const
{
return _imp->build_dependencies_key;
diff --git a/paludis/repositories/unpackaged/installed_id.hh b/paludis/repositories/unpackaged/installed_id.hh
index c3763eb..638dc01 100644
--- a/paludis/repositories/unpackaged/installed_id.hh
+++ b/paludis/repositories/unpackaged/installed_id.hh
@@ -64,6 +64,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<ProvideSpecTree> > provide_key() const;
virtual const std::tr1::shared_ptr<const MetadataCollectionKey<PackageIDSequence> > contains_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > > contained_in_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > build_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
diff --git a/paludis/repositories/unpackaged/unpackaged_id.cc b/paludis/repositories/unpackaged/unpackaged_id.cc
index e256213..ca782bf 100644
--- a/paludis/repositories/unpackaged/unpackaged_id.cc
+++ b/paludis/repositories/unpackaged/unpackaged_id.cc
@@ -204,6 +204,12 @@ UnpackagedID::contained_in_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+UnpackagedID::dependencies_key() const
+{
+ return make_null_shared_ptr();
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
UnpackagedID::build_dependencies_key() const
{
return _imp->build_dependencies_key;
diff --git a/paludis/repositories/unpackaged/unpackaged_id.hh b/paludis/repositories/unpackaged/unpackaged_id.hh
index d7f5da4..00daa1b 100644
--- a/paludis/repositories/unpackaged/unpackaged_id.hh
+++ b/paludis/repositories/unpackaged/unpackaged_id.hh
@@ -61,6 +61,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<ProvideSpecTree> > provide_key() const;
virtual const std::tr1::shared_ptr<const MetadataCollectionKey<PackageIDSequence> > contains_key() const;
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > > contained_in_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > build_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
diff --git a/paludis/repositories/unwritten/unwritten_id.cc b/paludis/repositories/unwritten/unwritten_id.cc
index b4a61e9..de0b274 100644
--- a/paludis/repositories/unwritten/unwritten_id.cc
+++ b/paludis/repositories/unwritten/unwritten_id.cc
@@ -232,6 +232,12 @@ UnwrittenID::provide_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+UnwrittenID::dependencies_key() const
+{
+ return std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >();
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
UnwrittenID::build_dependencies_key() const
{
return std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >();
diff --git a/paludis/repositories/unwritten/unwritten_id.hh b/paludis/repositories/unwritten/unwritten_id.hh
index 8eecee9..e8d0c20 100644
--- a/paludis/repositories/unwritten/unwritten_id.hh
+++ b/paludis/repositories/unwritten/unwritten_id.hh
@@ -92,6 +92,8 @@ namespace paludis
const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > >
contained_in_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+ dependencies_key() const;
+ const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
build_dependencies_key() const;
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
run_dependencies_key() const;
diff --git a/paludis/repositories/virtuals/package_id.cc b/paludis/repositories/virtuals/package_id.cc
index c731c8a..1665a3c 100644
--- a/paludis/repositories/virtuals/package_id.cc
+++ b/paludis/repositories/virtuals/package_id.cc
@@ -284,6 +284,12 @@ VirtualsPackageID::provide_key() const
}
const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
+VirtualsPackageID::dependencies_key() const
+{
+ return make_null_shared_ptr();
+}
+
+const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> >
VirtualsPackageID::build_dependencies_key() const
{
return _imp->bdep;
diff --git a/paludis/repositories/virtuals/package_id.hh b/paludis/repositories/virtuals/package_id.hh
index 78f3ce1..9a0cf24 100644
--- a/paludis/repositories/virtuals/package_id.hh
+++ b/paludis/repositories/virtuals/package_id.hh
@@ -91,6 +91,7 @@ namespace paludis
virtual const std::tr1::shared_ptr<const MetadataValueKey<std::tr1::shared_ptr<const PackageID> > > virtual_for_key() const;
virtual const std::tr1::shared_ptr<const MetadataCollectionKey<KeywordNameSet> > keywords_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<ProvideSpecTree> > provide_key() const;
+ virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > build_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > run_dependencies_key() const;
virtual const std::tr1::shared_ptr<const MetadataSpecTreeKey<DependencySpecTree> > post_dependencies_key() const;
diff --git a/paludis/resolver/sanitised_dependencies.cc b/paludis/resolver/sanitised_dependencies.cc
index c58f381..229f66a 100644
--- a/paludis/resolver/sanitised_dependencies.cc
+++ b/paludis/resolver/sanitised_dependencies.cc
@@ -356,12 +356,19 @@ SanitisedDependencies::populate(
{
Context context("When finding dependencies for '" + stringify(*id) + "':");
- if (id->build_dependencies_key())
- _populate_one(resolver, id, &PackageID::build_dependencies_key);
- if (id->run_dependencies_key())
- _populate_one(resolver, id, &PackageID::run_dependencies_key);
- if (id->post_dependencies_key())
- _populate_one(resolver, id, &PackageID::post_dependencies_key);
+ if (id->dependencies_key())
+ _populate_one(resolver, id, &PackageID::dependencies_key);
+ else
+ {
+ if (id->build_dependencies_key())
+ _populate_one(resolver, id, &PackageID::build_dependencies_key);
+ if (id->run_dependencies_key())
+ _populate_one(resolver, id, &PackageID::run_dependencies_key);
+ if (id->post_dependencies_key())
+ _populate_one(resolver, id, &PackageID::post_dependencies_key);
+ if (id->suggested_dependencies_key())
+ _populate_one(resolver, id, &PackageID::suggested_dependencies_key);
+ }
}
void