[Aptitude-svn-commit] r3984 - in branches/aptitude-0.3/aptitude: . src src/cmdline src/generic src/generic/problemresolver tests

Daniel Burrows dburrows at costa.debian.org
Mon Aug 29 22:57:34 UTC 2005


Author: dburrows
Date: Mon Aug 29 22:57:29 2005
New Revision: 3984

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/broken_indicator.cc
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc
   branches/aptitude-0.3/aptitude/src/generic/aptcache.cc
   branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h
   branches/aptitude-0.3/aptitude/src/generic/problemresolver/solution.h
   branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc
   branches/aptitude-0.3/aptitude/src/solution_fragment.cc
   branches/aptitude-0.3/aptitude/src/solution_screen.cc
   branches/aptitude-0.3/aptitude/tests/test_resolver.cc
Log:
Use imm::* instead of std::*.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Mon Aug 29 22:57:29 2005
@@ -1,5 +1,11 @@
 2005-08-29  Daniel Burrows  <dburrows at debian.org>
 
+	* src/broken_indicator.cc, src/cmdline/cmdline_resolver.cc, src/generic/aptcache.cc, src/generic/problemresolver/problemresolver.h, src/generic/problemresolver/solution.h, src/generic/problemresolver/test.cc, src/solution_fragment.cc, src/solution_screen.cc, tests/test_resolver.cc:
+
+	  Use the new imm::* containers instead of std::*.  This makes
+	  everything much slower...but on the upside, aptitude no longer
+	  eats all my memory before giving up on a search.
+
 	* src/generic/immset.h, tests/test_wtree.cc:
 
 	  Add a 'node' member type to imm::map, and write comparison and

Modified: branches/aptitude-0.3/aptitude/src/broken_indicator.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/broken_indicator.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/broken_indicator.cc	Mon Aug 29 22:57:29 2005
@@ -128,8 +128,8 @@
 
 	int install_count=0, remove_count=0, keep_count=0, upgrade_count=0, downgrade_count=0;
 
