From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 107737 invoked by alias); 31 May 2017 10:53:26 -0000 Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com Received: (qmail 107448 invoked by uid 89); 31 May 2017 10:53:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-23.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy=visit X-HELO: rgout04.bt.lon5.cpcloud.co.uk Received: from rgout0403.bt.lon5.cpcloud.co.uk (HELO rgout04.bt.lon5.cpcloud.co.uk) (65.20.0.216) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 31 May 2017 10:53:19 +0000 X-OWM-Source-IP: 86.141.128.130 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-Junkmail-Premium-Raw: score=8/50,refid=2.7.2:2017.5.13.91815:17:8.707,ip=,rules=NO_URI_FOUND, NO_CTA_URI_FOUND, NO_MESSAGE_ID, NO_URI_HTTPS, TO_MALFORMED Received: from localhost.localdomain (86.141.128.130) by rgout04.bt.lon5.cpcloud.co.uk (9.0.019.13-1) (authenticated as jonturney@btinternet.com) id 58482DA21281A30B; Wed, 31 May 2017 11:53:21 +0100 From: Jon Turney To: cygwin-apps@cygwin.com Cc: Jon Turney Subject: [PATCH setup 01/14] Opaque how PackageDepends is stored Date: Wed, 31 May 2017 10:53:00 -0000 Message-Id: <20170531105015.162228-2-jon.turney@dronecode.org.uk> In-Reply-To: <20170531105015.162228-1-jon.turney@dronecode.org.uk> References: <20170531105015.162228-1-jon.turney@dronecode.org.uk> X-SW-Source: 2017-05/txt/msg00162.txt.bz2 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::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 ::const_iterator dp = pkgm.installed.depends()->begin(); - while (dp != pkgm.installed.depends()->end()) + const PackageDepends deps = pkgm.installed.depends(); + std::vector ::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 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 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