18 #ifndef CUPT_CACHE_PACKAGE_SEEN
19 #define CUPT_CACHE_PACKAGE_SEEN
28 struct VersionParseParameters;
30 template<
typename VersionType >
31 class CUPT_API BasePackageIterator:
public std::iterator< std::bidirectional_iterator_tag, const VersionType* >
33 friend class cache::Package;
34 friend class cache::BinaryPackage;
35 friend class cache::SourcePackage;
37 typedef vector< unique_ptr< cache::Version > >::const_iterator UnderlyingIterator;
39 UnderlyingIterator __ui;
41 BasePackageIterator(UnderlyingIterator);
43 typedef BasePackageIterator Self;
46 const VersionType* operator*()
const;
47 bool operator==(
const Self&)
const;
48 bool operator!=(
const Self&)
const;
58 vector< unique_ptr< Version > > __parsed_versions;
60 CUPT_LOCAL
void __merge_version(
const string&, unique_ptr< Version >&&);
61 CUPT_LOCAL
void p_mergeInstalledVersion(unique_ptr< Version >&&);
69 CUPT_LOCAL
const vector< unique_ptr< Version > >& _get_versions()
const;
70 CUPT_LOCAL
virtual unique_ptr< Version > _parse_version(
const internal::VersionParseParameters&)
const = 0;
71 CUPT_LOCAL
virtual bool _is_architecture_appropriate(
const string&,
const Version*)
const = 0;
79 CUPT_LOCAL
void addEntry(
const internal::VersionParseParameters&);
83 vector< const Version* > getVersions()
const;
89 const Version* getSpecificVersion(
const string& versionString)
const;
91 typedef internal::BasePackageIterator< Version > iterator;
92 iterator begin()
const;