We want to be more opaque about how the PackageDepends for a packageversion is stored, so rather than exposing a pointer to a PackageDepends object inside class packageversion, access it by value.
This also makes us be more explicit about set/get of package depends() Fix some iterations to deal with depends() returning a value rather than a pointer. Also adjust dumpPackageDepends() appropriately Also remove useless debug showing the dependency list before we build it. --- IniDBBuilderPackage.cc | 30 ++++++++++++------------------ IniDBBuilderPackage.h | 2 +- package_db.cc | 10 ++++++---- package_depends.cc | 19 ++++++++----------- package_depends.h | 2 +- package_meta.cc | 11 ++++------- package_version.cc | 10 +++++----- package_version.h | 5 ++--- prereq.cc | 4 ++-- 9 files changed, 41 insertions(+), 52 deletions(-) diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc index ad1cc88..0e1be78 100644 --- a/IniDBBuilderPackage.cc +++ b/IniDBBuilderPackage.cc @@ -34,7 +34,7 @@ using namespace std; IniDBBuilderPackage::IniDBBuilderPackage (IniParseFeedback const &aFeedback) : -cp (0), cbpv (), cspv (), currentSpec (0), currentNodeList (0), trust (0), _feedback (aFeedback){} +cp (0), cbpv (), cspv (), currentSpec (0), trust (0), _feedback (aFeedback){} IniDBBuilderPackage::~IniDBBuilderPackage() { @@ -92,7 +92,7 @@ IniDBBuilderPackage::buildPackage (const std::string& name) cbpv = cygpackage::createInstance (name, package_binary); cspv = packageversion (); currentSpec = NULL; - currentNodeList = NULL; + currentNodeList = PackageDepends(); trust = TRUST_CURR; #if DEBUG Log (LOG_BABBLE) << "Created package " << name << endLog; @@ -231,12 +231,10 @@ void IniDBBuilderPackage::buildBeginDepends () { #if DEBUG - Log (LOG_BABBLE) << "Beginning of a depends statement for " << cp->name - << endLog; - dumpPackageDepends (currentNodeList, Log (LOG_BABBLE)); + Log (LOG_BABBLE) << "Beginning of a depends statement " << endLog; #endif currentSpec = NULL; - currentNodeList = cbpv.depends(); + currentNodeList = PackageDepends(); } void @@ -246,7 +244,7 @@ IniDBBuilderPackage::buildBeginBuildDepends () Log (LOG_BABBLE) << "Beginning of a Build-Depends statement" << endLog; #endif currentSpec = NULL; - currentNodeList = NULL; /* there is currently nowhere to store Build-Depends information */ + currentNodeList = PackageDepends(); /* there is currently nowhere to store Build-Depends information */ } void @@ -287,14 +285,11 @@ IniDBBuilderPackage::buildSourceNameVersion (const std::string& version) void IniDBBuilderPackage::buildPackageListNode (const std::string & name) { - if (currentNodeList) - { #if DEBUG - Log (LOG_BABBLE) << "New node '" << name << "' for package list" << endLog; + Log (LOG_BABBLE) << "New node '" << name << "' for package list" << endLog; #endif - currentSpec = new PackageSpecification (name); - currentNodeList->push_back (currentSpec); - } + currentSpec = new PackageSpecification (name); + currentNodeList.push_back (currentSpec); } void @@ -337,8 +332,7 @@ IniDBBuilderPackage::buildPackageListOperatorVersion (const std::string& aVersio void IniDBBuilderPackage::add_correct_version() { - if (currentNodeList) - *cbpv.depends() = *currentNodeList; + cbpv.setDepends(currentNodeList); int merged = 0; for (set<packageversion>::iterator n = cp->versions.begin(); @@ -362,11 +356,11 @@ IniDBBuilderPackage::add_correct_version() ver.set_sdesc (cbpv.SDesc ()); if (cbpv.LDesc ().size() && !n->LDesc ().size()) ver.set_ldesc (cbpv.LDesc ()); - if (cbpv.depends()->size() && !ver.depends ()->size()) - *ver.depends() = *cbpv.depends(); + if (cbpv.depends().size() && !ver.depends().size()) + ver.setDepends(cbpv.depends()); /* TODO: other package lists */ /* Prevent dangling references */ - currentNodeList = NULL; + currentNodeList = PackageDepends(); currentSpec = NULL; cbpv = *n; merged = 1; diff --git a/IniDBBuilderPackage.h b/IniDBBuilderPackage.h index 766a5ef..dee65d4 100644 --- a/IniDBBuilderPackage.h +++ b/IniDBBuilderPackage.h @@ -79,7 +79,7 @@ private: packagemeta *csp; packageversion cspv; PackageSpecification *currentSpec; - PackageDepends *currentNodeList; + PackageDepends currentNodeList; int trust; IniParseFeedback const &_feedback; }; diff --git a/package_db.cc b/package_db.cc index dbec17e..00395d3 100644 --- a/package_db.cc +++ b/package_db.cc @@ -312,8 +312,9 @@ ConnectedLoopFinder::visit(packagemeta *nodeToVisit) nodesInStronglyConnectedComponent.push(nodeToVisit); /* walk through each node */ - PackageDepends::const_iterator dp = nodeToVisit->installed.depends()->begin(); - while (dp != nodeToVisit->installed.depends()->end()) + const PackageDepends deps = nodeToVisit->installed.depends(); + PackageDepends::const_iterator dp = deps.begin(); + while (dp != deps.end()) { /* check for an installed match */ if (checkForInstalled (*dp)) @@ -489,8 +490,9 @@ packagedb::guessUserPicked() continue; /* walk through each node */ - std::vector <PackageSpecification *>::const_iterator dp = pkgm.installed.depends()->begin(); - while (dp != pkgm.installed.depends()->end()) + const PackageDepends deps = pkgm.installed.depends(); + std::vector <PackageSpecification *>::const_iterator dp = deps.begin(); + while (dp != deps.end()) { /* check for an installed match */ if (checkForInstalled(*dp)) diff --git a/package_depends.cc b/package_depends.cc index e288c0b..a03f5a0 100644 --- a/package_depends.cc +++ b/package_depends.cc @@ -15,19 +15,16 @@ #include <LogSingleton.h> void -dumpPackageDepends (PackageDepends const *currentList, +dumpPackageDepends (PackageDepends const ¤tList, std::ostream &logger) { - if (currentList) + Log (LOG_BABBLE) << "( "; + PackageDepends::const_iterator i = currentList.begin(); + while (true) { - Log (LOG_BABBLE) << "( "; - PackageDepends::const_iterator i = currentList->begin(); - while (true) - { - if (i == currentList->end()) break; - Log (LOG_BABBLE) << **i << " "; - ++i; - } - Log (LOG_BABBLE) << ")"; + if (i == currentList.end()) break; + Log (LOG_BABBLE) << **i << " "; + ++i; } + Log (LOG_BABBLE) << ")"; } diff --git a/package_depends.h b/package_depends.h index af3fa01..36f7f6f 100644 --- a/package_depends.h +++ b/package_depends.h @@ -19,6 +19,6 @@ typedef std::vector <PackageSpecification *> PackageDepends; -void dumpPackageDepends (PackageDepends const *currentList, std::ostream &); +void dumpPackageDepends (PackageDepends const ¤tList, std::ostream &); #endif // PACKAGE_DEPENDS_H diff --git a/package_meta.cc b/package_meta.cc index b35b554..1f548e2 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -560,13 +560,10 @@ packagemeta::logAllVersions () const { Log (LOG_BABBLE) << " [" << trustLabel(*i) << "] ver=" << i->Canonical_version() << endLog; - if (i->depends()->size()) - { - std::ostream & logger = Log (LOG_BABBLE); - logger << " depends="; - dumpPackageDepends(i->depends(), logger); - logger << endLog; - } + std::ostream & logger = Log (LOG_BABBLE); + logger << " depends="; + dumpPackageDepends(i->depends(), logger); + logger << endLog; } #if 0 Log (LOG_BABBLE) << " inst=" << i-> diff --git a/package_version.cc b/package_version.cc index f022e70..7005850 100644 --- a/package_version.cc +++ b/package_version.cc @@ -229,16 +229,16 @@ packageversion::setSourcePackageSpecification (PackageSpecification const &spec) data->setSourcePackageSpecification(spec); } -PackageDepends * -packageversion::depends() +void +packageversion::setDepends(const PackageDepends _depends) { - return &data->depends; + data->depends = _depends; } -const PackageDepends * +const PackageDepends packageversion::depends() const { - return &data->depends; + return data->depends; } bool diff --git a/package_version.h b/package_version.h index d70eda0..c26593a 100644 --- a/package_version.h +++ b/package_version.h @@ -110,9 +110,8 @@ public: PackageSpecification & sourcePackageSpecification () const; void setSourcePackageSpecification (PackageSpecification const &); - /* invariant: these never return NULL */ - PackageDepends *depends(); - const PackageDepends *depends() const; + void setDepends(const PackageDepends); + const PackageDepends depends() const; bool picked() const; /* true if this version is to be installed */ void pick(bool, packagemeta *); /* trigger an install/reinsall */ diff --git a/prereq.cc b/prereq.cc index eb8e21f..0e7fdf5 100644 --- a/prereq.cc +++ b/prereq.cc @@ -211,11 +211,11 @@ PrereqChecker::isMet () // Fetch the dependencies of the package. This assumes that the // dependencies of all versions are all the same. - const PackageDepends *deps = pack->curr.depends (); + const PackageDepends deps = pack->curr.depends (); // go through the package's dependencies for (PackageDepends::const_iterator d = - deps->begin (); d != deps->end (); ++d) + deps.begin (); d != deps.end (); ++d) { PackageSpecification *dep_spec = *d; packagemeta *dep = db.findBinary (*dep_spec); -- 2.12.3