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>
|