1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>LCOV - lcov.info - ept/core/source.h</title>
<link rel="stylesheet" type="text/css" href="../../gcov.css">
</head>
<body>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="title">LTP GCOV extension - code coverage report</td></tr>
<tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
<tr>
<td width="100%">
<table cellpadding=1 border=0 width="100%">
<tr>
<td class="headerItem" width="20%">Current view:</td>
<td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - source.h</td>
</tr>
<tr>
<td class="headerItem" width="20%">Test:</td>
<td class="headerValue" width="80%" colspan=4>lcov.info</td>
</tr>
<tr>
<td class="headerItem" width="20%">Date:</td>
<td class="headerValue" width="20%">2008-08-14</td>
<td width="20%"></td>
<td class="headerItem" width="20%">Instrumented lines:</td>
<td class="headerValue" width="20%">34</td>
</tr>
<tr>
<td class="headerItem" width="20%">Code covered:</td>
<td class="headerValue" width="20%">100.0 %</td>
<td width="20%"></td>
<td class="headerItem" width="20%">Executed lines:</td>
<td class="headerValue" width="20%">34</td>
</tr>
</table>
</td>
</tr>
<tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
</table>
<table cellpadding=0 cellspacing=0 border=0>
<tr>
<td><br></td>
</tr>
<tr>
<td><pre class="source">
<span class="lineNum"> 1 </span> : // -*- C++ -*-
<span class="lineNum"> 2 </span> :
<span class="lineNum"> 3 </span> : #include <ept/core/list.h>
<span class="lineNum"> 4 </span> :
<span class="lineNum"> 5 </span> : #ifndef EPT_CORE_SOURCE_H
<span class="lineNum"> 6 </span> : #define EPT_CORE_SOURCE_H
<span class="lineNum"> 7 </span> :
<span class="lineNum"> 8 </span> : namespace ept {
<span class="lineNum"> 9 </span> : namespace core {
<span class="lineNum"> 10 </span> :
<span class="lineNum"> 11 </span> : template< typename Self, typename Setup,
<span class="lineNum"> 12 </span> : template< typename Setup::PropertyId > class PType >
<span class="lineNum"> 13 </span><span class="lineCov"> 38 : struct Source {</span>
<span class="lineNum"> 14 </span> : typedef typename Setup::PropertyId PropertyId;
<span class="lineNum"> 15 </span> : typedef typename Setup::Token Token;
<span class="lineNum"> 16 </span> :
<span class="lineNum"> 17 </span> : Token m_cachedToken;
<span class="lineNum"> 18 </span> : typename Setup::Internal m_cached;
<span class="lineNum"> 19 </span> :
<span class="lineNum"> 20 </span><span class="lineCov"> 43 : Self &self() { return *static_cast< Self * >( this ); }</span>
<span class="lineNum"> 21 </span> :
<span class="lineNum"> 22 </span> : template< PropertyId property >
<span class="lineNum"> 23 </span><span class="lineCov"> 13 : typename PType< property >::T get( Token t ) {</span>
<span class="lineNum"> 24 </span><span class="lineCov"> 13 : if ( m_cachedToken != t ) {</span>
<span class="lineNum"> 25 </span><span class="lineCov"> 10 : m_cachedToken = t;</span>
<span class="lineNum"> 26 </span><span class="lineCov"> 10 : m_cached = self().lookupToken( t );</span>
<span class="lineNum"> 27 </span> : }
<span class="lineNum"> 28 </span><span class="lineCov"> 13 : return self().template getInternal< property >( m_cached );</span>
<span class="lineNum"> 29 </span> : }
<span class="lineNum"> 30 </span> :
<span class="lineNum"> 31 </span> : void invalidate() {
<span class="lineNum"> 32 </span> : m_cachedToken = ept::Token();
<span class="lineNum"> 33 </span> : m_cached = typename Setup::Internal();
<span class="lineNum"> 34 </span> : }
<span class="lineNum"> 35 </span> :
<span class="lineNum"> 36 </span> : template< PropertyId _property >
<span class="lineNum"> 37 </span> : struct ComposedList : wibble::mixin::Comparable< ComposedList< _property > >
<span class="lineNum"> 38 </span><span class="lineCov"> 4009 : {</span>
<span class="lineNum"> 39 </span> : typedef Self Origin;
<span class="lineNum"> 40 </span> : typedef typename Setup::Token Token;
<span class="lineNum"> 41 </span> : typedef typename PType< _property >::T Property;
<span class="lineNum"> 42 </span> : typedef ComposedList Type;
<span class="lineNum"> 43 </span> :
<span class="lineNum"> 44 </span> : Origin *origin;
<span class="lineNum"> 45 </span> : typename Setup::InternalList internal;
<span class="lineNum"> 46 </span> :
<span class="lineNum"> 47 </span><span class="lineCov"> 12056 : ComposedList tail() const {</span>
<span class="lineNum"> 48 </span><span class="lineCov"> 12056 : return ComposedList< _property >( *origin, internal.tail() );</span>
<span class="lineNum"> 49 </span> : }
<span class="lineNum"> 50 </span> :
<span class="lineNum"> 51 </span><span class="lineCov"> 12078 : bool empty() const { return internal.empty(); }</span>
<span class="lineNum"> 52 </span> :
<span class="lineNum"> 53 </span><span class="lineCov"> 13 : bool operator<( const ComposedList &o ) const {</span>
<span class="lineNum"> 54 </span><span class="lineCov"> 13 : return token() < o.token();</span>
<span class="lineNum"> 55 </span> : }
<span class="lineNum"> 56 </span> :
<span class="lineNum"> 57 </span><span class="lineCov"> 18 : ComposedList &head() { return *this; }</span>
<span class="lineNum"> 58 </span><span class="lineCov"> 4 : const ComposedList &head() const { return *this; }</span>
<span class="lineNum"> 59 </span> :
<span class="lineNum"> 60 </span><span class="lineCov"> 6054 : Token token() const { return origin->getToken( internal.head() ); }</span>
<span class="lineNum"> 61 </span> :
<span class="lineNum"> 62 </span><span class="lineCov"> 7836 : Property property() const {</span>
<span class="lineNum"> 63 </span> : return origin->template getInternal< _property >(
<span class="lineNum"> 64 </span><span class="lineCov"> 7836 : internal.head() );</span>
<span class="lineNum"> 65 </span> : }
<span class="lineNum"> 66 </span> :
<span class="lineNum"> 67 </span> : template< PropertyId P >
<span class="lineNum"> 68 </span> : typename PType< P >::T
<span class="lineNum"> 69 </span><span class="lineCov"> 14 : get() const {</span>
<span class="lineNum"> 70 </span><span class="lineCov"> 14 : return origin->template getInternal< P >( internal.head() );</span>
<span class="lineNum"> 71 </span> : }
<span class="lineNum"> 72 </span> :
<span class="lineNum"> 73 </span><span class="lineCov"> 8 : ComposedList() : origin( 0 ) {}</span>
<span class="lineNum"> 74 </span> :
<span class="lineNum"> 75 </span><span class="lineCov"> 12066 : ComposedList( Origin &o, typename Setup::InternalList i )</span>
<span class="lineNum"> 76 </span><span class="lineCov"> 12066 : : origin( &o ), internal( i ) {}</span>
<span class="lineNum"> 77 </span> : };
<span class="lineNum"> 78 </span> :
<span class="lineNum"> 79 </span> : template< PropertyId property >
<span class="lineNum"> 80 </span><span class="lineCov"> 10 : ComposedList< property > list()</span>
<span class="lineNum"> 81 </span> : {
<span class="lineNum"> 82 </span><span class="lineCov"> 10 : return ComposedList< property >( self(), self().listInternal() );</span>
<span class="lineNum"> 83 </span> : }
<span class="lineNum"> 84 </span> :
<span class="lineNum"> 85 </span> : template< PropertyId P, typename F >
<span class="lineNum"> 86 </span><span class="lineCov"> 50 : struct Propertify {</span>
<span class="lineNum"> 87 </span> : F f;
<span class="lineNum"> 88 </span><span class="lineCov"> 2 : Propertify( F _f = F() ) : f( _f ) {}</span>
<span class="lineNum"> 89 </span><span class="lineCov"> 8 : bool operator()( const ComposedList< P > &x ) const {</span>
<span class="lineNum"> 90 </span><span class="lineCov"> 8 : return f( x.token(), x.property() );</span>
<span class="lineNum"> 91 </span> : }
<span class="lineNum"> 92 </span> : };
<span class="lineNum"> 93 </span> :
<span class="lineNum"> 94 </span> : template< PropertyId P, typename F >
<span class="lineNum"> 95 </span> : struct PropertyFilter {
<span class="lineNum"> 96 </span> : typedef typename list::Filtered<
<span class="lineNum"> 97 </span> : ComposedList< P >, Propertify< P, F > > T;
<span class="lineNum"> 98 </span> : };
<span class="lineNum"> 99 </span> :
<span class="lineNum"> 100 </span> : template< PropertyId P, typename F >
<span class="lineNum"> 101 </span> : typename PropertyFilter< P, F >::T
<span class="lineNum"> 102 </span><span class="lineCov"> 1 : propertyFilter( F f ) {</span>
<span class="lineNum"> 103 </span><span class="lineCov"> 1 : return list::filter( list< P >(), Propertify< P, F >( f ) );</span>
<span class="lineNum"> 104 </span> : }
<span class="lineNum"> 105 </span> :
<span class="lineNum"> 106 </span><span class="lineCov"> 38 : Source()</span>
<span class="lineNum"> 107 </span><span class="lineCov"> 38 : {</span>
<span class="lineNum"> 108 </span><span class="lineCov"> 38 : }</span>
<span class="lineNum"> 109 </span> : };
<span class="lineNum"> 110 </span> :
<span class="lineNum"> 111 </span> : }
<span class="lineNum"> 112 </span> : }
<span class="lineNum"> 113 </span> :
<span class="lineNum"> 114 </span> : #endif
</pre>
</td>
</tr>
</table>
<br>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
<tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr>
</table>
<br>
</body>
</html>
|