libept  0.5.25
core/apt/version.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 #ifndef EPT_CORE_APT_VERSION_H
3 #define EPT_CORE_APT_VERSION_H
4 
5 namespace ept {
6 namespace core {
7 namespace version {
8 
9 struct InternalList {
12 
13  typedef Internal Type;
14 
15  InternalList tail() const {
16  InternalList t = *this;
17  t.m_ver ++;
18  t.seek();
19  return t;
20  }
21 
22  const Internal head() const {
23  return m_ver;
24  }
25 
27  return m_ver;
28  }
29 
30  bool empty() const {
31  return m_pkg.end();
32  }
33 
34  void seek()
35  {
36  while ( m_ver.end() && !m_pkg.end() ) {
37  m_pkg ++;
38  m_ver = m_pkg.VersionList();
39  }
40  }
41 
43  : m_pkg( i )
44  {
45  m_ver = m_pkg.VersionList();
46  seek();
47  }
48 };
49 
50 struct Setup {
51  typedef ept::Token Token;
55 };
56 
57 struct Source : core::Source< Source, Setup, PropertyType >
58 {
60  Source( AptDatabase &db ) : m_db( db ) {}
61 
63  return InternalList( m_db.cache().PkgBegin() );
64  }
65 
67  Token t;
68  t._id = std::string( i.ParentPkg().Name() ) + "_" + i.VerStr();
69  return t;
70  }
71 
73  return m_db.lookupVersion( t );
74  }
75 
76  template< PropertyId p >
78 };
79 
80 template<> struct PropertyType< Package > { typedef Token T; };
81 
82 template<> inline Token Source::getInternal< Package >( Internal i ) {
83  assert( !i.end() );
84  Token t;
85  t._id = i.ParentPkg().Name();
86  return t;
87 }
88 
89 }
90 }
91 }
92 
93 #endif
Definition: core/apt/version.h:57
Setup::Token Token
Definition: source.h:15
ept::Token Token
Definition: core/apt/version.h:51
pkgCache::VerIterator Internal
Definition: core/apt.h:362
-*- C++ -*- (c) 2006, 2007 Petr Rockai me@mornfall.net
Definition: apt.cc:43
Definition: core/apt/version.h:9
PropertyId
Definition: core/apt.h:359
Source(AptDatabase &db)
Definition: core/apt/version.h:60
version::Internal Internal
Definition: core/apt/version.h:52
pkgCache::VerIterator lookupVersion(Token t)
Definition: core/apt.h:256
Internal m_ver
Definition: core/apt/version.h:11
Definition: core/apt.h:112
version::PropertyId PropertyId
Definition: core/apt/version.h:53
Definition: token.h:10
Internal lookupToken(Token t)
Definition: core/apt/version.h:72
Definition: core/apt/version.h:50
bool empty() const
Definition: core/apt/version.h:30
Token T
Definition: core/apt/version.h:80
InternalList(package::Internal i)
Definition: core/apt/version.h:42
std::string _id
Definition: token.h:11
Internal Type
Definition: core/apt/version.h:13
AptDatabase & m_db
Definition: core/apt/version.h:59
Definition: core/apt.h:363
pkgCache::PkgIterator Internal
Definition: core/apt.h:371
Internal head()
Definition: core/apt/version.h:26
AptInternalList< Internal > InternalList
Definition: core/apt.h:381
void seek()
Definition: core/apt/version.h:34
pkgCache & cache()
Definition: core/apt.h:113
version::InternalList InternalList
Definition: core/apt/version.h:54
InternalList listInternal()
Definition: core/apt/version.h:62
Definition: source.h:13
const Internal head() const
Definition: core/apt/version.h:22
InternalList tail() const
Definition: core/apt/version.h:15
package::Internal m_pkg
Definition: core/apt/version.h:10
Token getToken(Internal i)
Definition: core/apt/version.h:66
Definition: core/apt.h:359
PropertyType< p >::T getInternal(Internal)