-	for(std::map<aptitude_universe::package, aptitude_solution::action>::const_iterator i
-	      = sol.get_actions().begin();
+	for(imm::map<aptitude_universe::package, aptitude_solution::action>::const_iterator
+	      i = sol.get_actions().begin();
 	    i != sol.get_actions().end(); ++i)
 	  {
 	    pkgCache::PkgIterator pkg=i->first.get_pkg();

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc	Mon Aug 29 22:57:29 2005
@@ -54,8 +54,8 @@
 static fragment *solution_story(const aptitude_solution &s)
 {
   std::vector<aptitude_solution::action> actions;
-  for(map<aptitude_universe::package, aptitude_solution::action>::const_iterator i
-	= s.get_actions().begin(); i != s.get_actions().end(); ++i)
+  for(imm::map<aptitude_universe::package, aptitude_solution::action>::const_iterator
+	i = s.get_actions().begin(); i != s.get_actions().end(); ++i)
     actions.push_back(i->second);
   sort(actions.begin(), actions.end(), aptitude_solution::action_id_compare());
 

Modified: branches/aptitude-0.3/aptitude/src/generic/aptcache.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptcache.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptcache.cc	Mon Aug 29 22:57:29 2005
@@ -1547,9 +1547,9 @@
 
   begin_action_group();
 
-  for(map<aptitude_resolver::package,
-	aptitude_resolver::action>::const_iterator i=sol.get_actions().begin();
-      i!=sol.get_actions().end(); ++i)
+  for(imm::map<aptitude_resolver::package, aptitude_resolver::action>::const_iterator
+	i = sol.get_actions().begin();
+      i != sol.get_actions().end(); ++i)
     {
       pkgCache::PkgIterator pkg=i->first.get_pkg();
       pkgCache::VerIterator curver=pkg.CurrentVer();

Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h	Mon Aug 29 22:57:29 2005
@@ -211,9 +211,9 @@
       else if(s2.get_action_score() < s1.get_action_score())
 	return false;
 
-      const std::map<package,action>
+      const imm::map<package,action>
 	&a1=s1.get_actions(), &a2=s2.get_actions();
-      const std::set<dep>
+      const imm::set<dep>
 	&us1=s1.get_unresolved_soft_deps(), &us2=s2.get_unresolved_soft_deps();
 
 
@@ -304,12 +304,12 @@
   /** Stores conflicts: sets of installations that have been
    *  determined to be mutually incompatible.
    */
-  std::set<std::map<package, action> > conflicts;
+  std::set<imm::map<package, action> > conflicts;
 
   /** The initial set of broken dependencies.  Kept here for use in
    *  the stupid-elimination algorithm.
    */
-  std::set<dep> initial_broken;
+  imm::set<dep> initial_broken;
 
   /** Stores versions that have been rejected by the user; distinct
    *  from the per-solution reject sets that track changes on a single
@@ -332,7 +332,7 @@
 
   typedef std::set<std::pair<version, version> > stupid_table;
 
-  std::ostream &dump_conflict(std::ostream &out, const std::map<package, action> &conflict) const;
+  std::ostream &dump_conflict(std::ostream &out, const imm::map<package, action> &conflict) const;
   std::ostream &dump_conflict(std::ostream &out, const action &act) const;
 
 
@@ -358,11 +358,11 @@
   /** \return \b true if each element of pc2 is matched by an element
    *  in pc1.
    */
-  static bool conflict_matches(const typename std::map<package, action> &c,
-			       const typename std::map<package, action> &acts)
+  static bool conflict_matches(const typename imm::map<package, action> &c,
+			       const typename imm::map<package, action> &acts)
   {
-    typename std::map<package, action>::const_iterator ci = c.begin();
-    typename std::map<package, action>::const_iterator ai = acts.begin();
+    typename imm::map<package, action>::const_iterator ci = c.begin();
+    typename imm::map<package, action>::const_iterator ai = acts.begin();
 
     while(ci != c.end() &&
 	  ai != acts.end())
@@ -389,10 +389,10 @@
    *  \return a conflict matched by m, or conflicts.end() if no such
    *  conflict exists.
    */
-  typename std::set<std::map<package, action> >::const_iterator
-  matches_any_conflict(const std::map<package, action> &m) const
+  typename std::set<imm::map<package, action> >::const_iterator
+  matches_any_conflict(const imm::map<package, action> &m) const
   {
-    for(typename std::set<std::map<package, action> >::const_iterator ci = conflicts.begin();
+    for(typename std::set<imm::map<package, action> >::const_iterator ci = conflicts.begin();
 	ci != conflicts.end(); ++ci)
 	if(conflict_matches(*ci, m))
 	  return ci;
@@ -403,7 +403,7 @@
   /** Test whether the given solution contains a conflict. */
   bool contains_conflict(const solution &s) const
   {
-    typename std::set<std::map<package, action> >::const_iterator
+    typename std::set<imm::map<package, action> >::const_iterator
       found = matches_any_conflict(s.get_actions());
     bool rval = (found != conflicts.end());
 
@@ -424,9 +424,9 @@
    *  redundant and will be dropped), then tests whether any existing
    *  conflicts will be made redundant by this conflict.
    */
-  void add_conflict(const std::map<package, action> &conflict)
+  void add_conflict(const imm::map<package, action> &conflict)
   {
-    typename std::set<std::map<package, action> >::const_iterator
+    typename std::set<imm::map<package, action> >::const_iterator
       found = matches_any_conflict(conflict);
 
     if(found != conflicts.end())
@@ -442,7 +442,7 @@
       }
     else
       {
-	for(typename std::set<std::map<package, action> >::const_iterator ci = conflicts.begin(), cj;
+	for(typename std::set<imm::map<package, action> >::const_iterator ci = conflicts.begin(), cj;
 	    ci != conflicts.end(); ci = cj)
 	  {
 	    cj = ci;
@@ -1184,22 +1184,10 @@
    */
   bool contains_rejected(const solution &s) const
   {
-    typename std::set<version>::const_iterator ur_iter
-      = user_rejected.begin();
-
-    typename std::map<package, action>::const_iterator sa_iter
-      = s.get_actions().begin();
-
-    while(ur_iter  != user_rejected.end() &&
-	  sa_iter  != s.get_actions().end())
-      {
-	if(*ur_iter == sa_iter->second.ver)
-	  return true;
-	else if(*ur_iter < sa_iter->second.ver)
-	  ++ur_iter;
-	else
-	  ++sa_iter;
-      }
+    for(typename std::set<version>::const_iterator ur_iter
+	  = user_rejected.begin(); ur != user_rejected.end(); ++ur)
+      if(version_of(ur->get_package()) == *ur)
+	return true;
 
     return false;
   }
@@ -1209,7 +1197,10 @@
     typename std::set<dep>::const_iterator uh_iter
       = user_hardened.begin();
 
-    typename std::set<dep>::const_iterator su_iter
+    if(uh_iter == user_hardened.end())
+      return false;
+
+    typename imm::set<dep>::const_iterator su_iter
       = s.get_unresolved_soft_deps().begin();
 
     while(uh_iter != user_hardened.end() &&
@@ -1246,7 +1237,7 @@
 
 	// Check (very slowly) whether we made a decision where we had
 	// the opportunity to use this version (and of course didn't).
-	for(typename std::map<package, action>::const_iterator si = s.get_actions().begin();
+	for(typename imm::map<package, action>::const_iterator si = s.get_actions().begin();
 	    si != s.get_actions().end(); ++si)
 	  if(si->second.d.solved_by(*ai))
 	    {
@@ -1440,20 +1431,22 @@
       {
 	assert(v != cur);
 
-	typename std::map<version, dep>::const_iterator found
-	  = s.get_forbidden_versions().find(v);
+	typename imm::map<version, dep>::node found
+	  = s.get_forbidden_versions().lookup(v);
 
-	if(found == s.get_forbidden_versions().end())
+	if(!found.isValid())
 	  return true;
 	else
 	  {
+	    const dep &found_d = found.getVal().second;
+
 	    if(debug)
 	      std::cout << "Discarding " << p.get_name() << " "
 			<< v.get_name() << ": forbidden by the resolution of "
-			<< found->second << std::endl;
+			<< found_d << std::endl;
 
-	    out_act.ver = s.version_of(found->second.get_source().get_package());
-	    out_act.d   = found->second;
+	    out_act.ver = s.version_of(found_d.get_source().get_package());
+	    out_act.d   = found_d;
 	    out_act.from_dep_source = true;
 
 	    return false;
@@ -1465,29 +1458,31 @@
    *  Handles the case in which the conflictor subsumes an existing
    *  element of the set.
    */
-  void insert_conflictor(std::map<package, action> &conflict,
+  void insert_conflictor(imm::map<package, action> &conflict,
 			 const action &act) const
   {
     package p = act.ver.get_package();
-    typename std::map<package, action>::const_iterator found
-      = conflict.find(p);
+    typename imm::map<package, action>::node found
+      = conflict.lookup(p);
 
-    if(found == conflict.end())
-      conflict[p]=act;
+    if(!found.isValid())
+      conflict.put(p, act);
     else
       {
+	const action &found_act = found.getVal().second;
+
 	action a2 = act;
 
-	assert(found->second.ver == act.ver);
+	assert(found_act.ver == act.ver);
 	if(a2.from_dep_source)
 	  {
-	    if(found->second.from_dep_source)
-	      assert(a2.d == found->second.d);
+	    if(found_act.from_dep_source)
+	      assert(a2.d == found_act.d);
 
 	    else
 	      a2.from_dep_source = false;
 	  }
-	conflict[p] = a2;
+	conflict.put(p, a2);
       }
   }
 
@@ -1569,7 +1564,7 @@
 				 const dep &d,
 				 const version &v,
 				 bool from_dep_source,
-				 std::map<package, action> &conflict,
+				 imm::map<package, action> &conflict,
 				 const SolutionGenerator &generator) const
   {
     action conflictor;
@@ -1598,10 +1593,10 @@
 	// several rather expensive steps in the successor routine
 	// (most notably the formation of the new broken packages
 	// set).
-	std::map<package, action> new_acts = s.get_actions();
-	new_acts[v.get_package()] = act;
+	imm::map<package, action> new_acts = s.get_actions();
+	new_acts.put(v.get_package(), act);
 
-	typename std::set<std::map<package, action> >::const_iterator
+	typename std::set<imm::map<package, action> >::const_iterator
 	  found = matches_any_conflict(new_acts);
 
 	if(found == conflicts.end())
@@ -1618,7 +1613,7 @@
 		std::cout << std::endl;
 	      }
 
-	    for(typename std::map<package, action>::const_iterator ci
+	    for(typename imm::map<package, action>::const_iterator ci
 		  = found->begin(); ci != found->end(); ++ci)
 	      {
 		// Discard the version that we were trying to install,
@@ -1646,15 +1641,15 @@
   template<typename SolutionGenerator>
   void generate_successors(const solution &s,
 			   const dep &d,
-			   std::map<package, action> &conflict,
+			   imm::map<package, action> &conflict,
 			   const SolutionGenerator &generator) const
   {
     version source = d.get_source();
-    typename std::map<package, action>::const_iterator
-      source_found = s.get_actions().find(source.get_package());
+    typename imm::map<package, action>::node
+      source_found = s.get_actions().lookup(source.get_package());
 
     // Try moving the source, if it is legal to do so
-    if(source_found != s.get_actions().end())
+    if(source_found.isValid())
       insert_conflictor(conflict, action(source, d, false, -1));
     else
       {
@@ -1708,7 +1703,7 @@
 	// iterating over.
 	solution starting_solution = curr;
 
-	for(typename std::set<dep>::const_iterator bi=starting_solution.get_broken().begin();
+	for(typename imm::set<dep>::const_iterator bi=starting_solution.get_broken().begin();
 	    bi!=starting_solution.get_broken().end(); ++bi)
 	  
 	  {
@@ -1742,7 +1737,7 @@
 		abort();
 	      }
 
-	    std::map<package, action> conflict;
+	    imm::map<package, action> conflict;
 
 
 	    int num_successors = 0;
@@ -1791,14 +1786,14 @@
 
     // First try to enqueue stuff related to a dependency that the
     // user constrained; then just go for a free-for-all.
-    for(typename std::set<dep>::const_iterator bi=curr.get_broken().begin();
+    for(typename imm::set<dep>::const_iterator bi=curr.get_broken().begin();
 	bi!=curr.get_broken().end() && (nsols == 0 ||
 					nsols < max_successors); ++bi)
 
       if(impinges_user_constraint(*bi))
 	{
 	  // Is it possible to take this out somehow?
-	  std::map<package, action> conflict;
+	  imm::map<package, action> conflict;
 
 	  if(debug)
 	    std::cout << "Generating successors for " << *bi
@@ -1810,12 +1805,12 @@
 	  nsols += v.size();
 	}
 
-    for(typename std::set<dep>::const_iterator bi=curr.get_broken().begin();
+    for(typename imm::set<dep>::const_iterator bi=curr.get_broken().begin();
 	bi!=curr.get_broken().end() && (nsols == 0 ||
 					nsols < max_successors); ++bi)
       {
 	// Is it possible to take this out somehow?
-	std::map<package, action> conflict;
+	imm::map<package, action> conflict;
 
 	if(debug)
 	  std::cout << "Generating successors for " << *bi
@@ -2256,11 +2251,11 @@
 }
 
 template<class PackageUniverse>
-std::ostream &generic_problem_resolver<PackageUniverse>::dump_conflict(std::ostream &out, const typename std::map<typename PackageUniverse::package, typename generic_solution<PackageUniverse>::action> &act) const
+std::ostream &generic_problem_resolver<PackageUniverse>::dump_conflict(std::ostream &out, const typename imm::map<typename PackageUniverse::package, typename generic_solution<PackageUniverse>::action> &act) const
 {
   out << "(";
 
-  for(typename std::map<typename PackageUniverse::package, typename generic_solution<PackageUniverse>::action>::const_iterator ci
+  for(typename imm::map<typename PackageUniverse::package, typename generic_solution<PackageUniverse>::action>::const_iterator ci
 	= act.begin(); ci != act.end(); ++ci)
     {
       if(ci != act.begin())

Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/solution.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/solution.h	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/solution.h	Mon Aug 29 22:57:29 2005
@@ -23,8 +23,7 @@
 #define SOLUTION_H
 
 #include <iostream>
-#include <map>
-#include <set>
+#include <src/generic/immset.h>
 
 /** Represents the current score weights for a resolver.  Used to
  *  calculate scores at the time a solution is instantiated.
@@ -152,13 +151,13 @@
      *  can be added in later one way or another, though.  (eg,
      *  storing the DAG structure after all?)
      */
-    std::map<package, action> actions;
+    imm::map<package, action> actions;
 
     /** The full list of currently broken dependencies. */
-    std::set<dep> broken_deps;
+    imm::set<dep> broken_deps;
 
     /** The set of soft dependencies being left unresolved. */
-    std::set<dep> unresolved_soft_deps;
+    imm::set<dep> unresolved_soft_deps;
 
     /** A set of versions that have been "locked out" by this
      *	solution.  Primarily used to optimize the common case of
@@ -166,7 +165,7 @@
      *	dependency chain.  (this allows us to easily force the search
      *	in the direction it has to go)
      */
-    std::map<version, dep> forbidden_versions;
+    imm::map<version, dep> forbidden_versions;
 
     /** The score of this solution. */
     int score;
@@ -185,10 +184,10 @@
     void decref() const {assert(refcount>0); if(--refcount==0) delete this;}
 
     /** Construct a new solution_rep directly. */
-    solution_rep(const std::map<package, action> &_actions,
-		 const std::set<dep> &_broken_deps,
-		 const std::set<dep> &_unresolved_soft_deps,
-		 const std::map<version, dep> &_forbidden_versions,
+    solution_rep(const imm::map<package, action> &_actions,
+		 const imm::set<dep> &_broken_deps,
+		 const imm::set<dep> &_unresolved_soft_deps,
+		 const imm::map<version, dep> &_forbidden_versions,
 		 int _score,
 		 int _action_score)
       : actions(_actions),
@@ -201,22 +200,22 @@
     {
     }
 
-    const std::set<dep> &get_broken_deps() const
+    const imm::set<dep> &get_broken_deps() const
     {
       return broken_deps;
     }
 
-    const std::set<dep> &get_unresolved_soft_deps() const
+    const imm::set<dep> &get_unresolved_soft_deps() const
     {
       return unresolved_soft_deps;
     }
 
-    const std::map<package, action> &get_actions() const
+    const imm::map<package, action> &get_actions() const
     {
       return actions;
     }
 
-    const std::map<version, dep> &get_forbidden_versions() const
+    const imm::map<version, dep> &get_forbidden_versions() const
     {
       return forbidden_versions;
     }
@@ -226,11 +225,12 @@
 
     version version_of(const package &pkg) const
     {
-      typename std::map<package, action>::const_iterator found=actions.find(pkg);
-      if(found == actions.end())
+      typename imm::map<package, action>::node found
+	= actions.lookup(pkg);
+      if(!found.isValid())
 	return pkg.current_version();
       else
-	return found->second.ver;
+	return found.getVal().second.ver;
     }
 
     /** \return true iff this solution touches the given package. */
@@ -256,20 +256,20 @@
    */
   struct solution_map_wrapper
   {
-    const std::map<package, action> &actions;
+    const imm::map<package, action> &actions;
   public:
-    solution_map_wrapper(const std::map<package, action> &_actions)
+    solution_map_wrapper(const imm::map<package, action> &_actions)
       :actions(_actions)
     {
     }
 
     version version_of(const package &p) const
     {
-      typename std::map<package, action>::const_iterator found
-	= actions.find(p);
+      typename imm::map<package, action>::node found
+	= actions.lookup(p);
 
-      if(found != actions.end())
-	return found->second.ver;
+      if(found.isValid())
+	return found.getVal().second.ver;
       else
 	return p.current_version();
     }
@@ -286,16 +286,16 @@
   }
 
   /** Generate the root node for a search in the given universe. */
-  static generic_solution root_node(const std::set<dep> &initial_broken,
+  static generic_solution root_node(const imm::set<dep> &initial_broken,
 				    const PackageUniverse &universe,
 				    const solution_weights &weights)
   {
     int score = initial_broken.size() * weights.broken_score;
 
-    return generic_solution(new solution_rep(std::map<package, action>(),
+    return generic_solution(new solution_rep(imm::map<package, action>(),
 					     initial_broken,
-					     std::set<dep>(),
-					     std::map<version, dep>(),
+					     imm::set<dep>(),
+					     imm::map<version, dep>(),
 					     score,
 					     0));
   }
@@ -316,19 +316,19 @@
   {
     // NB: as I fully expect to move to a scheme of shared-memory
     // sets/maps, the implicit copies here will go away eventually.
-    std::set<dep> broken_deps = s.get_broken();
-    std::map<package, action> actions = s.get_actions();
-    std::map<version, dep> forbidden_versions = s.get_forbidden_versions();
-    std::set<dep> unresolved_soft_deps = s.get_unresolved_soft_deps();
+    imm::set<dep> broken_deps = s.get_broken();
+    imm::map<package, action> actions = s.get_actions();
+    imm::map<version, dep> forbidden_versions = s.get_forbidden_versions();
+    imm::set<dep> unresolved_soft_deps = s.get_unresolved_soft_deps();
     int action_score = s.get_action_score();
 
     for(a_iter ai = abegin; ai != aend; ++ai)
       {
 	const action &a = *ai;
-	assert(actions.find(a.ver.get_package()) == actions.end());
+	assert(!actions.domain_contains(a.ver.get_package()));
 	assert(a.ver != a.ver.get_package().current_version());
 
-	actions[a.ver.get_package()] = a;
+	actions.put(a.ver.get_package(), a);
 
 	action_score += weights.step_score;
 	action_score += weights.version_scores[a.ver.get_id()];
@@ -338,7 +338,7 @@
 	  {
 	    for(typename dep::solver_iterator si = a.d.solvers_begin();
 		!si.end(); ++si)
-	      forbidden_versions[*si] = a.d;
+	      forbidden_versions.put(*si, a.d);
 	  }
 
 
@@ -354,7 +354,7 @@
 	  {
 	    dep rd = *rdi;
 
-	    if(unresolved_soft_deps.find(rd) == unresolved_soft_deps.end() &&
+	    if(!unresolved_soft_deps.contains(rd) &&
 	       (rd).broken_under(tmpsol))
 	      broken_deps.insert(rd);
 	    else
@@ -371,7 +371,7 @@
 	  {
 	    dep rd = *rdi;
 
-	    if(unresolved_soft_deps.find(rd) == unresolved_soft_deps.end() &&
+	    if(!unresolved_soft_deps.contains(rd) &&
 	       (rd).broken_under(tmpsol))
 	      broken_deps.insert(rd);
 	    else
@@ -396,7 +396,7 @@
 	  {
 	    dep d = *di;
 
-	    if(unresolved_soft_deps.find(d) == unresolved_soft_deps.end() &&
+	    if(!unresolved_soft_deps.contains(d) &&
 	       (d).broken_under(tmpsol))
 	      broken_deps.insert(d);
 	  }
@@ -407,11 +407,8 @@
       {
 	const dep &d = *ui;
 
-	typename std::set<dep>::const_iterator found
-	  = broken_deps.find(d);
-
-	assert(found != broken_deps.end());
-	broken_deps.erase(found);
+	assert(broken_deps.contains(d));
+	broken_deps.erase(d);
 	unresolved_soft_deps.insert(d);
       }
 
@@ -496,22 +493,22 @@
    *  in this solution.  The list will live at least as long as
    *  the reference from which it was retrieved.
    */
-  const std::set<dep> &get_broken() const
+  const imm::set<dep> &get_broken() const
   {
     return real_soln->get_broken_deps();
   }
 
-  const std::set<dep> &get_unresolved_soft_deps() const
+  const imm::set<dep> &get_unresolved_soft_deps() const
   {
     return real_soln->get_unresolved_soft_deps();
   }
 
-  const std::map<package, action> &get_actions() const
+  const imm::map<package, action> &get_actions() const
   {
     return real_soln->get_actions();
   }
 
-  const std::map<version, dep> &get_forbidden_versions() const
+  const imm::map<version, dep> &get_forbidden_versions() const
   {
     return real_soln->get_forbidden_versions();
   }
@@ -546,7 +543,7 @@
   void dump(std::ostream &out) const
   {
     out << "<";
-    for(typename std::map<package, action>::const_iterator i=get_actions().begin();
+    for(typename imm::map<package, action>::const_iterator i=get_actions().begin();
 	i!=get_actions().end(); ++i)
       {
 	if(i!=get_actions().begin())
@@ -559,7 +556,7 @@
     if(!get_unresolved_soft_deps().empty())
       {
 	out << "<!";
-	for(typename std::set<dep>::const_iterator i
+	for(typename imm::set<dep>::const_iterator i
 	      = get_unresolved_soft_deps().begin();
 	    i != get_unresolved_soft_deps().end(); ++i)
 	  {
@@ -573,7 +570,7 @@
 
     out << "[";
 
-    for(typename std::set<dep>::const_iterator i=get_broken().begin();
+    for(typename imm::set<dep>::const_iterator i=get_broken().begin();
 	i!=get_broken().end(); ++i)
       {
 	if(i!=get_broken().begin())
@@ -586,7 +583,7 @@
     if(!get_forbidden_versions().empty())
       {
 	out << "!!";
-	for(typename std::map<version, dep>::const_iterator i=get_forbidden_versions().begin();
+	for(typename imm::map<version, dep>::const_iterator i=get_forbidden_versions().begin();
 	    i!=get_forbidden_versions().end(); ++i)
 	  {
 	    if(i!=get_forbidden_versions().begin())

Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc	Mon Aug 29 22:57:29 2005
@@ -314,8 +314,8 @@
 
 		      bool equal=true;
 
-		      map<dummy_universe::package, dummy_universe::version>::const_iterator expect_iter=expected.begin();
-		      map<dummy_universe::package, dummy_resolver::action>::const_iterator soln_iter=next_soln.get_actions().begin();
+		      std::map<dummy_universe::package, dummy_universe::version>::const_iterator expect_iter=expected.begin();
+		      imm::map<dummy_universe::package, dummy_resolver::action>::const_iterator soln_iter=next_soln.get_actions().begin();
 
 		      while(equal &&
 			    expect_iter != expected.end() &&

Modified: branches/aptitude-0.3/aptitude/src/solution_fragment.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/solution_fragment.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/solution_fragment.cc	Mon Aug 29 22:57:29 2005
@@ -175,7 +175,7 @@
   sort(upgrade_packages.begin(), upgrade_packages.end(),
        ver_name_lt());
 
-  for(std::map<aptitude_universe::package,
+  for(imm::map<aptitude_universe::package,
 	aptitude_solution::action>::const_iterator i=sol.get_actions().begin();
       i!=sol.get_actions().end(); ++i)
     {
@@ -289,13 +289,13 @@
       fragments.push_back(newline_fragment());
     }
 
-  const set<aptitude_universe::dep> &unresolved = sol.get_unresolved_soft_deps();
+  const imm::set<aptitude_universe::dep> &unresolved = sol.get_unresolved_soft_deps();
 
   if(!unresolved.empty())
     {
       fragments.push_back(fragf(_("Leave the following dependencies unresolved:%n")));
 
-      for(set<aptitude_universe::dep>::const_iterator i = unresolved.begin();
+      for(imm::set<aptitude_universe::dep>::const_iterator i = unresolved.begin();
 	  i != unresolved.end(); ++i)
 	fragments.push_back(fragf("%ls%n", dep_text((*i).get_dep()).c_str()));
     }

Modified: branches/aptitude-0.3/aptitude/src/solution_screen.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/solution_screen.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/solution_screen.cc	Mon Aug 29 22:57:29 2005
@@ -114,7 +114,7 @@
 		 vector<aptitude_solution::action> &upgrade_actions)
 {
 
-  for(std::map<aptitude_universe::package,
+  for(imm::map<aptitude_universe::package,
 	aptitude_solution::action>::const_iterator i=sol.get_actions().begin();
       i!=sol.get_actions().end(); ++i)
     switch(analyze_action(i->second.ver))
@@ -637,7 +637,7 @@
 {
   vector<aptitude_solution::action> actions;
 
-  for(map<aptitude_universe::package, aptitude_solution::action>::const_iterator
+  for(imm::map<aptitude_universe::package, aptitude_solution::action>::const_iterator
 	i = sol.get_actions().begin() ; i != sol.get_actions().end(); ++i)
     actions.push_back(i->second);
 
@@ -738,13 +738,13 @@
     }
 
   
-  const set<aptitude_universe::dep> &unresolved = sol.get_unresolved_soft_deps();
+  const imm::set<aptitude_universe::dep> &unresolved = sol.get_unresolved_soft_deps();
 
   if(!unresolved.empty())
     {
       vs_subtree_generic *unresolved_tree = new label_tree(transcode(_("Leave the following recommendations unresolved:")));
 
-      for(set<aptitude_universe::dep>::const_iterator i = unresolved.begin();
+      for(imm::set<aptitude_universe::dep>::const_iterator i = unresolved.begin();
 	  i != unresolved.end(); ++i)
 	unresolved_tree->add_child(new solution_unresolved_item(*i));
 

Modified: branches/aptitude-0.3/aptitude/tests/test_resolver.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/tests/test_resolver.cc	(original)
+++ branches/aptitude-0.3/aptitude/tests/test_resolver.cc	Mon Aug 29 22:57:29 2005
@@ -141,11 +141,11 @@
 				  a_iter abegin, a_iter aend,
 				  u_iter ubegin, u_iter uend)
   {
-    std::map<dummy_universe::package, dummy_solution::action> actions = parent.get_actions();
-    std::set<dummy_universe::dep> unresolved = parent.get_unresolved_soft_deps();
+    imm::map<dummy_universe::package, dummy_solution::action> actions = parent.get_actions();
+    imm::set<dummy_universe::dep> unresolved = parent.get_unresolved_soft_deps();
 
     for(a_iter ai = abegin; ai != aend; ++ai)
-      actions[(*ai).ver.get_package()] = *ai;
+      actions.put((*ai).ver.get_package(), *ai);
 
     for(u_iter ui = ubegin; ui != uend; ++ui)
       unresolved.insert(*ui);
@@ -173,7 +173,7 @@
 
     solution_weights weights(0, 0, 0, 0, u.get_version_count());
 
-    std::set<dummy_universe::dep> u_broken;
+    imm::set<dummy_universe::dep> u_broken;
     for(dummy_universe::broken_dep_iterator bi = u.broken_begin();
 	!bi.end(); ++bi)
       u_broken.insert(*bi);



More information about the Aptitude-svn-commit mailing list