libept
Main Page
Namespaces
Classes
Files
File List
File Members
ept
core
apt
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
{
10
package::Internal
m_pkg
;
11
Internal
m_ver
;
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
26
Internal
head
() {
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
42
InternalList
(
package::Internal
i )
43
:
m_pkg
( i )
44
{
45
m_ver
=
m_pkg
.VersionList();
46
seek
();
47
}
48
};
49
50
struct
Setup
{
51
typedef
ept::Token
Token
;
52
typedef
version::Internal
Internal
;
53
typedef
version::PropertyId
PropertyId
;
54
typedef
version::InternalList
InternalList
;
55
};
56
57
struct
Source
:
core::Source
< Source, Setup, PropertyType >
58
{
59
AptDatabase
&
m_db
;
60
Source
(
AptDatabase
&db ) :
m_db
( db ) {}
61
62
InternalList
listInternal
() {
63
return
InternalList
(
m_db
.
cache
().PkgBegin() );
64
}
65
66
Token
getToken
(
Internal
i ) {
67
Token
t;
68
t._id = std::string( i.ParentPkg().Name() ) +
"_"
+ i.VerStr();
69
return
t;
70
}
71
72
Internal
lookupToken
(
Token
t ) {
73
return
m_db
.
lookupVersion
( t );
74
}
75
76
template
< PropertyId p >
77
typename
PropertyType< p >::T
getInternal
(
Internal
);
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
Generated on Mon Dec 24 2012 00:44:08 for libept by
1.8.1.2