~ubuntu-branches/ubuntu/maverick/aptitude/maverick

« back to all changes in this revision

Viewing changes to src/generic/problemresolver/dummy_universe.h

  • Committer: Steve Langasek
  • Date: 2010-07-08 00:11:10 UTC
  • mfrom: (1.1.17 sid)
  • Revision ID: steve.langasek@canonical.com-20100708001110-ycbfg1j1wc95ucxe
mergeĀ versionĀ 0.6.2.1-2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
// dummy_universe.h                               -*-c++-*-
2
2
//
3
 
//   Copyright (C) 2005, 2007, 2009 Daniel Burrows
 
3
//   Copyright (C) 2005, 2007, 2009-2010 Daniel Burrows
4
4
//
5
5
//   This program is free software; you can redistribute it and/or
6
6
//   modify it under the terms of the GNU General Public License as
507
507
    bool solved_by(const version &other) const;
508
508
  };
509
509
 
510
 
  class tier
511
 
  {
512
 
    std::vector<int> values;
513
 
 
514
 
  public:
515
 
    tier()
516
 
    {
517
 
    }
518
 
 
519
 
    template<typename iter>
520
 
    tier(iter begin, iter end)
521
 
      : values(begin, end)
522
 
    {
523
 
    }
524
 
 
525
 
    explicit tier(int first)
526
 
      : values(1, first)
527
 
    {
528
 
    }
529
 
 
530
 
    std::size_t get_hash_value() const
531
 
    {
532
 
      boost::hash<std::vector<int> > hasher;
533
 
      return hasher(values);
534
 
    }
535
 
 
536
 
    typedef std::vector<int>::const_iterator const_iterator;
537
 
 
538
 
    const_iterator begin() const { return values.begin(); }
539
 
    const_iterator end() const { return values.end(); }
540
 
 
541
 
    bool operator<(const tier &other) const
542
 
    {
543
 
      return values < other.values;
544
 
    }
545
 
 
546
 
    bool operator>=(const tier &other) const
547
 
    {
548
 
      return values >= other.values;
549
 
    }
550
 
 
551
 
    bool operator==(const tier &other) const
552
 
    {
553
 
      return values == other.values;
554
 
    }
555
 
 
556
 
    bool operator!=(const tier &other) const
557
 
    {
558
 
      return values != other.values;
559
 
    }
560
 
 
561
 
    tier &operator=(const tier &other)
562
 
    {
563
 
      values = other.values;
564
 
      return *this;
565
 
    }
566
 
  };
567
 
 
568
510
  typedef wrap_ptr_iter<dummy_package, package> package_iterator;
569
511
  typedef wrap_ptr_iter<dummy_dep, dep> dep_iterator;
570
512
 
735
677
  return d.get_hash_value();
736
678
}
737
679
 
738
 
inline std::size_t hash_value(const dummy_universe::tier &t)
739
 
{
740
 
  return t.get_hash_value();
741
 
}
742
 
 
743
680
// A refcounting wrapper for a dummy_universe; used to sanitize memory
744
681
// management without copying all over (and because the resolver
745
682
// expects to be able to have a full copy of its argument type)
765
702
  typedef dummy_universe::package package;
766
703
  typedef dummy_universe::version version;
767
704
  typedef dummy_universe::dep dep;
768
 
  typedef dummy_universe::tier tier;
769
705
  typedef dummy_universe::package_iterator package_iterator;
770
706
  typedef dummy_universe::dep_iterator dep_iterator;
771
707
  typedef dummy_universe::broken_dep_iterator broken_dep_iterator;
877
813
 
878
814
std::ostream &operator<<(std::ostream &out, const dummy_universe::dep &d);
879
815
 
880
 
std::ostream &operator<<(std::ostream &out, const dummy_universe::tier &tier);
881
 
 
882
816
class ParseError : public cwidget::util::Exception
883
817
{
884
818
  std::string msg;