summaryrefslogtreecommitdiff
path: root/rep/ept
diff options
context:
space:
mode:
Diffstat (limited to 'rep/ept')
-rw-r--r--rep/ept/apt/apt.cc.gcov.html707
-rw-r--r--rep/ept/apt/apt.h.gcov.html286
-rw-r--r--rep/ept/apt/apt.test.h.gcov.html259
-rw-r--r--rep/ept/apt/index.html182
-rw-r--r--rep/ept/apt/packagerecord.cc.gcov.html185
-rw-r--r--rep/ept/apt/packagerecord.h.gcov.html243
-rw-r--r--rep/ept/apt/packagerecord.test.h.gcov.html205
-rw-r--r--rep/ept/apt/recordparser.cc.gcov.html237
-rw-r--r--rep/ept/apt/recordparser.h.gcov.html162
-rw-r--r--rep/ept/apt/recordparser.test.h.gcov.html295
-rw-r--r--rep/ept/apt/version.cc.gcov.html154
-rw-r--r--rep/ept/apt/version.h.gcov.html161
-rw-r--r--rep/ept/apt/version.test.h.gcov.html203
-rw-r--r--rep/ept/core/apt.cpp.gcov.html90
-rw-r--r--rep/ept/core/apt.h.gcov.html474
-rw-r--r--rep/ept/core/apt.test.h.gcov.html162
-rw-r--r--rep/ept/core/apt/action.h.gcov.html202
-rw-r--r--rep/ept/core/apt/action.test.h.gcov.html108
-rw-r--r--rep/ept/core/apt/index.html155
-rw-r--r--rep/ept/core/apt/package.h.gcov.html194
-rw-r--r--rep/ept/core/apt/record.cpp.gcov.html83
-rw-r--r--rep/ept/core/apt/record.h.gcov.html355
-rw-r--r--rep/ept/core/apt/record.test.h.gcov.html123
-rw-r--r--rep/ept/core/apt/recordparser.cpp.gcov.html239
-rw-r--r--rep/ept/core/apt/recordparser.h.gcov.html165
-rw-r--r--rep/ept/core/apt/version.h.gcov.html160
-rw-r--r--rep/ept/core/desktop.h.gcov.html344
-rw-r--r--rep/ept/core/desktop.test.h.gcov.html135
-rw-r--r--rep/ept/core/desktopfile.h.gcov.html205
-rw-r--r--rep/ept/core/index.html164
-rw-r--r--rep/ept/core/source.h.gcov.html181
-rw-r--r--rep/ept/core/xapian.cpp.gcov.html208
-rw-r--r--rep/ept/core/xapian.h.gcov.html456
-rw-r--r--rep/ept/core/xapian.test.h.gcov.html141
-rw-r--r--rep/ept/debtags/debtags.cc.gcov.html317
-rw-r--r--rep/ept/debtags/debtags.h.gcov.html484
-rw-r--r--rep/ept/debtags/debtags.tcc.gcov.html156
-rw-r--r--rep/ept/debtags/debtags.test.h.gcov.html350
-rw-r--r--rep/ept/debtags/expression.cc.gcov.html118
-rw-r--r--rep/ept/debtags/expression.test.h.gcov.html150
-rw-r--r--rep/ept/debtags/index.html173
-rw-r--r--rep/ept/debtags/maint/debdbparser.cc.gcov.html255
-rw-r--r--rep/ept/debtags/maint/debtagsindexer.cc.gcov.html332
-rw-r--r--rep/ept/debtags/maint/debtagsindexer.h.gcov.html118
-rw-r--r--rep/ept/debtags/maint/index.html236
-rw-r--r--rep/ept/debtags/maint/path.cc.gcov.html207
-rw-r--r--rep/ept/debtags/maint/path.h.gcov.html200
-rw-r--r--rep/ept/debtags/maint/pkgid.cc.gcov.html133
-rw-r--r--rep/ept/debtags/maint/pkgid.h.gcov.html158
-rw-r--r--rep/ept/debtags/maint/pkgid.test.h.gcov.html142
-rw-r--r--rep/ept/debtags/maint/serializer.h.gcov.html1016
-rw-r--r--rep/ept/debtags/maint/serializer.test.h.gcov.html200
-rw-r--r--rep/ept/debtags/maint/sourcedir.cc.gcov.html190
-rw-r--r--rep/ept/debtags/maint/sourcedir.h.gcov.html141
-rw-r--r--rep/ept/debtags/maint/sourcedir.tcc.gcov.html118
-rw-r--r--rep/ept/debtags/maint/vocabularyindexer.cc.gcov.html262
-rw-r--r--rep/ept/debtags/maint/vocabularyindexer.h.gcov.html183
-rw-r--r--rep/ept/debtags/maint/vocabularymerger.cc.gcov.html453
-rw-r--r--rep/ept/debtags/maint/vocabularymerger.h.gcov.html224
-rw-r--r--rep/ept/debtags/maint/vocabularymerger.test.h.gcov.html211
-rw-r--r--rep/ept/debtags/tag.cc.gcov.html205
-rw-r--r--rep/ept/debtags/tag.h.gcov.html318
-rw-r--r--rep/ept/debtags/vocabulary.cc.gcov.html297
-rw-r--r--rep/ept/debtags/vocabulary.h.gcov.html349
-rw-r--r--rep/ept/debtags/vocabulary.test.h.gcov.html385
-rw-r--r--rep/ept/index.html110
-rw-r--r--rep/ept/popcon/index.html128
-rw-r--r--rep/ept/popcon/local.cc.gcov.html235
-rw-r--r--rep/ept/popcon/local.h.gcov.html154
-rw-r--r--rep/ept/popcon/local.test.h.gcov.html178
-rw-r--r--rep/ept/popcon/maint/index.html128
-rw-r--r--rep/ept/popcon/maint/path.cc.gcov.html182
-rw-r--r--rep/ept/popcon/maint/path.h.gcov.html194
-rw-r--r--rep/ept/popcon/maint/popconindexer.cc.gcov.html314
-rw-r--r--rep/ept/popcon/maint/popconindexer.h.gcov.html142
-rw-r--r--rep/ept/popcon/maint/sourcedir.cc.gcov.html210
-rw-r--r--rep/ept/popcon/maint/sourcedir.h.gcov.html130
-rw-r--r--rep/ept/popcon/popcon.cc.gcov.html162
-rw-r--r--rep/ept/popcon/popcon.h.gcov.html220
-rw-r--r--rep/ept/popcon/popcon.test.h.gcov.html175
-rw-r--r--rep/ept/progresscallback.cpp.gcov.html79
-rw-r--r--rep/ept/progresscallback.h.gcov.html95
-rw-r--r--rep/ept/test.h.gcov.html105
-rw-r--r--rep/ept/textsearch/extraindexers.cc.gcov.html125
-rw-r--r--rep/ept/textsearch/extraindexers.h.gcov.html118
-rw-r--r--rep/ept/textsearch/index.html119
-rw-r--r--rep/ept/textsearch/maint/index.html92
-rw-r--r--rep/ept/textsearch/maint/path.cc.gcov.html160
-rw-r--r--rep/ept/textsearch/maint/path.h.gcov.html141
-rw-r--r--rep/ept/textsearch/textsearch.cc.gcov.html323
-rw-r--r--rep/ept/textsearch/textsearch.h.gcov.html286
-rw-r--r--rep/ept/textsearch/textsearch.test.h.gcov.html233
-rw-r--r--rep/ept/token.h.gcov.html122
93 files changed, 0 insertions, 20364 deletions
diff --git a/rep/ept/apt/apt.cc.gcov.html b/rep/ept/apt/apt.cc.gcov.html
deleted file mode 100644
index ee60a5c..0000000
--- a/rep/ept/apt/apt.cc.gcov.html
+++ /dev/null
@@ -1,707 +0,0 @@
-<!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/apt/apt.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">323</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">76.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">248</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> : /** \file
-<span class="lineNum"> 2 </span> : * High-level front-end to libapt-pkg, as a data provider for the ept framework.
-<span class="lineNum"> 3 </span> : */
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /*
-<span class="lineNum"> 6 </span> : * Copyright (C) 2007,2008 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : *
-<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 16 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 21 </span> : */
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;apt-pkg/error.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;apt-pkg/init.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;apt-pkg/progress.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;apt-pkg/sourcelist.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;apt-pkg/pkgcachegen.h&gt;
-<span class="lineNum"> 30 </span> : #include &lt;apt-pkg/policy.h&gt;
-<span class="lineNum"> 31 </span> : #include &lt;apt-pkg/cachefile.h&gt;
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 34 </span> : #include &lt;sys/stat.h&gt;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 37 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : using namespace std;
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : namespace ept {
-<span class="lineNum"> 44 </span> : namespace apt {
-<span class="lineNum"> 45 </span> : using core::aptTimestamp;
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : Exception::Exception(const std::string&amp; context) throw ()</span>
-<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : : Generic(context)</span>
-<span class="lineNum"> 49 </span> : {
-<span class="lineNum"> 50 </span> : // Concatenate all errors and warnings found
-<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : string err;</span>
-<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : while (!_error-&gt;empty())</span>
-<span class="lineNum"> 53 </span> : {
-<span class="lineNum"> 54 </span><span class="lineNoCov"> 0 : bool type = _error-&gt;PopMessage(err);</span>
-<span class="lineNum"> 55 </span><span class="lineNoCov"> 0 : if (type)</span>
-<span class="lineNum"> 56 </span><span class="lineNoCov"> 0 : m_message += &quot;E: &quot; + err + &quot;\n&quot;;</span>
-<span class="lineNum"> 57 </span> : else
-<span class="lineNum"> 58 </span><span class="lineNoCov"> 0 : m_message += &quot;W: &quot; + err + &quot;\n&quot;;</span>
-<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineCov"> 29 : static void aptInit ()</span>
-<span class="lineNum"> 63 </span> : {
-<span class="lineNum"> 64 </span><span class="lineCov"> 29 : if (_config-&gt;FindB(&quot;Initialized&quot;))</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 29 : return;</span>
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : if (!pkgInitConfig (*_config))</span>
-<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : throw Exception(&quot;initialising apt configuration&quot;);</span>
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : _config-&gt;Set(&quot;Initialized&quot;, 1);</span>
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : /*
-<span class="lineNum"> 73 </span> : _config-&gt;Set(&quot;Dir&quot;, CACHE_DIR);
-<span class="lineNum"> 74 </span> : _config-&gt;Set(&quot;Dir::Cache&quot;, &quot;cache&quot;);
-<span class="lineNum"> 75 </span> : _config-&gt;Set(&quot;Dir::State&quot;, &quot;state&quot;);
-<span class="lineNum"> 76 </span> : _config-&gt;Set(&quot;Dir::Etc&quot;, &quot;etc&quot;);
-<span class="lineNum"> 77 </span> : _config-&gt;Set(&quot;Dir::State::status&quot;, CACHE_DIR &quot;dpkg-status&quot;);
-<span class="lineNum"> 78 </span> : */
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : if (!pkgInitSystem (*_config, _system))</span>
-<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : throw Exception(&quot;initialising apt system&quot;);</span>
-<span class="lineNum"> 81 </span> : }
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : struct AptImplementation
-<span class="lineNum"> 84 </span> : {
-<span class="lineNum"> 85 </span> : pkgSourceList* m_list;
-<span class="lineNum"> 86 </span> : MMap *m;
-<span class="lineNum"> 87 </span> : OpProgress progress;
-<span class="lineNum"> 88 </span> : pkgCache* m_cache;
-<span class="lineNum"> 89 </span> : pkgPolicy* m_policy;
-<span class="lineNum"> 90 </span> : pkgCacheFile* m_depcache;
-<span class="lineNum"> 91 </span> : time_t m_open_timestamp;
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span><span class="lineCov"> 29 : AptImplementation() : m_list(0), m(0), m_cache(0), m_policy(0), m_depcache(0), m_open_timestamp(0)</span>
-<span class="lineNum"> 94 </span> : {
-<span class="lineNum"> 95 </span> : // Init the apt library if needed
-<span class="lineNum"> 96 </span><span class="lineCov"> 29 : aptInit();</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineCov"> 29 : m_open_timestamp = aptTimestamp();</span>
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span><span class="lineCov"> 29 : m_list = new pkgSourceList;</span>
-<span class="lineNum"> 101 </span><span class="lineCov"> 58 : if (!m_list-&gt;ReadMainList())</span>
-<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : throw Exception(&quot;reading list of sources&quot;);</span>
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span><span class="lineCov"> 29 : bool res = pkgMakeStatusCache(*m_list, progress, &amp;m, true);</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 29 : progress.Done();</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 29 : if (!res)</span>
-<span class="lineNum"> 107 </span><span class="lineNoCov"> 0 : throw Exception(&quot;Reading the package lists or status file&quot;);</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span><span class="lineCov"> 29 : m_cache = new pkgCache(m);</span>
-<span class="lineNum"> 110 </span><span class="lineCov"> 58 : m_policy = new pkgPolicy(m_cache);</span>
-<span class="lineNum"> 111 </span><span class="lineCov"> 58 : if (!ReadPinFile(*m_policy))</span>
-<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : throw Exception(&quot;Reading the policy pin file&quot;);</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 29 : }</span>
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span><span class="lineCov"> 29 : ~AptImplementation()</span>
-<span class="lineNum"> 116 </span> : {
-<span class="lineNum"> 117 </span><span class="lineCov"> 29 : if (m_depcache) delete m_depcache;</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 29 : if (m_policy) delete m_policy;</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 29 : if (m_cache) delete m_cache;</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 29 : if (m) delete m;</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 29 : if (m_list) delete m_list;</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 29 : }</span>
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span><span class="lineCov"> 3980 : pkgCache&amp; cache()</span>
-<span class="lineNum"> 125 </span> : {
-<span class="lineNum"> 126 </span><span class="lineCov"> 3980 : return *m_cache;</span>
-<span class="lineNum"> 127 </span> : }
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span><span class="lineCov"> 16099 : pkgPolicy&amp; policy()</span>
-<span class="lineNum"> 130 </span> : {
-<span class="lineNum"> 131 </span><span class="lineCov"> 16099 : return *m_policy;</span>
-<span class="lineNum"> 132 </span> : }
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span><span class="lineCov"> 1 : pkgCacheFile&amp; depcache()</span>
-<span class="lineNum"> 135 </span> : {
-<span class="lineNum"> 136 </span><span class="lineCov"> 1 : if (!m_depcache)</span>
-<span class="lineNum"> 137 </span> : {
-<span class="lineNum"> 138 </span><span class="lineCov"> 1 : m_depcache = new pkgCacheFile;</span>
-<span class="lineNum"> 139 </span><span class="lineCov"> 1 : if (!m_depcache-&gt;Open(progress, false))</span>
-<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : throw Exception(&quot;Opening the cache file&quot;);</span>
-<span class="lineNum"> 141 </span> : }
-<span class="lineNum"> 142 </span><span class="lineCov"> 1 : return *m_depcache;</span>
-<span class="lineNum"> 143 </span> : }
-<span class="lineNum"> 144 </span> : };
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span> : // Sort a version list by package file locality
-<span class="lineNum"> 147 </span><span class="lineCov"> 39519 : bool localityCompare(const pkgCache::VerFile* a, const pkgCache::VerFile* b)</span>
-<span class="lineNum"> 148 </span> : {
-<span class="lineNum"> 149 </span><span class="lineCov"> 39519 : if (a == 0 &amp;&amp; b == 0)</span>
-<span class="lineNum"> 150 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 151 </span><span class="lineCov"> 39519 : if (a == 0)</span>
-<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 153 </span><span class="lineCov"> 39519 : if (b == 0)</span>
-<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 155 </span> :
-<span class="lineNum"> 156 </span><span class="lineCov"> 39519 : if (a-&gt;File == b-&gt;File)</span>
-<span class="lineNum"> 157 </span><span class="lineCov"> 39060 : return a-&gt;Offset &lt; b-&gt;Offset;</span>
-<span class="lineNum"> 158 </span><span class="lineCov"> 459 : return a-&gt;File &lt; b-&gt;File;</span>
-<span class="lineNum"> 159 </span> : }
-<span class="lineNum"> 160 </span> :
-<span class="lineNum"> 161 </span> : // Iterate records using the algorithm used by apt-cache dumpavail
-<span class="lineNum"> 162 </span> : struct RecordIteratorImpl
-<span class="lineNum"> 163 </span> : {
-<span class="lineNum"> 164 </span> : mutable int _ref;
-<span class="lineNum"> 165 </span> : AptImplementation&amp; apt;
-<span class="lineNum"> 166 </span> : vector&lt;pkgCache::VerFile*&gt; vflist;
-<span class="lineNum"> 167 </span> : pkgCache::PkgFileIterator lastFile;
-<span class="lineNum"> 168 </span> : FileFd file;
-<span class="lineNum"> 169 </span> : size_t lastOffset;
-<span class="lineNum"> 170 </span> :
-<span class="lineNum"> 171 </span><span class="lineCov"> 9 : RecordIteratorImpl(AptImplementation&amp; apt) : _ref(0), apt(apt), vflist(0)</span>
-<span class="lineNum"> 172 </span> : {
-<span class="lineNum"> 173 </span> : // We already have an estimate of how many versions we're about to find
-<span class="lineNum"> 174 </span><span class="lineCov"> 9 : vflist.reserve(apt.cache().HeaderP-&gt;PackageCount + 1);</span>
-<span class="lineNum"> 175 </span> :
-<span class="lineNum"> 176 </span> : // Populate the vector of versions to print
-<span class="lineNum"> 177 </span><span class="lineCov"> 34002 : for (pkgCache::PkgIterator pi = apt.cache().PkgBegin(); !pi.end(); ++pi)</span>
-<span class="lineNum"> 178 </span> : {
-<span class="lineNum"> 179 </span><span class="lineCov"> 33993 : if (pi-&gt;VersionList == 0)</span>
-<span class="lineNum"> 180 </span><span class="lineCov"> 17901 : continue;</span>
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span> : /* Get the candidate version or fallback on the installed version,
-<span class="lineNum"> 183 </span> : * as usual */
-<span class="lineNum"> 184 </span><span class="lineCov"> 16092 : pkgCache::VerIterator vi = apt.policy().GetCandidateVer(pi);</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 16092 : if (vi.end() == true)</span>
-<span class="lineNum"> 186 </span> : {
-<span class="lineNum"> 187 </span><span class="lineCov"> 1926 : if (pi-&gt;CurrentVer == 0)</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 1926 : continue;</span>
-<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : vi = pi.CurrentVer();</span>
-<span class="lineNum"> 190 </span> : }
-<span class="lineNum"> 191 </span> :
-<span class="lineNum"> 192 </span> : // Choose a valid file that contains the record for this version
-<span class="lineNum"> 193 </span><span class="lineCov"> 14166 : pkgCache::VerFileIterator vfi = vi.FileList();</span>
-<span class="lineNum"> 194 </span><span class="lineCov"> 24507 : for ( ; !vfi.end(); ++vfi)</span>
-<span class="lineNum"> 195 </span><span class="lineCov"> 14166 : if ((vfi.File()-&gt;Flags &amp; pkgCache::Flag::NotSource) == 0)</span>
-<span class="lineNum"> 196 </span><span class="lineCov"> 3825 : break;</span>
-<span class="lineNum"> 197 </span> :
-<span class="lineNum"> 198 </span> : // Handle packages whose candidate version is currently installed
-<span class="lineNum"> 199 </span> : // from outside the archives (like from a locally built .deb
-<span class="lineNum"> 200 </span><span class="lineCov"> 14166 : if (vfi.end() == true)</span>
-<span class="lineNum"> 201 </span> : {
-<span class="lineNum"> 202 </span><span class="lineCov"> 20682 : for (pkgCache::VerIterator cur = pi.VersionList(); cur.end() != true; cur++)</span>
-<span class="lineNum"> 203 </span> : {
-<span class="lineNum"> 204 </span><span class="lineCov"> 20763 : for (vfi = cur.FileList(); vfi.end() == false; vfi++)</span>
-<span class="lineNum"> 205 </span> : {
-<span class="lineNum"> 206 </span><span class="lineCov"> 10422 : if ((vfi.File()-&gt;Flags &amp; pkgCache::Flag::NotSource) == 0)</span>
-<span class="lineNum"> 207 </span> : {
-<span class="lineNum"> 208 </span><span class="lineCov"> 81 : vfi = vi.FileList();</span>
-<span class="lineNum"> 209 </span><span class="lineCov"> 81 : break;</span>
-<span class="lineNum"> 210 </span> : }
-<span class="lineNum"> 211 </span> : }
-<span class="lineNum"> 212 </span> :
-<span class="lineNum"> 213 </span><span class="lineCov"> 10422 : if (vfi.end() == false)</span>
-<span class="lineNum"> 214 </span><span class="lineCov"> 81 : break;</span>
-<span class="lineNum"> 215 </span> : }
-<span class="lineNum"> 216 </span> : }
-<span class="lineNum"> 217 </span><span class="lineCov"> 14166 : if (!vfi.end())</span>
-<span class="lineNum"> 218 </span><span class="lineCov"> 3906 : vflist.push_back(vfi);</span>
-<span class="lineNum"> 219 </span> : }
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span> : //cerr &lt;&lt; vflist.size() &lt;&lt; &quot; versions found&quot; &lt;&lt; endl;
-<span class="lineNum"> 222 </span> :
-<span class="lineNum"> 223 </span><span class="lineCov"> 9 : sort(vflist.begin(), vflist.end(), localityCompare);</span>
-<span class="lineNum"> 224 </span> :
-<span class="lineNum"> 225 </span> : //for (size_t i = 0; i &lt; vflist.size(); ++i)
-<span class="lineNum"> 226 </span> : //{
-<span class="lineNum"> 227 </span> : // pkgCache::PkgFileIterator fi(apt.cache(), vflist[i]-&gt;File + apt.cache().PkgFileP);
-<span class="lineNum"> 228 </span> : // cerr &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; fi.FileName() &lt;&lt; &quot;:&quot; &lt;&lt; vflist[i]-&gt;Offset &lt;&lt; &quot;-&quot; &lt;&lt; vflist[i]-&gt;Size &lt;&lt; endl;
-<span class="lineNum"> 229 </span> : //}
-<span class="lineNum"> 230 </span> : //cerr &lt;&lt; &quot;Done indexing.&quot; &lt;&lt; endl;
-<span class="lineNum"> 231 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 232 </span> :
-<span class="lineNum"> 233 </span><span class="lineCov"> 9 : ~RecordIteratorImpl()</span>
-<span class="lineNum"> 234 </span> : {
-<span class="lineNum"> 235 </span><span class="lineCov"> 9 : if (file.IsOpen())</span>
-<span class="lineNum"> 236 </span><span class="lineCov"> 9 : file.Close();</span>
-<span class="lineNum"> 237 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 238 </span> :
-<span class="lineNum"> 239 </span><span class="lineCov"> 14 : void ref() { ++_ref; }</span>
-<span class="lineNum"> 240 </span><span class="lineCov"> 14 : bool unref() { return --_ref == 0; }</span>
-<span class="lineNum"> 241 </span> :
-<span class="lineNum"> 242 </span><span class="lineCov"> 3906 : size_t size() { return vflist.size(); }</span>
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span><span class="lineCov"> 3906 : string record(size_t idx)</span>
-<span class="lineNum"> 245 </span> : {
-<span class="lineNum"> 246 </span> : //cerr &lt;&lt; &quot;Access record &quot; &lt;&lt; idx &lt;&lt; endl;
-<span class="lineNum"> 247 </span> : //cerr &lt;&lt; &quot;lastfile: &quot; &lt;&lt; (lastFile.Cache() != 0) &lt;&lt; endl;
-<span class="lineNum"> 248 </span> : // We can't reuse the file that was already open: open the new one
-<span class="lineNum"> 249 </span><span class="lineCov"> 3906 : if ((lastFile.Cache() == 0) || vflist[idx]-&gt;File + apt.cache().PkgFileP != lastFile)</span>
-<span class="lineNum"> 250 </span> : {
-<span class="lineNum"> 251 </span> : //cerr &lt;&lt; &quot;Needs open/reopen&quot; &lt;&lt; endl;
-<span class="lineNum"> 252 </span><span class="lineCov"> 18 : lastFile = pkgCache::PkgFileIterator(apt.cache(), vflist[idx]-&gt;File + apt.cache().PkgFileP);</span>
-<span class="lineNum"> 253 </span><span class="lineCov"> 18 : if (!lastFile.IsOk())</span>
-<span class="lineNum"> 254 </span><span class="lineNoCov"> 0 : throw Exception(string(&quot;Reading the data record for a package from file &quot;) + lastFile.FileName());</span>
-<span class="lineNum"> 255 </span> : //cerr &lt;&lt; &quot;Ok for &quot; &lt;&lt; lastFile.FileName() &lt;&lt; endl;
-<span class="lineNum"> 256 </span><span class="lineCov"> 18 : if (file.IsOpen())</span>
-<span class="lineNum"> 257 </span><span class="lineCov"> 9 : file.Close();</span>
-<span class="lineNum"> 258 </span><span class="lineCov"> 18 : if (!file.Open(lastFile.FileName(), FileFd::ReadOnly))</span>
-<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : throw Exception(string(&quot;Opening file &quot;) + lastFile.FileName());</span>
-<span class="lineNum"> 260 </span> : //cerr &lt;&lt; &quot;Opened &quot; &lt;&lt; lastFile.FileName() &lt;&lt; endl;
-<span class="lineNum"> 261 </span><span class="lineCov"> 18 : lastOffset = 0;</span>
-<span class="lineNum"> 262 </span> : }
-<span class="lineNum"> 263 </span> :
-<span class="lineNum"> 264 </span> : //cerr &lt;&lt; &quot;Reading from &quot; &lt;&lt; lastFile.FileName() &lt;&lt; &quot;:&quot; &lt;&lt; vflist[idx]-&gt;Offset &lt;&lt; &quot;-&quot; &lt;&lt; vflist[idx]-&gt;Size &lt;&lt; &quot; (lastOffset: &quot; &lt;&lt; lastOffset &lt;&lt; &quot;)&quot; &lt;&lt; endl;
-<span class="lineNum"> 265 </span> :
-<span class="lineNum"> 266 </span> : // If we start near were we ended, avoid a seek and enlarge the read a bit
-<span class="lineNum"> 267 </span><span class="lineCov"> 3906 : size_t slack = vflist[idx]-&gt;Offset - lastOffset;</span>
-<span class="lineNum"> 268 </span> : //cerr &lt;&lt; &quot;Slack: &quot; &lt;&lt; slack &lt;&lt; endl;
-<span class="lineNum"> 269 </span><span class="lineCov"> 3906 : if (slack &gt; 8)</span>
-<span class="lineNum"> 270 </span> : {
-<span class="lineNum"> 271 </span> : //cerr &lt;&lt; &quot;Slack too big: seek to &quot; &lt;&lt; vflist[idx]-&gt;Offset &lt;&lt; endl;
-<span class="lineNum"> 272 </span><span class="lineCov"> 171 : slack = 0;</span>
-<span class="lineNum"> 273 </span><span class="lineCov"> 171 : if (!file.Seek(vflist[idx]-&gt;Offset))</span>
-<span class="lineNum"> 274 </span><span class="lineNoCov"> 0 : throw Exception(string(&quot;Cannot seek to package record in file &quot;) + lastFile.FileName());</span>
-<span class="lineNum"> 275 </span> : }
-<span class="lineNum"> 276 </span> :
-<span class="lineNum"> 277 </span><span class="lineCov"> 3906 : char buffer[vflist[idx]-&gt;Size + slack + 1];</span>
-<span class="lineNum"> 278 </span><span class="lineCov"> 3906 : if (!file.Read(buffer, vflist[idx]-&gt;Size + slack))</span>
-<span class="lineNum"> 279 </span><span class="lineNoCov"> 0 : throw Exception(string(&quot;Cannot read package record in file &quot;) + lastFile.FileName());</span>
-<span class="lineNum"> 280 </span><span class="lineCov"> 3906 : buffer[vflist[idx]-&gt;Size + slack] = '\n';</span>
-<span class="lineNum"> 281 </span> : //cerr &lt;&lt; &quot;Data read (slack: &quot; &lt;&lt; slack &lt;&lt; &quot;)&quot; &lt;&lt; endl;
-<span class="lineNum"> 282 </span> :
-<span class="lineNum"> 283 </span><span class="lineCov"> 3906 : lastOffset = vflist[idx]-&gt;Offset + vflist[idx]-&gt;Size;</span>
-<span class="lineNum"> 284 </span> :
-<span class="lineNum"> 285 </span><span class="lineCov"> 3906 : return string(buffer+slack);</span>
-<span class="lineNum"> 286 </span> : }
-<span class="lineNum"> 287 </span> : };
-<span class="lineNum"> 288 </span> :
-<span class="lineNum"> 289 </span><span class="lineCov"> 20 : Apt::Iterator::Iterator(const Iterator&amp; i)</span>
-<span class="lineNum"> 290 </span> : {
-<span class="lineNum"> 291 </span><span class="lineCov"> 20 : if (i.cur)</span>
-<span class="lineNum"> 292 </span> : {
-<span class="lineNum"> 293 </span><span class="lineCov"> 10 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span>
-<span class="lineNum"> 294 </span><span class="lineCov"> 10 : *p = *static_cast&lt;pkgCache::PkgIterator*&gt;(i.cur);</span>
-<span class="lineNum"> 295 </span><span class="lineCov"> 10 : cur = p;</span>
-<span class="lineNum"> 296 </span> : } else
-<span class="lineNum"> 297 </span><span class="lineCov"> 10 : cur = 0;</span>
-<span class="lineNum"> 298 </span><span class="lineCov"> 20 : }</span>
-<span class="lineNum"> 299 </span> :
-<span class="lineNum"> 300 </span><span class="lineNoCov"> 0 : Apt::Iterator&amp; Apt::Iterator::operator=(const Iterator&amp; i)</span>
-<span class="lineNum"> 301 </span> : {
-<span class="lineNum"> 302 </span><span class="lineNoCov"> 0 : if (cur != i.cur)</span>
-<span class="lineNum"> 303 </span> : {
-<span class="lineNum"> 304 </span><span class="lineNoCov"> 0 : if (cur) delete static_cast&lt;pkgCache::PkgIterator*&gt;(cur);</span>
-<span class="lineNum"> 305 </span><span class="lineNoCov"> 0 : if (i.cur)</span>
-<span class="lineNum"> 306 </span> : {
-<span class="lineNum"> 307 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span>
-<span class="lineNum"> 308 </span><span class="lineNoCov"> 0 : *p = *static_cast&lt;pkgCache::PkgIterator*&gt;(i.cur);</span>
-<span class="lineNum"> 309 </span><span class="lineNoCov"> 0 : cur = p;</span>
-<span class="lineNum"> 310 </span> : } else
-<span class="lineNum"> 311 </span><span class="lineNoCov"> 0 : cur = 0;</span>
-<span class="lineNum"> 312 </span> : }
-<span class="lineNum"> 313 </span><span class="lineNoCov"> 0 : return *this;</span>
-<span class="lineNum"> 314 </span> : }
-<span class="lineNum"> 315 </span> :
-<span class="lineNum"> 316 </span><span class="lineCov"> 3605 : Apt::Iterator::~Iterator()</span>
-<span class="lineNum"> 317 </span> : {
-<span class="lineNum"> 318 </span><span class="lineCov"> 3605 : if (cur) delete static_cast&lt;pkgCache::PkgIterator*&gt;(cur);</span>
-<span class="lineNum"> 319 </span><span class="lineCov"> 3605 : }</span>
-<span class="lineNum"> 320 </span><span class="lineCov"> 5364 : std::string Apt::Iterator::operator*()</span>
-<span class="lineNum"> 321 </span> : {
-<span class="lineNum"> 322 </span><span class="lineCov"> 5364 : return static_cast&lt;pkgCache::PkgIterator*&gt;(cur)-&gt;Name();</span>
-<span class="lineNum"> 323 </span> : }
-<span class="lineNum"> 324 </span><span class="lineCov"> 7152 : Apt::Iterator&amp; Apt::Iterator::operator++()</span>
-<span class="lineNum"> 325 </span> : {
-<span class="lineNum"> 326 </span><span class="lineCov"> 7152 : pkgCache::PkgIterator* iter = static_cast&lt;pkgCache::PkgIterator*&gt;(cur);</span>
-<span class="lineNum"> 327 </span><span class="lineCov"> 7152 : ++*iter;</span>
-<span class="lineNum"> 328 </span><span class="lineCov"> 22260 : while (!iter-&gt;end() &amp;&amp; (*iter)-&gt;VersionList == 0)</span>
-<span class="lineNum"> 329 </span><span class="lineCov"> 7956 : ++*iter;</span>
-<span class="lineNum"> 330 </span><span class="lineCov"> 7152 : if (iter-&gt;end())</span>
-<span class="lineNum"> 331 </span> : {
-<span class="lineNum"> 332 </span><span class="lineCov"> 4 : delete iter;</span>
-<span class="lineNum"> 333 </span><span class="lineCov"> 4 : cur = 0;</span>
-<span class="lineNum"> 334 </span> : }
-<span class="lineNum"> 335 </span><span class="lineCov"> 7152 : return *this;</span>
-<span class="lineNum"> 336 </span> : }
-<span class="lineNum"> 337 </span><span class="lineNoCov"> 0 : bool Apt::Iterator::operator==(const Iterator&amp; i) const</span>
-<span class="lineNum"> 338 </span> : {
-<span class="lineNum"> 339 </span><span class="lineNoCov"> 0 : if (cur == 0 &amp;&amp; i.cur == 0)</span>
-<span class="lineNum"> 340 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 341 </span><span class="lineNoCov"> 0 : if (cur == 0 || i.cur == 0)</span>
-<span class="lineNum"> 342 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 343 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter1 = static_cast&lt;pkgCache::PkgIterator*&gt;(cur);</span>
-<span class="lineNum"> 344 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter2 = static_cast&lt;pkgCache::PkgIterator*&gt;(i.cur);</span>
-<span class="lineNum"> 345 </span><span class="lineNoCov"> 0 : return *iter1 == *iter2;</span>
-<span class="lineNum"> 346 </span> : }
-<span class="lineNum"> 347 </span><span class="lineCov"> 7157 : bool Apt::Iterator::operator!=(const Iterator&amp; i) const</span>
-<span class="lineNum"> 348 </span> : {
-<span class="lineNum"> 349 </span><span class="lineCov"> 7157 : if (cur == 0 &amp;&amp; i.cur == 0)</span>
-<span class="lineNum"> 350 </span><span class="lineCov"> 4 : return false;</span>
-<span class="lineNum"> 351 </span><span class="lineCov"> 7153 : if (cur == 0 || i.cur == 0)</span>
-<span class="lineNum"> 352 </span><span class="lineCov"> 7153 : return true;</span>
-<span class="lineNum"> 353 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter1 = static_cast&lt;pkgCache::PkgIterator*&gt;(cur);</span>
-<span class="lineNum"> 354 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter2 = static_cast&lt;pkgCache::PkgIterator*&gt;(i.cur);</span>
-<span class="lineNum"> 355 </span><span class="lineNoCov"> 0 : return *iter1 != *iter2;</span>
-<span class="lineNum"> 356 </span> : }
-<span class="lineNum"> 357 </span> :
-<span class="lineNum"> 358 </span> :
-<span class="lineNum"> 359 </span><span class="lineCov"> 9 : Apt::RecordIterator::RecordIterator(RecordIteratorImpl* impl, size_t pos)</span>
-<span class="lineNum"> 360 </span><span class="lineCov"> 9 : : impl(impl), pos(pos), cur_pos(pos)</span>
-<span class="lineNum"> 361 </span> : {
-<span class="lineNum"> 362 </span><span class="lineCov"> 9 : if (impl)</span>
-<span class="lineNum"> 363 </span> : {
-<span class="lineNum"> 364 </span><span class="lineCov"> 9 : impl-&gt;ref();</span>
-<span class="lineNum"> 365 </span><span class="lineCov"> 9 : cur = impl-&gt;record(pos);</span>
-<span class="lineNum"> 366 </span><span class="lineCov"> 9 : cur_pos = pos;</span>
-<span class="lineNum"> 367 </span> : }
-<span class="lineNum"> 368 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 369 </span><span class="lineCov"> 10 : Apt::RecordIterator::RecordIterator(const RecordIterator&amp; r)</span>
-<span class="lineNum"> 370 </span><span class="lineCov"> 10 : : impl(r.impl), pos(r.pos), cur(r.cur), cur_pos(r.cur_pos)</span>
-<span class="lineNum"> 371 </span> : {
-<span class="lineNum"> 372 </span><span class="lineCov"> 10 : if (impl)</span>
-<span class="lineNum"> 373 </span><span class="lineCov"> 5 : impl-&gt;ref();</span>
-<span class="lineNum"> 374 </span><span class="lineCov"> 10 : }</span>
-<span class="lineNum"> 375 </span><span class="lineCov"> 3500 : Apt::RecordIterator::~RecordIterator()</span>
-<span class="lineNum"> 376 </span> : {
-<span class="lineNum"> 377 </span><span class="lineCov"> 3500 : if (impl &amp;&amp; impl-&gt;unref())</span>
-<span class="lineNum"> 378 </span><span class="lineCov"> 1 : delete impl;</span>
-<span class="lineNum"> 379 </span><span class="lineCov"> 3500 : }</span>
-<span class="lineNum"> 380 </span><span class="lineCov"> 3906 : std::string Apt::RecordIterator::operator*()</span>
-<span class="lineNum"> 381 </span> : {
-<span class="lineNum"> 382 </span><span class="lineCov"> 3906 : if (cur_pos != pos)</span>
-<span class="lineNum"> 383 </span> : {
-<span class="lineNum"> 384 </span><span class="lineCov"> 3464 : cur = impl-&gt;record(pos);</span>
-<span class="lineNum"> 385 </span><span class="lineCov"> 3464 : cur_pos = pos;</span>
-<span class="lineNum"> 386 </span> : }
-<span class="lineNum"> 387 </span><span class="lineCov"> 3906 : return cur;</span>
-<span class="lineNum"> 388 </span> : }
-<span class="lineNum"> 389 </span><span class="lineCov"> 868 : std::string* Apt::RecordIterator::operator-&gt;()</span>
-<span class="lineNum"> 390 </span> : {
-<span class="lineNum"> 391 </span><span class="lineCov"> 868 : if (cur_pos != pos)</span>
-<span class="lineNum"> 392 </span> : {
-<span class="lineNum"> 393 </span><span class="lineCov"> 433 : cur = impl-&gt;record(pos);</span>
-<span class="lineNum"> 394 </span><span class="lineCov"> 433 : cur_pos = pos;</span>
-<span class="lineNum"> 395 </span> : }
-<span class="lineNum"> 396 </span><span class="lineCov"> 868 : return &amp;cur;</span>
-<span class="lineNum"> 397 </span> : }
-<span class="lineNum"> 398 </span><span class="lineCov"> 3906 : Apt::RecordIterator&amp; Apt::RecordIterator::operator++()</span>
-<span class="lineNum"> 399 </span> : {
-<span class="lineNum"> 400 </span><span class="lineCov"> 3906 : ++pos;</span>
-<span class="lineNum"> 401 </span><span class="lineCov"> 3906 : if (pos &gt;= impl-&gt;size())</span>
-<span class="lineNum"> 402 </span> : {
-<span class="lineNum"> 403 </span> : // If we reach the end, we become an end iterator
-<span class="lineNum"> 404 </span><span class="lineCov"> 9 : if (impl &amp;&amp; impl-&gt;unref())</span>
-<span class="lineNum"> 405 </span><span class="lineCov"> 8 : delete impl;</span>
-<span class="lineNum"> 406 </span><span class="lineCov"> 9 : impl = 0;</span>
-<span class="lineNum"> 407 </span><span class="lineCov"> 9 : pos = 0;</span>
-<span class="lineNum"> 408 </span> : }
-<span class="lineNum"> 409 </span><span class="lineCov"> 3906 : return *this;</span>
-<span class="lineNum"> 410 </span> : }
-<span class="lineNum"> 411 </span><span class="lineNoCov"> 0 : Apt::RecordIterator&amp; Apt::RecordIterator::operator=(const RecordIterator&amp; r)</span>
-<span class="lineNum"> 412 </span> : {
-<span class="lineNum"> 413 </span> : // Increment first, to avoid it reaching zero on assignment to self
-<span class="lineNum"> 414 </span><span class="lineNoCov"> 0 : if (r.impl) r.impl-&gt;ref();</span>
-<span class="lineNum"> 415 </span><span class="lineNoCov"> 0 : if (impl &amp;&amp; impl-&gt;unref())</span>
-<span class="lineNum"> 416 </span><span class="lineNoCov"> 0 : delete impl;</span>
-<span class="lineNum"> 417 </span><span class="lineNoCov"> 0 : impl = r.impl;</span>
-<span class="lineNum"> 418 </span><span class="lineNoCov"> 0 : pos = r.pos;</span>
-<span class="lineNum"> 419 </span><span class="lineNoCov"> 0 : cur = r.cur;</span>
-<span class="lineNum"> 420 </span><span class="lineNoCov"> 0 : cur_pos = r.cur_pos;</span>
-<span class="lineNum"> 421 </span><span class="lineNoCov"> 0 : return *this;</span>
-<span class="lineNum"> 422 </span> : }
-<span class="lineNum"> 423 </span><span class="lineNoCov"> 0 : bool Apt::RecordIterator::operator==(const RecordIterator&amp; ri) const</span>
-<span class="lineNum"> 424 </span> : {
-<span class="lineNum"> 425 </span><span class="lineNoCov"> 0 : return impl == ri.impl &amp;&amp; pos == ri.pos;</span>
-<span class="lineNum"> 426 </span> : }
-<span class="lineNum"> 427 </span><span class="lineCov"> 3915 : bool Apt::RecordIterator::operator!=(const RecordIterator&amp; ri) const</span>
-<span class="lineNum"> 428 </span> : {
-<span class="lineNum"> 429 </span><span class="lineCov"> 3915 : return impl != ri.impl || pos != ri.pos;</span>
-<span class="lineNum"> 430 </span> : }
-<span class="lineNum"> 431 </span> :
-<span class="lineNum"> 432 </span> :
-<span class="lineNum"> 433 </span><span class="lineCov"> 28 : Apt::Apt() : impl(new AptImplementation()) {}</span>
-<span class="lineNum"> 434 </span><span class="lineCov"> 28 : Apt::~Apt() { delete impl; }</span>
-<span class="lineNum"> 435 </span> :
-<span class="lineNum"> 436 </span><span class="lineCov"> 4 : Apt::iterator Apt::begin() const</span>
-<span class="lineNum"> 437 </span> : {
-<span class="lineNum"> 438 </span><span class="lineCov"> 4 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span>
-<span class="lineNum"> 439 </span><span class="lineCov"> 4 : *p = impl-&gt;cache().PkgBegin();</span>
-<span class="lineNum"> 440 </span><span class="lineCov"> 4 : return Apt::Iterator(p);</span>
-<span class="lineNum"> 441 </span> : }
-<span class="lineNum"> 442 </span> :
-<span class="lineNum"> 443 </span><span class="lineCov"> 3581 : Apt::iterator Apt::end() const</span>
-<span class="lineNum"> 444 </span> : {
-<span class="lineNum"> 445 </span><span class="lineCov"> 3581 : return Apt::Iterator();</span>
-<span class="lineNum"> 446 </span> : }
-<span class="lineNum"> 447 </span> :
-<span class="lineNum"> 448 </span><span class="lineCov"> 9 : Apt::record_iterator Apt::recordBegin() const</span>
-<span class="lineNum"> 449 </span> : {
-<span class="lineNum"> 450 </span><span class="lineCov"> 9 : return Apt::RecordIterator(new RecordIteratorImpl(*impl));</span>
-<span class="lineNum"> 451 </span> : }
-<span class="lineNum"> 452 </span> :
-<span class="lineNum"> 453 </span><span class="lineCov"> 3481 : Apt::record_iterator Apt::recordEnd() const</span>
-<span class="lineNum"> 454 </span> : {
-<span class="lineNum"> 455 </span><span class="lineCov"> 3481 : return Apt::RecordIterator();</span>
-<span class="lineNum"> 456 </span> : }
-<span class="lineNum"> 457 </span> :
-<span class="lineNum"> 458 </span><span class="lineNoCov"> 0 : size_t Apt::size() const</span>
-<span class="lineNum"> 459 </span> : {
-<span class="lineNum"> 460 </span><span class="lineNoCov"> 0 : return impl-&gt;cache().HeaderP-&gt;PackageCount;</span>
-<span class="lineNum"> 461 </span> : }
-<span class="lineNum"> 462 </span> :
-<span class="lineNum"> 463 </span><span class="lineCov"> 16 : time_t Apt::timestamp()</span>
-<span class="lineNum"> 464 </span> : {
-<span class="lineNum"> 465 </span><span class="lineCov"> 16 : return aptTimestamp();</span>
-<span class="lineNum"> 466 </span> : }
-<span class="lineNum"> 467 </span> :
-<span class="lineNum"> 468 </span><span class="lineCov"> 5 : bool Apt::isValid(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 469 </span> : {
-<span class="lineNum"> 470 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(pkg);</span>
-<span class="lineNum"> 471 </span><span class="lineCov"> 5 : return !pi.end();</span>
-<span class="lineNum"> 472 </span> : }
-<span class="lineNum"> 473 </span> :
-<span class="lineNum"> 474 </span><span class="lineCov"> 4 : Version Apt::validate(const Version&amp; ver) const</span>
-<span class="lineNum"> 475 </span> : {
-<span class="lineNum"> 476 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(ver.name());</span>
-<span class="lineNum"> 477 </span><span class="lineCov"> 5 : if (pi.end()) return Version();</span>
-<span class="lineNum"> 478 </span><span class="lineCov"> 4 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); vi++)</span>
-<span class="lineNum"> 479 </span> : {
-<span class="lineNum"> 480 </span><span class="lineCov"> 3 : const char* v = vi.VerStr();</span>
-<span class="lineNum"> 481 </span><span class="lineCov"> 3 : if (v == 0) continue;</span>
-<span class="lineNum"> 482 </span><span class="lineCov"> 3 : if (ver.version() == v)</span>
-<span class="lineNum"> 483 </span><span class="lineCov"> 2 : return ver;</span>
-<span class="lineNum"> 484 </span> : }
-<span class="lineNum"> 485 </span><span class="lineCov"> 1 : return Version();</span>
-<span class="lineNum"> 486 </span> : }
-<span class="lineNum"> 487 </span> :
-<span class="lineNum"> 488 </span><span class="lineCov"> 4 : Version Apt::candidateVersion(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 489 </span> : {
-<span class="lineNum"> 490 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(pkg);</span>
-<span class="lineNum"> 491 </span><span class="lineCov"> 4 : if (pi.end()) return Version();</span>
-<span class="lineNum"> 492 </span><span class="lineCov"> 3 : pkgCache::VerIterator vi = impl-&gt;policy().GetCandidateVer(pi);</span>
-<span class="lineNum"> 493 </span><span class="lineCov"> 3 : if (vi.end()) return Version();</span>
-<span class="lineNum"> 494 </span><span class="lineCov"> 3 : return Version(pkg, vi.VerStr());</span>
-<span class="lineNum"> 495 </span> : }
-<span class="lineNum"> 496 </span> :
-<span class="lineNum"> 497 </span><span class="lineCov"> 2 : Version Apt::installedVersion(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 498 </span> : {
-<span class="lineNum"> 499 </span><span class="lineCov"> 2 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(pkg);</span>
-<span class="lineNum"> 500 </span><span class="lineCov"> 2 : if (pi.end()) return Version();</span>
-<span class="lineNum"> 501 </span><span class="lineCov"> 1 : if (pi-&gt;CurrentVer == 0) return Version();</span>
-<span class="lineNum"> 502 </span><span class="lineCov"> 1 : pkgCache::VerIterator vi = pi.CurrentVer();</span>
-<span class="lineNum"> 503 </span><span class="lineCov"> 1 : if (vi.end()) return Version();</span>
-<span class="lineNum"> 504 </span><span class="lineCov"> 1 : return Version(pkg, vi.VerStr());</span>
-<span class="lineNum"> 505 </span> : }
-<span class="lineNum"> 506 </span> :
-<span class="lineNum"> 507 </span><span class="lineCov"> 4 : Version Apt::anyVersion(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 508 </span> : {
-<span class="lineNum"> 509 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(pkg);</span>
-<span class="lineNum"> 510 </span><span class="lineCov"> 4 : if (pi.end()) return Version();</span>
-<span class="lineNum"> 511 </span> :
-<span class="lineNum"> 512 </span><span class="lineCov"> 3 : pkgCache::VerIterator vi = impl-&gt;policy().GetCandidateVer(pi);</span>
-<span class="lineNum"> 513 </span><span class="lineCov"> 3 : if (vi.end())</span>
-<span class="lineNum"> 514 </span> : {
-<span class="lineNum"> 515 </span><span class="lineNoCov"> 0 : if (pi-&gt;CurrentVer == 0) return Version();</span>
-<span class="lineNum"> 516 </span><span class="lineNoCov"> 0 : vi = pi.CurrentVer();</span>
-<span class="lineNum"> 517 </span><span class="lineNoCov"> 0 : if (vi.end()) return Version();</span>
-<span class="lineNum"> 518 </span> : }
-<span class="lineNum"> 519 </span><span class="lineCov"> 3 : return Version(pkg, vi.VerStr());</span>
-<span class="lineNum"> 520 </span> : }
-<span class="lineNum"> 521 </span> :
-<span class="lineNum"> 522 </span><span class="lineCov"> 2 : PackageState Apt::state(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 523 </span> : {
-<span class="lineNum"> 524 </span><span class="lineCov"> 2 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(pkg);</span>
-<span class="lineNum"> 525 </span><span class="lineCov"> 2 : if (pi.end()) return PackageState();</span>
-<span class="lineNum"> 526 </span><span class="lineCov"> 1 : pkgDepCache::StateCache sc = impl-&gt;depcache()[pi];</span>
-<span class="lineNum"> 527 </span> :
-<span class="lineNum"> 528 </span><span class="lineCov"> 1 : unsigned int flags = PackageState::Valid;</span>
-<span class="lineNum"> 529 </span> :
-<span class="lineNum"> 530 </span> : // Check if the package is installed
-<span class="lineNum"> 531 </span><span class="lineCov"> 1 : if (pi-&gt;CurrentState != pkgCache::State::ConfigFiles &amp;&amp;</span>
-<span class="lineNum"> 532 </span> : pi-&gt;CurrentState != pkgCache::State::NotInstalled &amp;&amp;
-<span class="lineNum"> 533 </span> : pi-&gt;CurrentVer != 0)
-<span class="lineNum"> 534 </span> : {
-<span class="lineNum"> 535 </span> : // Try to get a VerIterator to the installed version
-<span class="lineNum"> 536 </span><span class="lineCov"> 1 : pkgCache::VerIterator inst = pi.CurrentVer();</span>
-<span class="lineNum"> 537 </span><span class="lineCov"> 1 : if (!inst.end())</span>
-<span class="lineNum"> 538 </span> : {
-<span class="lineNum"> 539 </span> : // If we made it so far, it is installed
-<span class="lineNum"> 540 </span><span class="lineCov"> 1 : flags |= PackageState::Installed;</span>
-<span class="lineNum"> 541 </span> :
-<span class="lineNum"> 542 </span> : // Now check if it is upgradable
-<span class="lineNum"> 543 </span><span class="lineCov"> 1 : pkgCache::VerIterator cand = impl-&gt;policy().GetCandidateVer(pi);</span>
-<span class="lineNum"> 544 </span> :
-<span class="lineNum"> 545 </span> : // If the candidate version is different than the installed one, then
-<span class="lineNum"> 546 </span> : // it is installable
-<span class="lineNum"> 547 </span><span class="lineCov"> 1 : if (!cand.end() &amp;&amp; inst != cand)</span>
-<span class="lineNum"> 548 </span><span class="lineNoCov"> 0 : flags |= PackageState::Upgradable;</span>
-<span class="lineNum"> 549 </span> : }
-<span class="lineNum"> 550 </span> : }
-<span class="lineNum"> 551 </span><span class="lineCov"> 1 : if (sc.Install())</span>
-<span class="lineNum"> 552 </span><span class="lineNoCov"> 0 : flags |= PackageState::Install;</span>
-<span class="lineNum"> 553 </span><span class="lineCov"> 1 : if ((sc.iFlags &amp; pkgDepCache::ReInstall) == pkgDepCache::ReInstall)</span>
-<span class="lineNum"> 554 </span><span class="lineNoCov"> 0 : flags |= PackageState::ReInstall;</span>
-<span class="lineNum"> 555 </span><span class="lineCov"> 1 : if (sc.Keep())</span>
-<span class="lineNum"> 556 </span><span class="lineCov"> 1 : flags |= PackageState::Keep;</span>
-<span class="lineNum"> 557 </span><span class="lineCov"> 1 : if (sc.Delete())</span>
-<span class="lineNum"> 558 </span><span class="lineNoCov"> 0 : flags |= PackageState::Remove;</span>
-<span class="lineNum"> 559 </span><span class="lineCov"> 1 : if ((sc.iFlags &amp; pkgDepCache::Purge) == pkgDepCache::Purge)</span>
-<span class="lineNum"> 560 </span><span class="lineNoCov"> 0 : flags |= PackageState::Purge;</span>
-<span class="lineNum"> 561 </span><span class="lineCov"> 1 : if (sc.NowBroken())</span>
-<span class="lineNum"> 562 </span><span class="lineNoCov"> 0 : flags |= PackageState::NowBroken;</span>
-<span class="lineNum"> 563 </span><span class="lineCov"> 1 : if (sc.InstBroken())</span>
-<span class="lineNum"> 564 </span><span class="lineNoCov"> 0 : flags |= PackageState::WillBreak;</span>
-<span class="lineNum"> 565 </span> :
-<span class="lineNum"> 566 </span><span class="lineCov"> 1 : return PackageState(flags);</span>
-<span class="lineNum"> 567 </span> : }
-<span class="lineNum"> 568 </span> :
-<span class="lineNum"> 569 </span><span class="lineCov"> 1 : std::string Apt::rawRecord(const std::string&amp; ver) const</span>
-<span class="lineNum"> 570 </span> : {
-<span class="lineNum"> 571 </span> : // TODO: possibly reimplement using a single lump of apt code, to avoid
-<span class="lineNum"> 572 </span> : // repeating lookups
-<span class="lineNum"> 573 </span><span class="lineCov"> 1 : return rawRecord(anyVersion(ver));</span>
-<span class="lineNum"> 574 </span> : }
-<span class="lineNum"> 575 </span> :
-<span class="lineNum"> 576 </span><span class="lineCov"> 4 : std::string Apt::rawRecord(const Version&amp; ver) const</span>
-<span class="lineNum"> 577 </span> : {
-<span class="lineNum"> 578 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl-&gt;cache().FindPkg(ver.name());</span>
-<span class="lineNum"> 579 </span><span class="lineCov"> 4 : if (pi.end()) return std::string();</span>
-<span class="lineNum"> 580 </span><span class="lineCov"> 5 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); vi++)</span>
-<span class="lineNum"> 581 </span> : {
-<span class="lineNum"> 582 </span><span class="lineCov"> 4 : const char* v = vi.VerStr();</span>
-<span class="lineNum"> 583 </span><span class="lineCov"> 4 : if (v == 0) continue;</span>
-<span class="lineNum"> 584 </span><span class="lineCov"> 4 : if (ver.version() == v)</span>
-<span class="lineNum"> 585 </span> : {
-<span class="lineNum"> 586 </span> : // Code taken and adapted from apt-cache's DisplayRecord
-<span class="lineNum"> 587 </span> :
-<span class="lineNum"> 588 </span> : // Find an appropriate file
-<span class="lineNum"> 589 </span><span class="lineCov"> 3 : pkgCache::VerFileIterator vfi = vi.FileList();</span>
-<span class="lineNum"> 590 </span><span class="lineCov"> 3 : for (; !vfi.end(); vfi++)</span>
-<span class="lineNum"> 591 </span><span class="lineCov"> 3 : if ((vfi.File()-&gt;Flags &amp; pkgCache::Flag::NotSource) == 0)</span>
-<span class="lineNum"> 592 </span><span class="lineCov"> 3 : break;</span>
-<span class="lineNum"> 593 </span><span class="lineCov"> 3 : if (vfi.end())</span>
-<span class="lineNum"> 594 </span><span class="lineNoCov"> 0 : vfi = vi.FileList();</span>
-<span class="lineNum"> 595 </span> :
-<span class="lineNum"> 596 </span> : // Check and load the package list file
-<span class="lineNum"> 597 </span><span class="lineCov"> 3 : pkgCache::PkgFileIterator pfi = vfi.File();</span>
-<span class="lineNum"> 598 </span><span class="lineCov"> 3 : if (!pfi.IsOk())</span>
-<span class="lineNum"> 599 </span><span class="lineNoCov"> 0 : throw Exception(string(&quot;Reading the data record for a package version from file &quot;) + pfi.FileName());</span>
-<span class="lineNum"> 600 </span> :
-<span class="lineNum"> 601 </span><span class="lineCov"> 3 : FileFd pkgf(pfi.FileName(), FileFd::ReadOnly);</span>
-<span class="lineNum"> 602 </span><span class="lineCov"> 6 : if (_error-&gt;PendingError() == true)</span>
-<span class="lineNum"> 603 </span><span class="lineNoCov"> 0 : return std::string();</span>
-<span class="lineNum"> 604 </span> :
-<span class="lineNum"> 605 </span> : // Read the record and then write it out again.
-<span class="lineNum"> 606 </span><span class="lineCov"> 3 : char* buffer = new char[vfi-&gt;Size+1];</span>
-<span class="lineNum"> 607 </span><span class="lineCov"> 3 : buffer[vfi-&gt;Size] = '\n';</span>
-<span class="lineNum"> 608 </span><span class="lineCov"> 3 : if (!pkgf.Seek(vfi-&gt;Offset) || !pkgf.Read(buffer, vfi-&gt;Size))</span>
-<span class="lineNum"> 609 </span> : {
-<span class="lineNum"> 610 </span><span class="lineNoCov"> 0 : delete[] buffer;</span>
-<span class="lineNum"> 611 </span><span class="lineNoCov"> 0 : return std::string();</span>
-<span class="lineNum"> 612 </span> : }
-<span class="lineNum"> 613 </span> :
-<span class="lineNum"> 614 </span><span class="lineCov"> 3 : std::string res(buffer, vfi-&gt;Size);</span>
-<span class="lineNum"> 615 </span><span class="lineCov"> 6 : delete[] buffer;</span>
-<span class="lineNum"> 616 </span><span class="lineCov"> 3 : return res;</span>
-<span class="lineNum"> 617 </span> : }
-<span class="lineNum"> 618 </span> : }
-<span class="lineNum"> 619 </span><span class="lineCov"> 1 : return std::string();</span>
-<span class="lineNum"> 620 </span> : }
-<span class="lineNum"> 621 </span> :
-<span class="lineNum"> 622 </span><span class="lineCov"> 2 : void Apt::checkCacheUpdates()</span>
-<span class="lineNum"> 623 </span> : {
-<span class="lineNum"> 624 </span><span class="lineCov"> 2 : if (impl-&gt;m_open_timestamp &lt; timestamp())</span>
-<span class="lineNum"> 625 </span> : {
-<span class="lineNum"> 626 </span> : // Crudely reopen everything
-<span class="lineNum"> 627 </span><span class="lineCov"> 1 : delete impl;</span>
-<span class="lineNum"> 628 </span><span class="lineCov"> 1 : impl = new AptImplementation;</span>
-<span class="lineNum"> 629 </span> : }
-<span class="lineNum"> 630 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 631 </span> :
-<span class="lineNum"> 632 </span><span class="lineCov"> 1 : void Apt::invalidateTimestamp()</span>
-<span class="lineNum"> 633 </span> : {
-<span class="lineNum"> 634 </span><span class="lineCov"> 1 : impl-&gt;m_open_timestamp = 0;</span>
-<span class="lineNum"> 635 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 636 </span> :
-<span class="lineNum"> 637 </span> : }
-<span class="lineNum"> 638 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 639 </span> :
-<span class="lineNum"> 640 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/apt.h.gcov.html b/rep/ept/apt/apt.h.gcov.html
deleted file mode 100644
index 7bde4c7..0000000
--- a/rep/ept/apt/apt.h.gcov.html
+++ /dev/null
@@ -1,286 +0,0 @@
-<!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/apt/apt.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">6</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">50.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">3</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> : #ifndef EPT_APT_APT_H
-<span class="lineNum"> 3 </span> : #define EPT_APT_APT_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /** \file
-<span class="lineNum"> 6 </span> : * High-level front-end to libapt-pkg, as a data provider for the ept framework.
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2007,2008 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 13 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 14 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 15 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 20 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 23 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;ept/apt/version.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;iterator&gt;
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : namespace ept {
-<span class="lineNum"> 34 </span> : namespace apt {
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : class Exception : public wibble::exception::Generic
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span> : protected:
-<span class="lineNum"> 39 </span> : std::string m_message;
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : public:
-<span class="lineNum"> 42 </span> : Exception(const std::string&amp; context) throw ();
-<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : ~Exception() throw () {}</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : virtual const char* type() const throw () { return &quot;Apt&quot;; }</span>
-<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : virtual std::string desc() const throw () { return m_message; }</span>
-<span class="lineNum"> 47 </span> : };
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span> : class Apt;
-<span class="lineNum"> 50 </span> : class AptImplementation;
-<span class="lineNum"> 51 </span> : class RecordIteratorImpl;
-<span class="lineNum"> 52 </span> : using core::PackageState;
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span> : /**
-<span class="lineNum"> 55 </span> : * High-level access to the Apt cache, as a data provider for the ept
-<span class="lineNum"> 56 </span> : * framework.
-<span class="lineNum"> 57 </span> : *
-<span class="lineNum"> 58 </span> : * This class wraps the Apt cache and allows to query it in various ways.
-<span class="lineNum"> 59 </span> : */
-<span class="lineNum"> 60 </span> : class Apt
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span> : protected:
-<span class="lineNum"> 63 </span> : AptImplementation* impl;
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : public:
-<span class="lineNum"> 66 </span> : // Iterate Packages in the Apt cache
-<span class="lineNum"> 67 </span> : class Iterator : public std::iterator&lt;std::input_iterator_tag, std::string, void, void, void&gt;
-<span class="lineNum"> 68 </span> : {
-<span class="lineNum"> 69 </span> : void* cur;
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : protected:
-<span class="lineNum"> 72 </span> : // Construct a valid iterator
-<span class="lineNum"> 73 </span><span class="lineCov"> 4 : Iterator(void* cur) : cur(cur) {}</span>
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : // Construct and end iterator
-<span class="lineNum"> 76 </span><span class="lineCov"> 3581 : Iterator() : cur(0) {}</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span> : public:
-<span class="lineNum"> 79 </span> : // Copy constructor
-<span class="lineNum"> 80 </span> : Iterator(const Iterator&amp;);
-<span class="lineNum"> 81 </span> : ~Iterator();
-<span class="lineNum"> 82 </span> : std::string operator*();
-<span class="lineNum"> 83 </span> : Iterator&amp; operator++();
-<span class="lineNum"> 84 </span> : Iterator&amp; operator=(const Iterator&amp;);
-<span class="lineNum"> 85 </span> : bool operator==(const Iterator&amp;) const;
-<span class="lineNum"> 86 </span> : bool operator!=(const Iterator&amp;) const;
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : // FIXME: Iterator operator++(int); cannot be easily implemented
-<span class="lineNum"> 89 </span> : // because of how Apt's pkgIterator works
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span> : friend class Apt;
-<span class="lineNum"> 92 </span> : };
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : // Iterate Package records in the Apt cache
-<span class="lineNum"> 95 </span> : class RecordIterator : public std::iterator&lt;std::input_iterator_tag, std::string, void, void, void&gt;
-<span class="lineNum"> 96 </span> : {
-<span class="lineNum"> 97 </span> : RecordIteratorImpl* impl;
-<span class="lineNum"> 98 </span> : size_t pos;
-<span class="lineNum"> 99 </span> : std::string cur;
-<span class="lineNum"> 100 </span> : size_t cur_pos;
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span> : protected:
-<span class="lineNum"> 103 </span> : // Construct a valid iterator
-<span class="lineNum"> 104 </span> : RecordIterator(RecordIteratorImpl* cur, size_t pos = 0);
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : // Construct and end iterator
-<span class="lineNum"> 107 </span><span class="lineCov"> 3481 : RecordIterator() : impl(0), pos(0), cur_pos(0) {}</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : public:
-<span class="lineNum"> 110 </span> : // Copy constructor
-<span class="lineNum"> 111 </span> : RecordIterator(const RecordIterator&amp; r);
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : ~RecordIterator();
-<span class="lineNum"> 114 </span> : std::string operator*();
-<span class="lineNum"> 115 </span> : std::string* operator-&gt;();
-<span class="lineNum"> 116 </span> : RecordIterator&amp; operator++();
-<span class="lineNum"> 117 </span> : RecordIterator&amp; operator=(const RecordIterator&amp; r);
-<span class="lineNum"> 118 </span> : bool operator==(const RecordIterator&amp;) const;
-<span class="lineNum"> 119 </span> : bool operator!=(const RecordIterator&amp;) const;
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span> : // FIXME: Iterator operator++(int); cannot be easily implemented
-<span class="lineNum"> 122 </span> : // because of how Apt's pkgIterator works
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span> : friend class Apt;
-<span class="lineNum"> 125 </span> : };
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : typedef Iterator iterator;
-<span class="lineNum"> 128 </span> : typedef RecordIterator record_iterator;
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span> : /**
-<span class="lineNum"> 131 </span> : * Create the Apt data provider
-<span class="lineNum"> 132 </span> : */
-<span class="lineNum"> 133 </span> : Apt();
-<span class="lineNum"> 134 </span> : ~Apt();
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> : iterator begin() const;
-<span class="lineNum"> 137 </span> : iterator end() const;
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : record_iterator recordBegin() const;
-<span class="lineNum"> 140 </span> : record_iterator recordEnd() const;
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span> :
-<span class="lineNum"> 143 </span> : /// Return the number of packages in the archive
-<span class="lineNum"> 144 </span> : size_t size() const;
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span> : /**
-<span class="lineNum"> 147 </span> : * Validate a package name, returning trye if it exists in the APT database,
-<span class="lineNum"> 148 </span> : * or false if it does not.
-<span class="lineNum"> 149 </span> : */
-<span class="lineNum"> 150 </span> : bool isValid(const std::string&amp; pkg) const;
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span> : /// Validate a package name, returning it if it exists in the APT database,
-<span class="lineNum"> 153 </span> : /// or returning the empty string if it does not.
-<span class="lineNum"> 154 </span> : std::string validate(const std::string&amp; pkg) const
-<span class="lineNum"> 155 </span> : {
-<span class="lineNum"> 156 </span> : if (isValid(pkg))
-<span class="lineNum"> 157 </span> : return pkg;
-<span class="lineNum"> 158 </span> : return std::string();
-<span class="lineNum"> 159 </span> : }
-<span class="lineNum"> 160 </span> :
-<span class="lineNum"> 161 </span> : /// Validate a Version, returning it if it exists in the APT database, or
-<span class="lineNum"> 162 </span> : /// returning the invalid version if it does not.
-<span class="lineNum"> 163 </span> : Version validate(const Version&amp; ver) const;
-<span class="lineNum"> 164 </span> :
-<span class="lineNum"> 165 </span> : /// Return the installed version for a package
-<span class="lineNum"> 166 </span> : Version installedVersion(const std::string&amp; pkg) const;
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span> : /// Return the candidate version for a package
-<span class="lineNum"> 169 </span> : Version candidateVersion(const std::string&amp; pkg) const;
-<span class="lineNum"> 170 </span> :
-<span class="lineNum"> 171 </span> : /**
-<span class="lineNum"> 172 </span> : * Return the candidate version for a package, if available, or the
-<span class="lineNum"> 173 </span> : * installed version otherwise
-<span class="lineNum"> 174 </span> : */
-<span class="lineNum"> 175 </span> : Version anyVersion(const std::string&amp; pkg) const;
-<span class="lineNum"> 176 </span> :
-<span class="lineNum"> 177 </span> : /// Return state information on a package
-<span class="lineNum"> 178 </span> : PackageState state(const std::string&amp; pkg) const;
-<span class="lineNum"> 179 </span> :
-<span class="lineNum"> 180 </span> : /**
-<span class="lineNum"> 181 </span> : * Perform a package search.
-<span class="lineNum"> 182 </span> : *
-<span class="lineNum"> 183 </span> : * All packages for which the functor filter returns true, are passed to
-<span class="lineNum"> 184 </span> : * the functor out.
-<span class="lineNum"> 185 </span> : */
-<span class="lineNum"> 186 </span> : //template&lt;typename FILTER, typename OUT&gt;
-<span class="lineNum"> 187 </span> : //void search(const FILTER&amp; filter, OUT&amp; out);
-<span class="lineNum"> 188 </span> :
-<span class="lineNum"> 189 </span> : /// Get the raw package record for the given Version
-<span class="lineNum"> 190 </span> : std::string rawRecord(const std::string&amp; pkg) const;
-<span class="lineNum"> 191 </span> :
-<span class="lineNum"> 192 </span> : /// Get the raw package record for the given Version
-<span class="lineNum"> 193 </span> : std::string rawRecord(const Version&amp; ver) const;
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span> : /// Timestamp of when the apt index was last modified
-<span class="lineNum"> 196 </span> : time_t timestamp();
-<span class="lineNum"> 197 </span> :
-<span class="lineNum"> 198 </span> : /**
-<span class="lineNum"> 199 </span> : * Check if the cache has been changed by another process, and reopen it if
-<span class="lineNum"> 200 </span> : * that is the case.
-<span class="lineNum"> 201 </span> : *
-<span class="lineNum"> 202 </span> : * Note that this method can invalidate all existing iterators.
-<span class="lineNum"> 203 </span> : */
-<span class="lineNum"> 204 </span> : void checkCacheUpdates();
-<span class="lineNum"> 205 </span> :
-<span class="lineNum"> 206 </span> : /**
-<span class="lineNum"> 207 </span> : * Invalidate the cache timestamp used to track cache updates.
-<span class="lineNum"> 208 </span> : *
-<span class="lineNum"> 209 </span> : * @warning Do not use this method: it is here only to support the test
-<span class="lineNum"> 210 </span> : * cases, and may disappear in any future version.
-<span class="lineNum"> 211 </span> : */
-<span class="lineNum"> 212 </span> : void invalidateTimestamp();
-<span class="lineNum"> 213 </span> : };
-<span class="lineNum"> 214 </span> :
-<span class="lineNum"> 215 </span> : }
-<span class="lineNum"> 216 </span> : }
-<span class="lineNum"> 217 </span> :
-<span class="lineNum"> 218 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 219 </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>
diff --git a/rep/ept/apt/apt.test.h.gcov.html b/rep/ept/apt/apt.test.h.gcov.html
deleted file mode 100644
index cd79123..0000000
--- a/rep/ept/apt/apt.test.h.gcov.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!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/apt/apt.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">99</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">99</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> : /*
-<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 12 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 17 </span> : */
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 20 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 21 </span> : #include &lt;set&gt;
-<span class="lineNum"> 22 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : using namespace std;
-<span class="lineNum"> 25 </span> : using namespace ept;
-<span class="lineNum"> 26 </span> : using namespace ept::apt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span><span class="lineCov"> 26 : struct TestApt : AptTestEnvironment {</span>
-<span class="lineNum"> 29 </span> : Apt apt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : // Check that iterations iterates among some packages
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : Test iterators()</span>
-<span class="lineNum"> 33 </span> : {
-<span class="lineNum"> 34 </span><span class="lineCov"> 1 : Apt::iterator i = apt.begin();</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : assert(i != apt.end());</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span><span class="lineCov"> 1 : size_t count = 0;</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 1789 : for (; i != apt.end(); ++i)</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 1788 : ++count;</span>
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 1 : assert(count &gt; 100);</span>
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span> : // Check that iteration gives some well-known packages
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : Test aptExists()</span>
-<span class="lineNum"> 46 </span> : {
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : set&lt;string&gt; packages;</span>
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : std::copy(apt.begin(), apt.end(), inserter(packages, packages.begin()));</span>
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : assert(packages.find(&quot;libsp1&quot;) != packages.end());</span>
-<span class="lineNum"> 52 </span> : // TODO this exposes a bug somewhere... sp definitely is among
-<span class="lineNum"> 53 </span> : // the packages
-<span class="lineNum"> 54 </span> : // assert(packages.find(&quot;sp&quot;) != packages.end());
-<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert(packages.find(&quot;&quot;) == packages.end());</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : // Check that timestamp gives some meaningful timestamp
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : Test timestamp()</span>
-<span class="lineNum"> 60 </span> : {
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : time_t ts = apt.timestamp();</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : assert(ts &gt; 1000000);</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : // Check the package validator
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Test validity()</span>
-<span class="lineNum"> 67 </span> : {
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : assert(apt.isValid(&quot;apt&quot;));</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(!apt.isValid(&quot;this-package-does-not-really-exists&quot;));</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : // Check the version instantiators
-<span class="lineNum"> 73 </span><span class="lineCov"> 1 : Test versions()</span>
-<span class="lineNum"> 74 </span> : {
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : std::string pkg(&quot;apt&quot;);</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion(pkg);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : assert(ver.isValid());</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span><span class="lineCov"> 2 : ver = apt.installedVersion(pkg);</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 1 : assert(ver.isValid());</span>
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span><span class="lineCov"> 2 : ver = apt.anyVersion(pkg);</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 1 : assert(ver.isValid());</span>
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineCov"> 2 : std::string pkg1(&quot;this-package-does-not-really-exists&quot;);</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 2 : ver = apt.candidateVersion(pkg1);</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : ver = apt.installedVersion(pkg1);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span>
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 2 : ver = apt.anyVersion(pkg1);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 95 </span> :
-<span class="lineNum"> 96 </span> : // Check the version validator
-<span class="lineNum"> 97 </span><span class="lineCov"> 1 : Test versionValidity()</span>
-<span class="lineNum"> 98 </span> : {
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion(&quot;apt&quot;);</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 2 : assert(apt.validate(ver) == ver);</span>
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : ver = Version(&quot;this-package-does-not-really-exists&quot;, &quot;0.1&quot;);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert(!apt.validate(ver).isValid());</span>
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : ver = Version(&quot;apt&quot;, &quot;0.31415&quot;);</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 2 : assert(!apt.validate(ver).isValid());</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : // Check the raw record accessor
-<span class="lineNum"> 110 </span><span class="lineCov"> 1 : Test rawRecord()</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : string pkg(&quot;sp&quot;);</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion(pkg);</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert(apt.validate(ver) == ver);</span>
-<span class="lineNum"> 115 </span> :
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : string record = apt.rawRecord(ver);</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 1 : assert(record.find(&quot;Package: sp&quot;) != string::npos);</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 2 : assert(record.find(&quot;Section: text&quot;) != string::npos);</span>
-<span class="lineNum"> 119 </span> :
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : record = apt.rawRecord(Version(&quot;sp&quot;, &quot;0.31415&quot;));</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 2 : assert_eq(record, string());</span>
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : assert_eq(apt.rawRecord(pkg), apt.rawRecord(apt.anyVersion(pkg)));</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 125 </span> :
-<span class="lineNum"> 126 </span> : // Check the package state accessor
-<span class="lineNum"> 127 </span><span class="lineCov"> 1 : Test state()</span>
-<span class="lineNum"> 128 </span> : {
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : PackageState s = apt.state(&quot;kdenetwork&quot;);</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert(s.isValid());</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 2 : assert(s.isInstalled());</span>
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span><span class="lineCov"> 2 : s = apt.state(&quot;this-package-does-not-really-exists&quot;);</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 2 : assert(!s.isValid());</span>
-<span class="lineNum"> 135 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : // Check the record iterator (accessing with *)
-<span class="lineNum"> 138 </span><span class="lineCov"> 1 : Test recordIteration()</span>
-<span class="lineNum"> 139 </span> : {
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : size_t count = 0;</span>
-<span class="lineNum"> 141 </span><span class="lineCov"> 435 : for (Apt::record_iterator i = apt.recordBegin();</span>
-<span class="lineNum"> 142 </span> : i != apt.recordEnd(); ++i)
-<span class="lineNum"> 143 </span> : {
-<span class="lineNum"> 144 </span><span class="lineCov"> 434 : assert((*i).size() &gt; 8);</span>
-<span class="lineNum"> 145 </span><span class="lineCov"> 434 : assert_eq((*i).substr(0, 8), &quot;Package:&quot;);</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 434 : ++count;</span>
-<span class="lineNum"> 147 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 2 : assert(count &gt; 200);</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 150 </span> :
-<span class="lineNum"> 151 </span> : // Check the record iterator (accessing with -&gt;)
-<span class="lineNum"> 152 </span><span class="lineCov"> 1 : Test recordIteration2()</span>
-<span class="lineNum"> 153 </span> : {
-<span class="lineNum"> 154 </span><span class="lineCov"> 1 : size_t count = 0;</span>
-<span class="lineNum"> 155 </span><span class="lineCov"> 435 : for (Apt::record_iterator i = apt.recordBegin();</span>
-<span class="lineNum"> 156 </span> : i != apt.recordEnd(); ++i)
-<span class="lineNum"> 157 </span> : {
-<span class="lineNum"> 158 </span><span class="lineCov"> 434 : assert(i-&gt;size() &gt; 8);</span>
-<span class="lineNum"> 159 </span><span class="lineCov"> 868 : assert_eq(i-&gt;substr(0, 8), &quot;Package:&quot;);</span>
-<span class="lineNum"> 160 </span><span class="lineCov"> 434 : ++count;</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 2 : assert(count &gt; 200);</span>
-<span class="lineNum"> 163 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 164 </span> :
-<span class="lineNum"> 165 </span> : // Check that the iterators can be used with the algorithms
-<span class="lineNum"> 166 </span><span class="lineCov"> 1 : Test stlIteration()</span>
-<span class="lineNum"> 167 </span> : {
-<span class="lineNum"> 168 </span><span class="lineCov"> 1 : vector&lt;string&gt; out;</span>
-<span class="lineNum"> 169 </span><span class="lineCov"> 1 : std::copy(apt.begin(), apt.end(), back_inserter(out));</span>
-<span class="lineNum"> 170 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 171 </span> :
-<span class="lineNum"> 172 </span> : // Check that the iterators can be used with the algorithms
-<span class="lineNum"> 173 </span><span class="lineCov"> 1 : Test stlRecordIteration()</span>
-<span class="lineNum"> 174 </span> : {
-<span class="lineNum"> 175 </span><span class="lineCov"> 1 : vector&lt;string&gt; out;</span>
-<span class="lineNum"> 176 </span><span class="lineCov"> 1 : std::copy(apt.recordBegin(), apt.recordEnd(), back_inserter(out));</span>
-<span class="lineNum"> 177 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 178 </span> :
-<span class="lineNum"> 179 </span> : // Check that checkUpdates will keep a working Apt object
-<span class="lineNum"> 180 </span><span class="lineCov"> 1 : Test checkUpdates()</span>
-<span class="lineNum"> 181 </span> : {
-<span class="lineNum"> 182 </span><span class="lineCov"> 1 : assert(apt.isValid(&quot;apt&quot;));</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 1 : apt.checkCacheUpdates();</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 2 : assert(apt.isValid(&quot;apt&quot;));</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 1 : apt.invalidateTimestamp(); </span>
-<span class="lineNum"> 186 </span><span class="lineCov"> 1 : apt.checkCacheUpdates();</span>
-<span class="lineNum"> 187 </span><span class="lineCov"> 2 : assert(apt.isValid(&quot;apt&quot;));</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 189 </span> :
-<span class="lineNum"> 190 </span> : };
-<span class="lineNum"> 191 </span> :
-<span class="lineNum"> 192 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/index.html b/rep/ept/apt/index.html
deleted file mode 100644
index 9a94d3e..0000000
--- a/rep/ept/apt/index.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!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/apt</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/apt</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">880</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">89.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">785</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.cc.gcov.html">apt.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=77 height=10 alt="76.8%"><img src="../../snow.png" width=23 height=10 alt="76.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">76.8&nbsp;%</td>
- <td class="coverNumHi">248&nbsp;/&nbsp;323&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.h.gcov.html">apt.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=50 height=10 alt="50.0%"><img src="../../snow.png" width=50 height=10 alt="50.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">50.0&nbsp;%</td>
- <td class="coverNumHi">3&nbsp;/&nbsp;6&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.test.h.gcov.html">apt.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">99&nbsp;/&nbsp;99&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="packagerecord.cc.gcov.html">packagerecord.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=91 height=10 alt="90.9%"><img src="../../snow.png" width=9 height=10 alt="90.9%"></td></tr></table>
- </td>
- <td class="coverPerHi">90.9&nbsp;%</td>
- <td class="coverNumHi">40&nbsp;/&nbsp;44&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="packagerecord.h.gcov.html">packagerecord.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=95 height=10 alt="95.4%"><img src="../../snow.png" width=5 height=10 alt="95.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">95.4&nbsp;%</td>
- <td class="coverNumHi">62&nbsp;/&nbsp;65&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="packagerecord.test.h.gcov.html">packagerecord.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=88 height=10 alt="88.5%"><img src="../../snow.png" width=12 height=10 alt="88.5%"></td></tr></table>
- </td>
- <td class="coverPerHi">88.5&nbsp;%</td>
- <td class="coverNumHi">46&nbsp;/&nbsp;52&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="recordparser.cc.gcov.html">recordparser.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">62&nbsp;/&nbsp;62&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="recordparser.h.gcov.html">recordparser.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">8&nbsp;/&nbsp;8&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="recordparser.test.h.gcov.html">recordparser.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">107&nbsp;/&nbsp;107&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="version.cc.gcov.html">version.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=88 height=10 alt="88.2%"><img src="../../snow.png" width=12 height=10 alt="88.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">88.2&nbsp;%</td>
- <td class="coverNumHi">30&nbsp;/&nbsp;34&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="version.h.gcov.html">version.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">9&nbsp;/&nbsp;9&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="version.test.h.gcov.html">version.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">71&nbsp;/&nbsp;71&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/apt/packagerecord.cc.gcov.html b/rep/ept/apt/packagerecord.cc.gcov.html
deleted file mode 100644
index bf04344..0000000
--- a/rep/ept/apt/packagerecord.cc.gcov.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<!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/apt/packagerecord.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">44</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">90.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">40</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> : /** \file
-<span class="lineNum"> 2 </span> : * Parser for APT records, with specialised accessors for package records
-<span class="lineNum"> 3 </span> : */
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /*
-<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : *
-<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 16 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 21 </span> : */
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;ept/apt/packagerecord.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;cctype&gt;
-<span class="lineNum"> 26 </span> : #include &lt;cstdlib&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : using namespace std;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : namespace ept {
-<span class="lineNum"> 33 </span> : namespace apt {
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span><span class="lineCov"> 5210 : size_t PackageRecord::parseSize(size_t def, const std::string&amp; str) const</span>
-<span class="lineNum"> 36 </span> : {
-<span class="lineNum"> 37 </span><span class="lineCov"> 5210 : if (str == string())</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 54 : return def;</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 5156 : return (size_t)strtoul(str.c_str(), NULL, 10);</span>
-<span class="lineNum"> 40 </span> : }
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : std::string PackageRecord::parseShortDescription(const std::string&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : if (str == std::string())</span>
-<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 1 : size_t pos = str.find(&quot;\n&quot;);</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span>
-<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return str;</span>
-<span class="lineNum"> 49 </span> : else
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : return str.substr(0, pos);</span>
-<span class="lineNum"> 51 </span> : }
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : std::string PackageRecord::parseLongDescription(const std::string&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 54 </span> : {
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : if (str == std::string())</span>
-<span class="lineNum"> 56 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : size_t pos = str.find(&quot;\n&quot;);</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span>
-<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : return str;</span>
-<span class="lineNum"> 60 </span> : else
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span> : // Trim trailing spaces
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : for (++pos; pos &lt; str.size() &amp;&amp; isspace(str[pos]); ++pos)</span>
-<span class="lineNum"> 64 </span> : ;
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : return str.substr(pos);</span>
-<span class="lineNum"> 66 </span> : }
-<span class="lineNum"> 67 </span> : }
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineCov"> 2605 : std::set&lt;std::string&gt; PackageRecord::parseTags(const std::set&lt;std::string&gt;&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span><span class="lineCov"> 2605 : if (str == string())</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 2604 : return def;</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : set&lt;string&gt; res;</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : size_t pos = 0;</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 13 : while (pos &lt; str.size())</span>
-<span class="lineNum"> 78 </span> : {
-<span class="lineNum"> 79 </span><span class="lineCov"> 12 : string tag;</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 12 : size_t i = str.find(&quot;, &quot;, pos);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 12 : if (i == string::npos)</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : tag = str.substr(pos);</span>
-<span class="lineNum"> 83 </span> : else
-<span class="lineNum"> 84 </span><span class="lineCov"> 11 : tag = str.substr(pos, i-pos);</span>
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span> : // Check if we need curly brace expansion
-<span class="lineNum"> 87 </span><span class="lineCov"> 12 : if (tag[tag.size() - 1] == '}')</span>
-<span class="lineNum"> 88 </span> : {
-<span class="lineNum"> 89 </span><span class="lineCov"> 1 : size_t begin = tag.find('{');</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : if (begin != string::npos)</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : string prefix(tag, 0, begin);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : ++begin;</span>
-<span class="lineNum"> 94 </span> : size_t end;
-<span class="lineNum"> 95 </span><span class="lineCov"> 4 : while ((end = tag.find(',', begin)) != string::npos)</span>
-<span class="lineNum"> 96 </span> : {
-<span class="lineNum"> 97 </span><span class="lineCov"> 2 : res.insert(prefix + tag.substr(begin, end-begin));</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 2 : begin = end + 1;</span>
-<span class="lineNum"> 99 </span> : }
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : res.insert(prefix + tag.substr(begin, tag.size() - 1 - begin));</span>
-<span class="lineNum"> 101 </span> : }
-<span class="lineNum"> 102 </span> : } else {
-<span class="lineNum"> 103 </span><span class="lineCov"> 11 : res.insert(tag);</span>
-<span class="lineNum"> 104 </span> : }
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineCov"> 12 : if (i == string::npos)</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : break;</span>
-<span class="lineNum"> 108 </span> : else
-<span class="lineNum"> 109 </span><span class="lineCov"> 11 : pos = i + 2;</span>
-<span class="lineNum"> 110 </span> : }
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : return res;</span>
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span> : }
-<span class="lineNum"> 116 </span> : }
-<span class="lineNum"> 117 </span> :
-<span class="lineNum"> 118 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/packagerecord.h.gcov.html b/rep/ept/apt/packagerecord.h.gcov.html
deleted file mode 100644
index afd295c..0000000
--- a/rep/ept/apt/packagerecord.h.gcov.html
+++ /dev/null
@@ -1,243 +0,0 @@
-<!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/apt/packagerecord.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">65</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">95.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">62</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> : #ifndef EPT_APT_PACKAGERECORD_H
-<span class="lineNum"> 2 </span> : #define EPT_APT_PACKAGERECORD_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** \file
-<span class="lineNum"> 5 </span> : * Parser for APT records, with specialised accessors for package records
-<span class="lineNum"> 6 </span> : */
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : /*
-<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 19 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/apt/recordparser.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;set&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace apt {
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : /**
-<span class="lineNum"> 33 </span> : * RecordParser specialised with access methods for common Debian package
-<span class="lineNum"> 34 </span> : * information.
-<span class="lineNum"> 35 </span> : */
-<span class="lineNum"> 36 </span> : class PackageRecord : public RecordParser
-<span class="lineNum"> 37 </span><span class="lineCov"> 7 : {</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : bool parseBool(bool&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 39 </span> : {
-<span class="lineNum"> 40 </span> : // Believe it or not, this is what apt does to interpret bool fields
-<span class="lineNum"> 41 </span><span class="lineCov"> 1 : if (str == &quot;no&quot; || str == &quot;false&quot; || str == &quot;without&quot; ||</span>
-<span class="lineNum"> 42 </span> : str == &quot;off&quot; || str == &quot;disable&quot;)
-<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : if (str == &quot;yes&quot; || str == &quot;true&quot; || str == &quot;with&quot; ||</span>
-<span class="lineNum"> 46 </span> : str == &quot;on&quot; || str == &quot;enable&quot;)
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 50 </span> : }
-<span class="lineNum"> 51 </span><span class="lineCov"> 10436 : std::string parseString(const std::string&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 10436 : if (str == std::string())</span>
-<span class="lineNum"> 54 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 10436 : return str;</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span> : std::string parseShortDescription(const std::string&amp; def, const std::string&amp; str) const;
-<span class="lineNum"> 58 </span> : std::string parseLongDescription(const std::string&amp; def, const std::string&amp; str) const;
-<span class="lineNum"> 59 </span> : size_t parseSize(size_t def, const std::string&amp; str) const;
-<span class="lineNum"> 60 </span> : std::set&lt;std::string&gt; parseTags(const std::set&lt;std::string&gt;&amp; def, const std::string&amp; str) const;
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : public:
-<span class="lineNum"> 63 </span><span class="lineCov"> 6 : PackageRecord() : RecordParser() {}</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 1 : PackageRecord(const std::string&amp; str) : RecordParser(str) {}</span>
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 7813 : std::string package(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 67 </span> : {
-<span class="lineNum"> 68 </span><span class="lineCov"> 7813 : return parseString(def, lookup(&quot;Package&quot;));</span>
-<span class="lineNum"> 69 </span> : }
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : std::string priority(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 71 </span> : {
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Priority&quot;));</span>
-<span class="lineNum"> 73 </span> : }
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : std::string section(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 75 </span> : {
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Section&quot;));</span>
-<span class="lineNum"> 77 </span> : }
-<span class="lineNum"> 78 </span><span class="lineCov"> 2605 : size_t installedSize(size_t def = 0) const</span>
-<span class="lineNum"> 79 </span> : {
-<span class="lineNum"> 80 </span><span class="lineCov"> 2605 : return parseSize(def, lookup(&quot;Installed-Size&quot;));</span>
-<span class="lineNum"> 81 </span> : }
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : std::string maintainer(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 83 </span> : {
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Maintainer&quot;));</span>
-<span class="lineNum"> 85 </span> : }
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : std::string architecture(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Architecture&quot;));</span>
-<span class="lineNum"> 89 </span> : }
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : std::string source(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Source&quot;));</span>
-<span class="lineNum"> 93 </span> : }
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : std::string version(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 95 </span> : {
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Version&quot;));</span>
-<span class="lineNum"> 97 </span> : }
-<span class="lineNum"> 98 </span><span class="lineCov"> 1 : std::string replaces(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 99 </span> : {
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Replaces&quot;));</span>
-<span class="lineNum"> 101 </span> : }
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : std::string depends(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Depends&quot;));</span>
-<span class="lineNum"> 105 </span> : }
-<span class="lineNum"> 106 </span><span class="lineCov"> 1 : std::string preDepends(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 107 </span> : {
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Pre-Depends&quot;));</span>
-<span class="lineNum"> 109 </span> : }
-<span class="lineNum"> 110 </span><span class="lineCov"> 1 : std::string recommends(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Recommends&quot;));</span>
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : std::string suggests(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 115 </span> : {
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Suggests&quot;));</span>
-<span class="lineNum"> 117 </span> : }
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::string enhances(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Enhances&quot;));</span>
-<span class="lineNum"> 121 </span> : }
-<span class="lineNum"> 122 </span><span class="lineCov"> 1 : std::string provides(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 123 </span> : {
-<span class="lineNum"> 124 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Provides&quot;));</span>
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span><span class="lineCov"> 1 : std::string conflicts(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 127 </span> : {
-<span class="lineNum"> 128 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Conflicts&quot;));</span>
-<span class="lineNum"> 129 </span> : }
-<span class="lineNum"> 130 </span><span class="lineCov"> 1 : std::string filename(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 131 </span> : {
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;Filename&quot;));</span>
-<span class="lineNum"> 133 </span> : }
-<span class="lineNum"> 134 </span><span class="lineCov"> 2605 : size_t packageSize(size_t def = 0) const</span>
-<span class="lineNum"> 135 </span> : {
-<span class="lineNum"> 136 </span><span class="lineCov"> 2605 : return parseSize(def, lookup(&quot;Size&quot;));</span>
-<span class="lineNum"> 137 </span> : }
-<span class="lineNum"> 138 </span><span class="lineCov"> 1 : std::string md5sum(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 139 </span> : {
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;MD5sum&quot;));</span>
-<span class="lineNum"> 141 </span> : }
-<span class="lineNum"> 142 </span><span class="lineCov"> 1 : std::string sha1(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 143 </span> : {
-<span class="lineNum"> 144 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;SHA1&quot;));</span>
-<span class="lineNum"> 145 </span> : }
-<span class="lineNum"> 146 </span><span class="lineCov"> 1 : std::string sha256(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 147 </span> : {
-<span class="lineNum"> 148 </span><span class="lineCov"> 1 : return parseString(def, lookup(&quot;SHA256&quot;));</span>
-<span class="lineNum"> 149 </span> : }
-<span class="lineNum"> 150 </span><span class="lineCov"> 2605 : std::string description(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 151 </span> : {
-<span class="lineNum"> 152 </span><span class="lineCov"> 2605 : return parseString(def, lookup(&quot;Description&quot;));</span>
-<span class="lineNum"> 153 </span> : }
-<span class="lineNum"> 154 </span><span class="lineCov"> 1 : std::string shortDescription(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 155 </span> : {
-<span class="lineNum"> 156 </span><span class="lineCov"> 1 : return parseShortDescription(def, lookup(&quot;Description&quot;));</span>
-<span class="lineNum"> 157 </span> : }
-<span class="lineNum"> 158 </span><span class="lineCov"> 1 : std::string longDescription(const std::string&amp; def = std::string()) const</span>
-<span class="lineNum"> 159 </span> : {
-<span class="lineNum"> 160 </span><span class="lineCov"> 1 : return parseLongDescription(def, lookup(&quot;Description&quot;));</span>
-<span class="lineNum"> 161 </span> : }
-<span class="lineNum"> 162 </span><span class="lineCov"> 1 : bool buildEssential(bool def = false) const</span>
-<span class="lineNum"> 163 </span> : {
-<span class="lineNum"> 164 </span><span class="lineCov"> 1 : return parseBool(def, lookup(&quot;Build-Essential&quot;));</span>
-<span class="lineNum"> 165 </span> : }
-<span class="lineNum"> 166 </span><span class="lineCov"> 2605 : std::set&lt;std::string&gt; tag(const std::set&lt;std::string&gt;&amp; def = std::set&lt;std::string&gt;()) const</span>
-<span class="lineNum"> 167 </span> : {
-<span class="lineNum"> 168 </span><span class="lineCov"> 2605 : return parseTags(def, lookup(&quot;Tag&quot;));</span>
-<span class="lineNum"> 169 </span> : }
-<span class="lineNum"> 170 </span> : };
-<span class="lineNum"> 171 </span> :
-<span class="lineNum"> 172 </span> : }
-<span class="lineNum"> 173 </span> : }
-<span class="lineNum"> 174 </span> :
-<span class="lineNum"> 175 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 176 </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>
diff --git a/rep/ept/apt/packagerecord.test.h.gcov.html b/rep/ept/apt/packagerecord.test.h.gcov.html
deleted file mode 100644
index c2c2709..0000000
--- a/rep/ept/apt/packagerecord.test.h.gcov.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!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/apt/packagerecord.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">52</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">88.5 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">46</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> : /*
-<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 12 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 17 </span> : */
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 20 </span> : #include &lt;ept/apt/packagerecord.h&gt;
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : namespace std {
-<span class="lineNum"> 23 </span><span class="lineNoCov"> 0 : ostream&amp; operator&lt;&lt;(ostream&amp; out, const set&lt;string&gt;&amp; s)</span>
-<span class="lineNum"> 24 </span> : {
-<span class="lineNum"> 25 </span><span class="lineNoCov"> 0 : for (set&lt;string&gt;::const_iterator i = s.begin();</span>
-<span class="lineNum"> 26 </span> : i != s.end(); ++i)
-<span class="lineNum"> 27 </span><span class="lineNoCov"> 0 : if (i == s.begin())</span>
-<span class="lineNum"> 28 </span><span class="lineNoCov"> 0 : out &lt;&lt; *i;</span>
-<span class="lineNum"> 29 </span> : else
-<span class="lineNum"> 30 </span><span class="lineNoCov"> 0 : out &lt;&lt; &quot;, &quot; &lt;&lt; *i;</span>
-<span class="lineNum"> 31 </span><span class="lineNoCov"> 0 : return out;</span>
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> : }
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : using namespace std;
-<span class="lineNum"> 36 </span> : using namespace ept;
-<span class="lineNum"> 37 </span> : using namespace ept::apt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : struct TestAptPackagerecord {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : // Check that the supported fields are understood
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : Test supportedFields()</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span> : string record =
-<span class="lineNum"> 45 </span> : &quot;Package: apt\n&quot;
-<span class="lineNum"> 46 </span> : &quot;Priority: important\n&quot;
-<span class="lineNum"> 47 </span> : &quot;Section: admin\n&quot;
-<span class="lineNum"> 48 </span> : &quot;Installed-Size: 4368\n&quot;
-<span class="lineNum"> 49 </span> : &quot;Maintainer: APT Development Team &lt;deity@lists.debian.org&gt;\n&quot;
-<span class="lineNum"> 50 </span> : &quot;Architecture: amd64\n&quot;
-<span class="lineNum"> 51 </span> : &quot;Source: apt\n&quot;
-<span class="lineNum"> 52 </span> : &quot;Version: 0.6.46.4-0.1\n&quot;
-<span class="lineNum"> 53 </span> : &quot;Replaces: libapt-pkg-doc (&lt;&lt; 0.3.7), libapt-pkg-dev (&lt;&lt; 0.3.7)\n&quot;
-<span class="lineNum"> 54 </span> : &quot;Provides: libapt-pkg-libc6.3-6-3.11\n&quot;
-<span class="lineNum"> 55 </span> : &quot;Depends: libc6 (&gt;= 2.3.5-1), libgcc1 (&gt;= 1:4.1.1-12), libstdc++6 (&gt;= 4.1.1-12), debian-archive-keyring\n&quot;
-<span class="lineNum"> 56 </span> : &quot;Pre-Depends: debtags (maybe)\n&quot;
-<span class="lineNum"> 57 </span> : &quot;Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2\n&quot;
-<span class="lineNum"> 58 </span> : &quot;Recommends: debtags (maybe)\n&quot;
-<span class="lineNum"> 59 </span> : &quot;Enhances: debian\n&quot;
-<span class="lineNum"> 60 </span> : &quot;Conflicts: marameo\n&quot;
-<span class="lineNum"> 61 </span> : &quot;Filename: pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb\n&quot;
-<span class="lineNum"> 62 </span> : &quot;Size: 1436478\n&quot;
-<span class="lineNum"> 63 </span> : &quot;MD5sum: 1776421f80d6300c77a608e77a9f4a15\n&quot;
-<span class="lineNum"> 64 </span> : &quot;SHA1: 1bd7337d2df56d267632cf72ac930c0a4895898f\n&quot;
-<span class="lineNum"> 65 </span> : &quot;SHA256: b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda\n&quot;
-<span class="lineNum"> 66 </span> : &quot;Description: Advanced front-end for dpkg\n&quot;
-<span class="lineNum"> 67 </span> : &quot; This is Debian's next generation front-end for the dpkg package manager.\n&quot;
-<span class="lineNum"> 68 </span> : &quot; It provides the apt-get utility and APT dselect method that provides a\n&quot;
-<span class="lineNum"> 69 </span> : &quot; simpler, safer way to install and upgrade packages.\n&quot;
-<span class="lineNum"> 70 </span> : &quot; .\n&quot;
-<span class="lineNum"> 71 </span> : &quot; APT features complete installation ordering, multiple source capability\n&quot;
-<span class="lineNum"> 72 </span> : &quot; and several other unique features, see the Users Guide in apt-doc.\n&quot;
-<span class="lineNum"> 73 </span> : &quot;Build-Essential: yes\n&quot;
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : &quot;Tag: admin::package-management, filetransfer::ftp, filetransfer::http, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package\n&quot;;</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : PackageRecord p(record);</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert_eq(p.size(), 24u);</span>
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert_eq(p.package(), &quot;apt&quot;);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : assert_eq(p.priority(), &quot;important&quot;);</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : assert_eq(p.section(), &quot;admin&quot;);</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 1 : assert_eq(p.installedSize(), 4368u);</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 2 : assert_eq(p.maintainer(), &quot;APT Development Team &lt;deity@lists.debian.org&gt;&quot;);</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 1 : assert_eq(p.architecture(), &quot;amd64&quot;);</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert_eq(p.source(), &quot;apt&quot;);</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 1 : assert_eq(p.version(), &quot;0.6.46.4-0.1&quot;);</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 1 : assert_eq(p.replaces(), &quot;libapt-pkg-doc (&lt;&lt; 0.3.7), libapt-pkg-dev (&lt;&lt; 0.3.7)&quot;);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 1 : assert_eq(p.provides(), &quot;libapt-pkg-libc6.3-6-3.11&quot;);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : assert_eq(p.depends(), &quot;libc6 (&gt;= 2.3.5-1), libgcc1 (&gt;= 1:4.1.1-12), libstdc++6 (&gt;= 4.1.1-12), debian-archive-keyring&quot;);</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 1 : assert_eq(p.preDepends(), &quot;debtags (maybe)&quot;);</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : assert_eq(p.recommends(), &quot;debtags (maybe)&quot;);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert_eq(p.suggests(), &quot;aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2&quot;);</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : assert_eq(p.enhances(), &quot;debian&quot;);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 1 : assert_eq(p.conflicts(), &quot;marameo&quot;);</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : assert_eq(p.filename(), &quot;pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb&quot;);</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 1 : assert_eq(p.packageSize(), 1436478u);</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert_eq(p.md5sum(), &quot;1776421f80d6300c77a608e77a9f4a15&quot;);</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert_eq(p.sha1(), &quot;1bd7337d2df56d267632cf72ac930c0a4895898f&quot;);</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert_eq(p.sha256(), &quot;b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda&quot;);</span>
-<span class="lineNum"> 101 </span> : assert_eq(p.description(), &quot;Advanced front-end for dpkg\n&quot;
-<span class="lineNum"> 102 </span> : &quot; This is Debian's next generation front-end for the dpkg package manager.\n&quot;
-<span class="lineNum"> 103 </span> : &quot; It provides the apt-get utility and APT dselect method that provides a\n&quot;
-<span class="lineNum"> 104 </span> : &quot; simpler, safer way to install and upgrade packages.\n&quot;
-<span class="lineNum"> 105 </span> : &quot; .\n&quot;
-<span class="lineNum"> 106 </span> : &quot; APT features complete installation ordering, multiple source capability\n&quot;
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : &quot; and several other unique features, see the Users Guide in apt-doc.&quot;);</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : assert_eq(p.shortDescription(), &quot;Advanced front-end for dpkg&quot;);</span>
-<span class="lineNum"> 109 </span> : assert_eq(p.longDescription(),
-<span class="lineNum"> 110 </span> : &quot;This is Debian's next generation front-end for the dpkg package manager.\n&quot;
-<span class="lineNum"> 111 </span> : &quot; It provides the apt-get utility and APT dselect method that provides a\n&quot;
-<span class="lineNum"> 112 </span> : &quot; simpler, safer way to install and upgrade packages.\n&quot;
-<span class="lineNum"> 113 </span> : &quot; .\n&quot;
-<span class="lineNum"> 114 </span> : &quot; APT features complete installation ordering, multiple source capability\n&quot;
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : &quot; and several other unique features, see the Users Guide in apt-doc.&quot;);</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(p.buildEssential(), true);</span>
-<span class="lineNum"> 117 </span> :
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::set&lt;std::string&gt; tags;</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 1 : tags.insert(&quot;admin::package-management&quot;);</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : tags.insert(&quot;filetransfer::ftp&quot;);</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 2 : tags.insert(&quot;filetransfer::http&quot;);</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 2 : tags.insert(&quot;hardware::storage:cd&quot;);</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 2 : tags.insert(&quot;interface::commandline&quot;);</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 2 : tags.insert(&quot;network::client&quot;);</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 2 : tags.insert(&quot;protocol::ftp&quot;);</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 2 : tags.insert(&quot;protocol::http&quot;);</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 2 : tags.insert(&quot;protocol::ipv6&quot;);</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 2 : tags.insert(&quot;role::program&quot;);</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 2 : tags.insert(&quot;suite::debian&quot;);</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 2 : tags.insert(&quot;use::downloading&quot;);</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 2 : tags.insert(&quot;use::searching&quot;);</span>
-<span class="lineNum"> 132 </span><span class="lineCov"> 2 : tags.insert(&quot;works-with::software:package&quot;);</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 2 : assert_eq(p.tag(), tags);</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> : };
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/recordparser.cc.gcov.html b/rep/ept/apt/recordparser.cc.gcov.html
deleted file mode 100644
index f1f46c3..0000000
--- a/rep/ept/apt/recordparser.cc.gcov.html
+++ /dev/null
@@ -1,237 +0,0 @@
-<!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/apt/recordparser.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">62</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">62</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> : /** \file
-<span class="lineNum"> 2 </span> : * Parser for APT records
-<span class="lineNum"> 3 </span> : */
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /*
-<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : *
-<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 16 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 21 </span> : */
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;ept/apt/recordparser.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 26 </span> : #include &lt;cctype&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : using namespace std;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : namespace ept {
-<span class="lineNum"> 33 </span> : namespace apt {
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : struct rpcompare
-<span class="lineNum"> 36 </span> : {
-<span class="lineNum"> 37 </span> : const RecordParser&amp; rp;
-<span class="lineNum"> 38 </span><span class="lineCov"> 2618 : rpcompare(const RecordParser&amp; rp) : rp(rp) {}</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 177724 : bool operator()(size_t a, size_t b)</span>
-<span class="lineNum"> 40 </span> : {
-<span class="lineNum"> 41 </span><span class="lineCov"> 177724 : return rp.name(a) &lt; rp.name(b);</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span> : };
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 2618 : void RecordParser::scan(const std::string&amp; str)</span>
-<span class="lineNum"> 46 </span> : {
-<span class="lineNum"> 47 </span><span class="lineCov"> 2618 : buffer = str;</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 2618 : ends.clear();</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 2618 : sorted.clear();</span>
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : //cerr &lt;&lt; &quot;PARSE &quot; &lt;&lt; endl &lt;&lt; buffer &lt;&lt; &quot;*****&quot; &lt;&lt; endl;
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : // Scan the buffer, taking note of all ending offsets of the various fields
-<span class="lineNum"> 54 </span><span class="lineCov"> 2618 : size_t pos = 0;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 2618 : size_t idx = 0;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 59427 : while (pos &lt; buffer.size() - 1)</span>
-<span class="lineNum"> 57 </span> : {
-<span class="lineNum"> 58 </span> : //cerr &lt;&lt; &quot;PREPOS &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; buffer.substr(pos, 10) &lt;&lt; endl;
-<span class="lineNum"> 59 </span><span class="lineCov"> 56809 : pos = buffer.find(&quot;\n&quot;, pos);</span>
-<span class="lineNum"> 60 </span> : //cerr &lt;&lt; &quot;POSTPOS &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; (pos == string::npos ? &quot;NONE&quot; : buffer.substr(pos, 10)) &lt;&lt; endl;
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : // The buffer does not end with a newline
-<span class="lineNum"> 63 </span><span class="lineCov"> 56809 : if (pos == string::npos)</span>
-<span class="lineNum"> 64 </span> : {
-<span class="lineNum"> 65 </span> : //cerr &lt;&lt; &quot;ENDNOTEOL&quot; &lt;&lt; endl;
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : pos = buffer.size();</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : ends.push_back(pos);</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 1 : break;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineCov"> 56808 : ++pos;</span>
-<span class="lineNum"> 73 </span> : //cerr &lt;&lt; &quot;POSTPOSINC &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; buffer.substr(pos, 10) &lt;&lt; endl;
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : // The buffer ends with a newline
-<span class="lineNum"> 76 </span><span class="lineCov"> 56808 : if (pos == buffer.size())</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span> : //cerr &lt;&lt; &quot;ENDEOL&quot; &lt;&lt; endl;
-<span class="lineNum"> 79 </span><span class="lineCov"> 11 : ends.push_back(pos);</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 11 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 11 : break;</span>
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : // Terminate parsing on double newlines
-<span class="lineNum"> 85 </span><span class="lineCov"> 56797 : if (buffer[pos] == '\n')</span>
-<span class="lineNum"> 86 </span> : {
-<span class="lineNum"> 87 </span> : //cerr &lt;&lt; &quot;ENDDOUBLENL&quot; &lt;&lt; endl;
-<span class="lineNum"> 88 </span><span class="lineCov"> 2606 : ends.push_back(pos);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 2606 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2606 : break;</span>
-<span class="lineNum"> 91 </span> : }
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span> : // Mark the end of the field if it's not a continuation line
-<span class="lineNum"> 94 </span><span class="lineCov"> 54191 : if (!isspace(buffer[pos]))</span>
-<span class="lineNum"> 95 </span> : {
-<span class="lineNum"> 96 </span> : //cerr &lt;&lt; &quot;INNERFIELD&quot; &lt;&lt; endl;
-<span class="lineNum"> 97 </span><span class="lineCov"> 34233 : ends.push_back(pos);</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 34233 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 99 </span> : } //else
-<span class="lineNum"> 100 </span> : //cerr &lt;&lt; &quot;CONTLINE&quot; &lt;&lt; endl;
-<span class="lineNum"> 101 </span> : }
-<span class="lineNum"> 102 </span> :
-<span class="lineNum"> 103 </span> : // Sort the sorted array
-<span class="lineNum"> 104 </span><span class="lineCov"> 2618 : sort(sorted.begin(), sorted.end(), rpcompare(*this));</span>
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : //for (size_t i = 0; i &lt; ends.size(); ++i)
-<span class="lineNum"> 107 </span> : // cerr &lt;&lt; ends[i] &lt;&lt; &quot;\t&quot; &lt;&lt; name(i) &lt;&lt; &quot;\t&quot; &lt;&lt; sorted[i] &lt;&lt; &quot;\t&quot; &lt;&lt; name(sorted[i]) &lt;&lt; endl;
-<span class="lineNum"> 108 </span><span class="lineCov"> 2618 : }</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span><span class="lineCov"> 465183 : std::string RecordParser::field(size_t idx) const</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineCov"> 465183 : if (idx &gt;= ends.size())</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 2664 : return string();</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 462519 : if (idx == 0)</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 52771 : return buffer.substr(0, ends[0]);</span>
-<span class="lineNum"> 116 </span> : else
-<span class="lineNum"> 117 </span><span class="lineCov"> 409748 : return buffer.substr(ends[idx-1], ends[idx]-ends[idx-1]);</span>
-<span class="lineNum"> 118 </span> : }
-<span class="lineNum"> 119 </span> :
-<span class="lineNum"> 120 </span><span class="lineCov"> 446879 : std::string RecordParser::name(size_t idx) const</span>
-<span class="lineNum"> 121 </span> : {
-<span class="lineNum"> 122 </span><span class="lineCov"> 446879 : string res = field(idx);</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 446879 : size_t pos = res.find(&quot;:&quot;);</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 446879 : if (pos == string::npos)</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : return res;</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 446878 : return res.substr(0, pos);</span>
-<span class="lineNum"> 127 </span> : }
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span><span class="lineCov"> 18279 : std::string RecordParser::lookup(size_t idx) const</span>
-<span class="lineNum"> 130 </span> : {
-<span class="lineNum"> 131 </span><span class="lineCov"> 18279 : string res = field(idx);</span>
-<span class="lineNum"> 132 </span><span class="lineCov"> 18279 : size_t pos = res.find(&quot;:&quot;);</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 18279 : if (pos == string::npos)</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 2662 : return res;</span>
-<span class="lineNum"> 135 </span> : // Skip initial whitespace after the :
-<span class="lineNum"> 136 </span><span class="lineCov"> 15617 : for (++pos; pos &lt; res.size() &amp;&amp; isspace(res[pos]); ++pos)</span>
-<span class="lineNum"> 137 </span> : ;
-<span class="lineNum"> 138 </span><span class="lineCov"> 15617 : res = res.substr(pos);</span>
-<span class="lineNum"> 139 </span> : // Trim spaces at the end
-<span class="lineNum"> 140 </span><span class="lineCov"> 46850 : while (!res.empty() &amp;&amp; isspace(res[res.size() - 1]))</span>
-<span class="lineNum"> 141 </span><span class="lineCov"> 15616 : res.resize(res.size() - 1);</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 15617 : return res;</span>
-<span class="lineNum"> 143 </span> : }
-<span class="lineNum"> 144 </span> :
-<span class="lineNum"> 145 </span><span class="lineCov"> 18283 : size_t RecordParser::index(const std::string&amp; str) const</span>
-<span class="lineNum"> 146 </span> : {
-<span class="lineNum"> 147 </span> : int begin, end;
-<span class="lineNum"> 148 </span> :
-<span class="lineNum"> 149 </span> : /* Binary search */
-<span class="lineNum"> 150 </span><span class="lineCov"> 18283 : begin = -1, end = size();</span>
-<span class="lineNum"> 151 </span><span class="lineCov"> 109703 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 152 </span> : {
-<span class="lineNum"> 153 </span><span class="lineCov"> 73137 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 154 </span> : //cerr &lt;&lt; &quot;Test &quot; &lt;&lt; cur &lt;&lt; &quot; &quot; &lt;&lt; str &lt;&lt; &quot; &lt; &quot; &lt;&lt; name(cur) &lt;&lt; endl;
-<span class="lineNum"> 155 </span><span class="lineCov"> 73137 : if (name(sorted[cur]) &gt; str)</span>
-<span class="lineNum"> 156 </span><span class="lineCov"> 32507 : end = cur;</span>
-<span class="lineNum"> 157 </span> : else
-<span class="lineNum"> 158 </span><span class="lineCov"> 40630 : begin = cur;</span>
-<span class="lineNum"> 159 </span> : }
-<span class="lineNum"> 160 </span> :
-<span class="lineNum"> 161 </span><span class="lineCov"> 18283 : if (begin == -1 || name(sorted[begin]) != str)</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 2661 : return size();</span>
-<span class="lineNum"> 163 </span> : else
-<span class="lineNum"> 164 </span><span class="lineCov"> 15622 : return sorted[begin];</span>
-<span class="lineNum"> 165 </span> : }
-<span class="lineNum"> 166 </span> :
-<span class="lineNum"> 167 </span> : }
-<span class="lineNum"> 168 </span> : }
-<span class="lineNum"> 169 </span> :
-<span class="lineNum"> 170 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/recordparser.h.gcov.html b/rep/ept/apt/recordparser.h.gcov.html
deleted file mode 100644
index 60082e3..0000000
--- a/rep/ept/apt/recordparser.h.gcov.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!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/apt/recordparser.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">8</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">8</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> : #ifndef EPT_APT_RECORDPARSER_H
-<span class="lineNum"> 2 </span> : #define EPT_APT_RECORDPARSER_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** \file
-<span class="lineNum"> 5 </span> : * Parser for APT records
-<span class="lineNum"> 6 </span> : */
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : /*
-<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 19 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 27 </span> : #include &lt;string&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace apt {
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : /**
-<span class="lineNum"> 33 </span> : * Access the fields of a package record contained inside a std::string.
-<span class="lineNum"> 34 </span> : *
-<span class="lineNum"> 35 </span> : * Implementation note: this implementation should take advantage of
-<span class="lineNum"> 36 </span> : * std::string sharing buffer space among them.
-<span class="lineNum"> 37 </span> : */
-<span class="lineNum"> 38 </span> : class RecordParser
-<span class="lineNum"> 39 </span><span class="lineCov"> 19 : {</span>
-<span class="lineNum"> 40 </span> : /// Buffer containing the whole record
-<span class="lineNum"> 41 </span> : std::string buffer;
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : /// End offsets of the various fields in the record
-<span class="lineNum"> 44 </span> : std::vector&lt;size_t&gt; ends;
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : /// Indexes on the ends vector, sorted by field name
-<span class="lineNum"> 47 </span> : std::vector&lt;size_t&gt; sorted;
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span> : public:
-<span class="lineNum"> 50 </span><span class="lineCov"> 6 : RecordParser() {}</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 13 : RecordParser(const std::string&amp; str) { scan(str); }</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : /// Index a new record
-<span class="lineNum"> 54 </span> : void scan(const std::string&amp; str);
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : /**
-<span class="lineNum"> 57 </span> : * Get the index of the field with the given name.
-<span class="lineNum"> 58 </span> : *
-<span class="lineNum"> 59 </span> : * size() is returned if not found
-<span class="lineNum"> 60 </span> : */
-<span class="lineNum"> 61 </span> : size_t index(const std::string&amp; str) const;
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /// Return the field by its index
-<span class="lineNum"> 64 </span> : std::string field(size_t idx) const;
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span> : /// Return the name of a field by its index
-<span class="lineNum"> 67 </span> : std::string name(size_t idx) const;
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : /// Return the content of a field by its index
-<span class="lineNum"> 70 </span> : std::string lookup(size_t idx) const;
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : /// Return the content of a field by its name
-<span class="lineNum"> 73 </span><span class="lineCov"> 18273 : std::string lookup(const std::string&amp; name) const { return lookup(index(name)); }</span>
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : /// Return the content of a field by its index
-<span class="lineNum"> 76 </span><span class="lineCov"> 6 : std::string operator[](size_t idx) const { return lookup(idx); }</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span> : /// Return the content of a field by its name
-<span class="lineNum"> 79 </span><span class="lineCov"> 19 : std::string operator[](const std::string&amp; name) const { return lookup(name); }</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : /// Return the entire record
-<span class="lineNum"> 82 </span> : const std::string&amp; record() const { return buffer; }
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : /// Return the entire record
-<span class="lineNum"> 85 </span><span class="lineCov"> 1 : std::string record() { return buffer; }</span>
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : /// Return the number of fields in the record
-<span class="lineNum"> 88 </span><span class="lineCov"> 20972 : size_t size() const { return ends.size(); }</span>
-<span class="lineNum"> 89 </span> : };
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span> : }
-<span class="lineNum"> 92 </span> : }
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 95 </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>
diff --git a/rep/ept/apt/recordparser.test.h.gcov.html b/rep/ept/apt/recordparser.test.h.gcov.html
deleted file mode 100644
index 477be3f..0000000
--- a/rep/ept/apt/recordparser.test.h.gcov.html
+++ /dev/null
@@ -1,295 +0,0 @@
-<!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/apt/recordparser.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">107</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">107</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> : /*
-<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 12 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 17 </span> : */
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 20 </span> : #include &lt;ept/apt/recordparser.h&gt;
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : using namespace std;
-<span class="lineNum"> 25 </span> : using namespace ept;
-<span class="lineNum"> 26 </span> : using namespace ept::apt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span><span class="lineCov"> 12 : struct TestAptRecordparser {</span>
-<span class="lineNum"> 29 </span> : std::string record;
-<span class="lineNum"> 30 </span><span class="lineCov"> 12 : TestAptRecordparser()</span>
-<span class="lineNum"> 31 </span><span class="lineCov"> 12 : {</span>
-<span class="lineNum"> 32 </span> : record =
-<span class="lineNum"> 33 </span> : &quot;A:\n&quot;
-<span class="lineNum"> 34 </span> : &quot;D: da de di do du\n&quot;
-<span class="lineNum"> 35 </span> : &quot;B: b\n&quot;
-<span class="lineNum"> 36 </span> : &quot;C: c \n&quot;
-<span class="lineNum"> 37 </span> : &quot;Desc: this is the beginning\n&quot;
-<span class="lineNum"> 38 </span> : &quot; this is the continuation\n&quot;
-<span class="lineNum"> 39 </span><span class="lineCov"> 12 : &quot; this is the end\n&quot;;</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 12 : }</span>
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span> : // Check that the fields are identified and broken up correctly
-<span class="lineNum"> 43 </span><span class="lineCov"> 1 : Test parsing()</span>
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : assert_eq(p.record(), record);</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : assert_eq(p.size(), 5u);</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test fieldTuples()</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : assert_eq(p.field(0), &quot;A:\n&quot;);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : assert_eq(p.field(1), &quot;D: da de di do du\n&quot;);</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : assert_eq(p.field(2), &quot;B: b\n&quot;);</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : assert_eq(p.field(3), &quot;C: c \n&quot;);</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : assert_eq(p.field(4), &quot;Desc: this is the beginning\n this is the continuation\n this is the end\n&quot;);</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test fieldKeys()</span>
-<span class="lineNum"> 62 </span> : {
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 1 : assert_eq(p.name(0), &quot;A&quot;);</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : assert_eq(p.name(1), &quot;D&quot;);</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : assert_eq(p.name(2), &quot;B&quot;);</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : assert_eq(p.name(3), &quot;C&quot;);</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : assert_eq(p.name(4), &quot;Desc&quot;);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span><span class="lineCov"> 1 : Test fieldValues()</span>
-<span class="lineNum"> 72 </span> : {
-<span class="lineNum"> 73 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : assert_eq(p[0], &quot;&quot;);</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : assert_eq(p[1], &quot;da de di do du&quot;);</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : assert_eq(p[2], &quot;b&quot;);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : assert_eq(p[3], &quot;c&quot;);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert_eq(p[4], &quot;this is the beginning\n this is the continuation\n this is the end&quot;);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : // Check that the field search by name finds all the fields
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : Test findByName()</span>
-<span class="lineNum"> 83 </span> : {
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert_eq(p.index(&quot;A&quot;), 0u);</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert_eq(p.index(&quot;D&quot;), 1u);</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert_eq(p.index(&quot;B&quot;), 2u);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert_eq(p.index(&quot;C&quot;), 3u);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert_eq(p.index(&quot;Desc&quot;), 4u);</span>
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index(&quot;A&quot;)), &quot;A&quot;);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index(&quot;B&quot;)), &quot;B&quot;);</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index(&quot;C&quot;)), &quot;C&quot;);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index(&quot;D&quot;)), &quot;D&quot;);</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index(&quot;Desc&quot;)), &quot;Desc&quot;);</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 98 </span> :
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : Test indexing()</span>
-<span class="lineNum"> 100 </span> : {
-<span class="lineNum"> 101 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : assert_eq(p[&quot;A&quot;], &quot;&quot;);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;b&quot;);</span>
-<span class="lineNum"> 104 </span><span class="lineCov"> 2 : assert_eq(p[&quot;C&quot;], &quot;c&quot;);</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 2 : assert_eq(p[&quot;D&quot;], &quot;da de di do du&quot;);</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 2 : assert_eq(p[&quot;Desc&quot;], &quot;this is the beginning\n this is the continuation\n this is the end&quot;);</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span><span class="lineCov"> 1 : Test missingBehaviour()</span>
-<span class="lineNum"> 110 </span> : {
-<span class="lineNum"> 111 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 112 </span> : // Missing fields give empty strings
-<span class="lineNum"> 113 </span><span class="lineCov"> 1 : assert_eq(p.field(100), &quot;&quot;);</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert_eq(p.name(100), &quot;&quot;);</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : assert_eq(p[100], &quot;&quot;);</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(p[&quot;Missing&quot;], &quot;&quot;);</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : // Check that scanning twice replaces the old fields
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : Test rescan()</span>
-<span class="lineNum"> 121 </span> : {
-<span class="lineNum"> 122 </span> : std::string record =
-<span class="lineNum"> 123 </span> : &quot;A: a\n&quot;
-<span class="lineNum"> 124 </span> : &quot;B: b\n&quot;
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : &quot;C: c\n&quot;;</span>
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 1 : assert_eq(p.size(), 3u);</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 2 : assert_eq(p[&quot;A&quot;], &quot;a&quot;);</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;b&quot;);</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 2 : assert_eq(p[&quot;C&quot;], &quot;c&quot;);</span>
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : std::string record1 =
-<span class="lineNum"> 134 </span> : &quot;Foo: bar\n&quot;
-<span class="lineNum"> 135 </span><span class="lineCov"> 2 : &quot;A: different\n&quot;;</span>
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span><span class="lineCov"> 1 : p.scan(record1);</span>
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : //for (size_t i = 0; i &lt; p.size(); ++i)
-<span class="lineNum"> 140 </span> : // cerr &lt;&lt; &quot;&gt;&gt; &quot; &lt;&lt; i &lt;&lt; &quot;==&quot; &lt;&lt; p.index(p.name(i)) &lt;&lt; &quot; &quot; &lt;&lt; p.name(i) &lt;&lt; &quot; &quot; &lt;&lt; p[i] &lt;&lt; endl;
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span>
-<span class="lineNum"> 143 </span><span class="lineCov"> 2 : assert_eq(p[&quot;A&quot;], &quot;different&quot;);</span>
-<span class="lineNum"> 144 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;&quot;);</span>
-<span class="lineNum"> 145 </span><span class="lineCov"> 2 : assert_eq(p[&quot;C&quot;], &quot;&quot;);</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 2 : assert_eq(p[&quot;Foo&quot;], &quot;bar&quot;);</span>
-<span class="lineNum"> 147 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 148 </span> :
-<span class="lineNum"> 149 </span> : // Real-life example
-<span class="lineNum"> 150 </span><span class="lineCov"> 1 : Test realLife()</span>
-<span class="lineNum"> 151 </span> : {
-<span class="lineNum"> 152 </span> : string record =
-<span class="lineNum"> 153 </span> : &quot;Package: apt\n&quot;
-<span class="lineNum"> 154 </span> : &quot;Priority: important\n&quot;
-<span class="lineNum"> 155 </span> : &quot;Section: admin\n&quot;
-<span class="lineNum"> 156 </span> : &quot;Installed-Size: 4368\n&quot;
-<span class="lineNum"> 157 </span> : &quot;Maintainer: APT Development Team &lt;deity@lists.debian.org&gt;\n&quot;
-<span class="lineNum"> 158 </span> : &quot;Architecture: amd64\n&quot;
-<span class="lineNum"> 159 </span> : &quot;Version: 0.6.46.4-0.1\n&quot;
-<span class="lineNum"> 160 </span> : &quot;Replaces: libapt-pkg-doc (&lt;&lt; 0.3.7), libapt-pkg-dev (&lt;&lt; 0.3.7)\n&quot;
-<span class="lineNum"> 161 </span> : &quot;Provides: libapt-pkg-libc6.3-6-3.11\n&quot;
-<span class="lineNum"> 162 </span> : &quot;Depends: libc6 (&gt;= 2.3.5-1), libgcc1 (&gt;= 1:4.1.1-12), libstdc++6 (&gt;= 4.1.1-12), debian-archive-keyring\n&quot;
-<span class="lineNum"> 163 </span> : &quot;Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2\n&quot;
-<span class="lineNum"> 164 </span> : &quot;Filename: pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb\n&quot;
-<span class="lineNum"> 165 </span> : &quot;Size: 1436478\n&quot;
-<span class="lineNum"> 166 </span> : &quot;MD5sum: 1776421f80d6300c77a608e77a9f4a15\n&quot;
-<span class="lineNum"> 167 </span> : &quot;SHA1: 1bd7337d2df56d267632cf72ac930c0a4895898f\n&quot;
-<span class="lineNum"> 168 </span> : &quot;SHA256: b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda\n&quot;
-<span class="lineNum"> 169 </span> : &quot;Description: Advanced front-end for dpkg\n&quot;
-<span class="lineNum"> 170 </span> : &quot; This is Debian's next generation front-end for the dpkg package manager.\n&quot;
-<span class="lineNum"> 171 </span> : &quot; It provides the apt-get utility and APT dselect method that provides a\n&quot;
-<span class="lineNum"> 172 </span> : &quot; simpler, safer way to install and upgrade packages.\n&quot;
-<span class="lineNum"> 173 </span> : &quot; .\n&quot;
-<span class="lineNum"> 174 </span> : &quot; APT features complete installation ordering, multiple source capability\n&quot;
-<span class="lineNum"> 175 </span> : &quot; and several other unique features, see the Users Guide in apt-doc.\n&quot;
-<span class="lineNum"> 176 </span> : &quot;Build-Essential: yes\n&quot;
-<span class="lineNum"> 177 </span><span class="lineCov"> 1 : &quot;Tag: admin::package-management, filetransfer::ftp, filetransfer::http, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package\n&quot;;</span>
-<span class="lineNum"> 178 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 179 </span> :
-<span class="lineNum"> 180 </span><span class="lineCov"> 1 : assert_eq(p.size(), 19u);</span>
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span><span class="lineCov"> 1 : string rec1;</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 20 : for (size_t i = 0; i &lt; p.size(); ++i)</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 19 : rec1 += p.field(i);</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 1 : assert_eq(record, rec1);</span>
-<span class="lineNum"> 186 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 187 </span> :
-<span class="lineNum"> 188 </span> : // Various buffer termination patterns
-<span class="lineNum"> 189 </span><span class="lineCov"> 1 : Test bufferTermination()</span>
-<span class="lineNum"> 190 </span> : {
-<span class="lineNum"> 191 </span> : std::string record =
-<span class="lineNum"> 192 </span> : &quot;A: a\n&quot;
-<span class="lineNum"> 193 </span><span class="lineCov"> 1 : &quot;B: b&quot;;</span>
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 196 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span>
-<span class="lineNum"> 197 </span><span class="lineCov"> 2 : assert_eq(p[&quot;A&quot;], &quot;a&quot;);</span>
-<span class="lineNum"> 198 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;b&quot;);</span>
-<span class="lineNum"> 199 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 200 </span> :
-<span class="lineNum"> 201 </span><span class="lineCov"> 1 : Test bufferTermination2()</span>
-<span class="lineNum"> 202 </span> : {
-<span class="lineNum"> 203 </span> : std::string record =
-<span class="lineNum"> 204 </span> : &quot;A: a\n&quot;
-<span class="lineNum"> 205 </span><span class="lineCov"> 1 : &quot;B: b\n\n&quot;;</span>
-<span class="lineNum"> 206 </span> :
-<span class="lineNum"> 207 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 208 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span>
-<span class="lineNum"> 209 </span><span class="lineCov"> 2 : assert_eq(p[&quot;A&quot;], &quot;a&quot;);</span>
-<span class="lineNum"> 210 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;b&quot;);</span>
-<span class="lineNum"> 211 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 212 </span> :
-<span class="lineNum"> 213 </span><span class="lineCov"> 1 : Test bufferTermination3()</span>
-<span class="lineNum"> 214 </span> : {
-<span class="lineNum"> 215 </span> : std::string record =
-<span class="lineNum"> 216 </span> : &quot;A: a\n&quot;
-<span class="lineNum"> 217 </span> : &quot;B: b\n\n&quot;
-<span class="lineNum"> 218 </span><span class="lineCov"> 1 : &quot;C: c\n&quot;;</span>
-<span class="lineNum"> 219 </span> :
-<span class="lineNum"> 220 </span><span class="lineCov"> 1 : RecordParser p(record);</span>
-<span class="lineNum"> 221 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 2 : assert_eq(p[&quot;A&quot;], &quot;a&quot;);</span>
-<span class="lineNum"> 223 </span><span class="lineCov"> 2 : assert_eq(p[&quot;B&quot;], &quot;b&quot;);</span>
-<span class="lineNum"> 224 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 225 </span> :
-<span class="lineNum"> 226 </span> : };
-<span class="lineNum"> 227 </span> :
-<span class="lineNum"> 228 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/version.cc.gcov.html b/rep/ept/apt/version.cc.gcov.html
deleted file mode 100644
index d850ed3..0000000
--- a/rep/ept/apt/version.cc.gcov.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!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/apt/version.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">34</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">88.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">30</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> : /** \file
-<span class="lineNum"> 2 </span> : * Provide a very lightweight Version class that represent a package with a
-<span class="lineNum"> 3 </span> : * version, with very cheap value copy operations.
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 10 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 11 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 12 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 17 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 18 </span> : *
-<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 20 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 22 </span> : */
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : #include &lt;ept/apt/version.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;apt-pkg/debversion.h&gt;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : using namespace std;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace apt {
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 4 : std::string Version::upstreamVersion() const</span>
-<span class="lineNum"> 33 </span> : {
-<span class="lineNum"> 34 </span> : // Skip the epoch, if it is there
-<span class="lineNum"> 35 </span><span class="lineCov"> 4 : size_t start = m_version.find(':');</span>
-<span class="lineNum"> 36 </span><span class="lineCov"> 4 : if (start == string::npos)</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 3 : start = 0;</span>
-<span class="lineNum"> 38 </span> : else
-<span class="lineNum"> 39 </span><span class="lineCov"> 1 : ++start;</span>
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : // Skip everything after the trailing '-', if it is there
-<span class="lineNum"> 42 </span><span class="lineCov"> 4 : size_t end = m_version.rfind('-');</span>
-<span class="lineNum"> 43 </span><span class="lineCov"> 4 : if (end == string::npos)</span>
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : end = m_version.size();</span>
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span><span class="lineCov"> 4 : return m_version.substr(start, end-start);</span>
-<span class="lineNum"> 47 </span> : }
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span> : /* Version comparison by Debian policy */
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 4 : bool Version::operator&lt;=(const Version&amp; pkg) const</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 4 : if (name() &lt; pkg.name())</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 3 : if (name() == pkg.name())</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 3 : return debVS.CmpVersion(version(), pkg.version()) &lt;= 0;</span>
-<span class="lineNum"> 57 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span><span class="lineCov"> 5 : bool Version::operator&lt;(const Version&amp; pkg) const</span>
-<span class="lineNum"> 60 </span> : {
-<span class="lineNum"> 61 </span><span class="lineCov"> 5 : if (name() &lt; pkg.name())</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 4 : if (name() == pkg.name())</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 4 : return debVS.CmpVersion(version(), pkg.version()) &lt; 0;</span>
-<span class="lineNum"> 65 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 66 </span> : }
-<span class="lineNum"> 67 </span><span class="lineCov"> 4 : bool Version::operator&gt;=(const Version&amp; pkg) const</span>
-<span class="lineNum"> 68 </span> : {
-<span class="lineNum"> 69 </span><span class="lineCov"> 4 : if (name() &gt; pkg.name())</span>
-<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 4 : if (name() == pkg.name())</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 3 : return debVS.CmpVersion(version(), pkg.version()) &gt;= 0;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 74 </span> : }
-<span class="lineNum"> 75 </span><span class="lineCov"> 5 : bool Version::operator&gt;(const Version&amp; pkg) const</span>
-<span class="lineNum"> 76 </span> : {
-<span class="lineNum"> 77 </span><span class="lineCov"> 5 : if (name() &gt; pkg.name())</span>
-<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 5 : if (name() == pkg.name())</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 4 : return debVS.CmpVersion(version(), pkg.version()) &gt; 0;</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : }
-<span class="lineNum"> 85 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/apt/version.h.gcov.html b/rep/ept/apt/version.h.gcov.html
deleted file mode 100644
index 0f48a29..0000000
--- a/rep/ept/apt/version.h.gcov.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!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/apt/version.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">9</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">9</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> : #ifndef EPT_APT_VERSION_H
-<span class="lineNum"> 2 </span> : #define EPT_APT_VERSION_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** \file
-<span class="lineNum"> 5 </span> : * Representation of a package with a version
-<span class="lineNum"> 6 </span> : */
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : /*
-<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 19 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;string&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : namespace ept {
-<span class="lineNum"> 29 </span> : namespace apt {
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : /**
-<span class="lineNum"> 32 </span> : * Lightweight Version class that represent a package with a version, with very
-<span class="lineNum"> 33 </span> : * cheap value copy operations.
-<span class="lineNum"> 34 </span> : *
-<span class="lineNum"> 35 </span> : * This class can be used to query package information from various information
-<span class="lineNum"> 36 </span> : * sources. The purpose is create a middle ground that makes sure that all
-<span class="lineNum"> 37 </span> : * sort of different information sources about packages are referring to the
-<span class="lineNum"> 38 </span> : * same package.
-<span class="lineNum"> 39 </span> : */
-<span class="lineNum"> 40 </span> : class Version
-<span class="lineNum"> 41 </span><span class="lineCov"> 55 : {</span>
-<span class="lineNum"> 42 </span> : protected:
-<span class="lineNum"> 43 </span> : std::string m_name;
-<span class="lineNum"> 44 </span> : std::string m_version;
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : public:
-<span class="lineNum"> 47 </span> : /**
-<span class="lineNum"> 48 </span> : * Create an invalid Version
-<span class="lineNum"> 49 </span> : */
-<span class="lineNum"> 50 </span><span class="lineCov"> 7 : Version() {}</span>
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span> : /**
-<span class="lineNum"> 53 </span> : * Create a Version from strings
-<span class="lineNum"> 54 </span> : */
-<span class="lineNum"> 55 </span><span class="lineCov"> 34 : Version(const std::string&amp; name, const std::string&amp; version)</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 34 : : m_name(name), m_version(version) {}</span>
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : /**
-<span class="lineNum"> 59 </span> : * Return the package name
-<span class="lineNum"> 60 </span> : */
-<span class="lineNum"> 61 </span><span class="lineCov"> 81 : std::string name() const { return m_name; }</span>
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /**
-<span class="lineNum"> 64 </span> : * Return the package version, or the empty string if this is a
-<span class="lineNum"> 65 </span> : * versionless package.
-<span class="lineNum"> 66 </span> : */
-<span class="lineNum"> 67 </span><span class="lineCov"> 38 : std::string version() const { return m_version; }</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : /**
-<span class="lineNum"> 70 </span> : * Return the upstream part of the version
-<span class="lineNum"> 71 </span> : */
-<span class="lineNum"> 72 </span> : std::string upstreamVersion() const;
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : /**
-<span class="lineNum"> 75 </span> : * Return true if this package contains a valid value
-<span class="lineNum"> 76 </span> : */
-<span class="lineNum"> 77 </span><span class="lineCov"> 11 : bool isValid() const { return !m_name.empty() &amp;&amp; !m_version.empty(); }</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : /**
-<span class="lineNum"> 80 </span> : * Comparison operators
-<span class="lineNum"> 81 </span> : */
-<span class="lineNum"> 82 </span><span class="lineCov"> 9 : bool operator==(const Version&amp; pkg) const { return m_name == pkg.m_name &amp;&amp; m_version == pkg.m_version; }</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 5 : bool operator!=(const Version&amp; pkg) const { return m_name != pkg.m_name || m_version != pkg.m_version; }</span>
-<span class="lineNum"> 84 </span> : bool operator&lt;=(const Version&amp; pkg) const;
-<span class="lineNum"> 85 </span> : bool operator&lt;(const Version&amp; pkg) const;
-<span class="lineNum"> 86 </span> : bool operator&gt;=(const Version&amp; pkg) const;
-<span class="lineNum"> 87 </span> : bool operator&gt;(const Version&amp; pkg) const;
-<span class="lineNum"> 88 </span> : };
-<span class="lineNum"> 89 </span> :
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> : }
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 94 </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>
diff --git a/rep/ept/apt/version.test.h.gcov.html b/rep/ept/apt/version.test.h.gcov.html
deleted file mode 100644
index 0f645e7..0000000
--- a/rep/ept/apt/version.test.h.gcov.html
+++ /dev/null
@@ -1,203 +0,0 @@
-<!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/apt/version.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">71</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">71</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> : /*
-<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 12 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 17 </span> : */
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 20 </span> : #include &lt;ept/apt/version.h&gt;
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : using namespace std;
-<span class="lineNum"> 23 </span> : using namespace ept::apt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : struct TestAptVersion {
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : // Basic test for invalid version
-<span class="lineNum"> 28 </span><span class="lineCov"> 1 : Test invalid()</span>
-<span class="lineNum"> 29 </span> : {
-<span class="lineNum"> 30 </span><span class="lineCov"> 1 : Version test;</span>
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : assert_eq(test.name(), &quot;&quot;);</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 1 : assert_eq(test.version(), &quot;&quot;);</span>
-<span class="lineNum"> 34 </span><span class="lineCov"> 1 : assert_eq(test.isValid(), false);</span>
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 1 : string p = test.name();</span>
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : assert_eq(p, string());</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : // Basic test for version
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : Test basic()</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : Version test(&quot;test&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span><span class="lineCov"> 2 : assert_eq(test.name(), &quot;test&quot;);</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : assert_eq(test.version(), &quot;1.0&quot;);</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : assert_eq(test.isValid(), true);</span>
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : string p = test.name();</span>
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : assert_eq(p, &quot;test&quot;);</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : Version v(p, &quot;1.1&quot;);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert_eq(v.name(), &quot;test&quot;);</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : assert_eq(v.version(), &quot;1.1&quot;);</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : assert_eq(v.isValid(), true);</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span> : // Comparison semanthics
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test comparison()</span>
-<span class="lineNum"> 62 </span> : {
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : Version test(&quot;test&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 2 : Version test1(&quot;test&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 2 : assert(test == test1);</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 2 : assert(! (test != test1));</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 2 : assert(! (test &lt; test1));</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(! (test &gt; test1));</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert(test &lt;= test1);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert(test &gt;= test1);</span>
-<span class="lineNum"> 72 </span> :
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : Version test2(&quot;test2&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 2 : assert(test != test2);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 2 : assert(test != test2);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 2 : assert(test &lt; test2);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 2 : assert(! (test &gt; test2));</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert(test &lt;= test2);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 2 : assert(! (test &gt;= test2));</span>
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span><span class="lineCov"> 2 : Version test3(&quot;test&quot;, &quot;2.0&quot;);</span>
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert(test != test3);</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert(test != test3);</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert(test &lt; test3);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert(! (test &gt; test3));</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert(test &lt;= test3);</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert(! (test &gt;= test3));</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : // Value-copy semanthics
-<span class="lineNum"> 95 </span><span class="lineCov"> 1 : Test valueCopy()</span>
-<span class="lineNum"> 96 </span> : {
-<span class="lineNum"> 97 </span><span class="lineCov"> 1 : Version test(&quot;test&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 1 : Version test1 = test;</span>
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert(test == test1);</span>
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : Version test2;</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 1 : test2 = test;</span>
-<span class="lineNum"> 104 </span><span class="lineCov"> 1 : assert(test == test2);</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 2 : assert(test1 == test2);</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span><span class="lineCov"> 2 : Version test3(&quot;test&quot;, &quot;1.0&quot;);</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 2 : assert(test == test3);</span>
-<span class="lineNum"> 109 </span><span class="lineCov"> 2 : assert(test1 == test3);</span>
-<span class="lineNum"> 110 </span><span class="lineCov"> 2 : assert(test2 == test3);</span>
-<span class="lineNum"> 111 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : // Extraction of upstream version
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : Test upstreamVersion()</span>
-<span class="lineNum"> 115 </span> : {
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(Version(&quot;a&quot;, &quot;10.0&quot;).upstreamVersion(), &quot;10.0&quot;);</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 2 : assert_eq(Version(&quot;a&quot;, &quot;10.0-1&quot;).upstreamVersion(), &quot;10.0&quot;);</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 2 : assert_eq(Version(&quot;a&quot;, &quot;10.0~foo.1-1.0&quot;).upstreamVersion(), &quot;10.0~foo.1&quot;);</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 2 : assert_eq(Version(&quot;a&quot;, &quot;1.0:10.0~foo.1-1.0&quot;).upstreamVersion(), &quot;10.0~foo.1&quot;);</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 121 </span> :
-<span class="lineNum"> 122 </span> : // Debian policy comparison semanthics
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : Test policyComparison()</span>
-<span class="lineNum"> 124 </span> : {
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : assert(Version(&quot;a&quot;, &quot;10.0&quot;) &gt; Version(&quot;a&quot;, &quot;2.1&quot;));</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 2 : assert(Version(&quot;a&quot;, &quot;1:10.0&quot;) &lt; Version(&quot;a&quot;, &quot;2:2.1&quot;));</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 2 : assert(Version(&quot;a&quot;, &quot;10.0-1&quot;) &lt; Version(&quot;a&quot;, &quot;10.0-2&quot;));</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 2 : assert(Version(&quot;a&quot;, &quot;10.0-2&quot;) &gt; Version(&quot;a&quot;, &quot;10.0-1&quot;));</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 2 : assert(Version(&quot;a&quot;, &quot;1:10.0-1&quot;) &lt;= Version(&quot;a&quot;, &quot;1:10.0-1&quot;));</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert(Version(&quot;a&quot;, &quot;1:10.0-1&quot;) &gt;= Version(&quot;a&quot;, &quot;1:10.0-1&quot;));</span>
-<span class="lineNum"> 131 </span> : // TODO: add more
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> : };
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/core/apt.cpp.gcov.html b/rep/ept/core/apt.cpp.gcov.html
deleted file mode 100644
index 159b490..0000000
--- a/rep/ept/core/apt.cpp.gcov.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!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/apt.cpp</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.cpp</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">7</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">7</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> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : namespace wfs = wibble::sys::fs;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : namespace ept {
-<span class="lineNum"> 8 </span> : namespace core {
-<span class="lineNum"> 9 </span><span class="lineCov"> 45 : time_t aptTimestamp()</span>
-<span class="lineNum"> 10 </span> : {
-<span class="lineNum"> 11 </span> : std::auto_ptr&lt;struct stat&gt; st = wfs::stat(
-<span class="lineNum"> 12 </span><span class="lineCov"> 45 : _config-&gt;FindFile( &quot;Dir::Cache::pkgcache&quot; ) );</span>
-<span class="lineNum"> 13 </span><span class="lineCov"> 45 : time_t t1 = st.get() == NULL ? 0 : st-&gt;st_mtime;</span>
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span> : std::auto_ptr&lt;struct stat&gt; st1 = wfs::stat(
-<span class="lineNum"> 16 </span><span class="lineCov"> 45 : _config-&gt;FindFile( &quot;Dir::State::status&quot; ) );</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 45 : time_t t2 = st1.get() == NULL ? 0 : st1-&gt;st_mtime;</span>
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span><span class="lineCov"> 45 : return t1 &gt; t2 ? t1 : t2;</span>
-<span class="lineNum"> 20 </span> : }
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : }
-<span class="lineNum"> 23 </span><span class="lineCov"> 6 : }</span>
-</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>
diff --git a/rep/ept/core/apt.h.gcov.html b/rep/ept/core/apt.h.gcov.html
deleted file mode 100644
index b8d3ec9..0000000
--- a/rep/ept/core/apt.h.gcov.html
+++ /dev/null
@@ -1,474 +0,0 @@
-<!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/apt.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">173</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">79.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">138</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 &lt;string&gt;
-<span class="lineNum"> 4 </span> : #include &lt;wibble/test.h&gt;
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : #include &lt;ept/token.h&gt;
-<span class="lineNum"> 7 </span> : #include &lt;ept/core/source.h&gt;
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 10 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : #include &lt;apt-pkg/pkgcache.h&gt;
-<span class="lineNum"> 13 </span> : #include &lt;apt-pkg/sourcelist.h&gt;
-<span class="lineNum"> 14 </span> : #include &lt;apt-pkg/error.h&gt;
-<span class="lineNum"> 15 </span> : #include &lt;apt-pkg/policy.h&gt;
-<span class="lineNum"> 16 </span> : #include &lt;apt-pkg/cachefile.h&gt;
-<span class="lineNum"> 17 </span> : #include &lt;apt-pkg/progress.h&gt;
-<span class="lineNum"> 18 </span> : #include &lt;apt-pkg/pkgcachegen.h&gt;
-<span class="lineNum"> 19 </span> : #include &lt;apt-pkg/init.h&gt;
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #ifndef EPT_APT_H
-<span class="lineNum"> 22 </span> : #define EPT_APT_H
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : namespace ept {
-<span class="lineNum"> 25 </span> : namespace core {
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span><span class="lineNoCov"> 0 : struct AptException : wibble::exception::Generic {</span>
-<span class="lineNum"> 28 </span><span class="lineNoCov"> 0 : std::string desc() const throw () {</span>
-<span class="lineNum"> 29 </span><span class="lineNoCov"> 0 : return &quot;APT Error&quot;;</span>
-<span class="lineNum"> 30 </span> : }
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineNoCov"> 0 : AptException( const std::string &amp;ctx ) : Generic( ctx ) {</span>
-<span class="lineNum"> 33 </span><span class="lineNoCov"> 0 : while ( !_error-&gt;empty() ) {</span>
-<span class="lineNum"> 34 </span><span class="lineNoCov"> 0 : std::string err;</span>
-<span class="lineNum"> 35 </span><span class="lineNoCov"> 0 : _error-&gt;PopMessage( err );</span>
-<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : std::cerr &lt;&lt; err &lt;&lt; std::endl;</span>
-<span class="lineNum"> 37 </span><span class="lineNoCov"> 0 : addContext( err );</span>
-<span class="lineNum"> 38 </span> : }
-<span class="lineNum"> 39 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 40 </span> : };
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span> : struct PackageState {
-<span class="lineNum"> 43 </span> : enum Query {
-<span class="lineNum"> 44 </span> : Install = 1 &lt;&lt; 0,
-<span class="lineNum"> 45 </span> : Upgrade = 1 &lt;&lt; 1,
-<span class="lineNum"> 46 </span> : Keep = 1 &lt;&lt; 2,
-<span class="lineNum"> 47 </span> : Remove = 1 &lt;&lt; 3,
-<span class="lineNum"> 48 </span> : Installed = 1 &lt;&lt; 4,
-<span class="lineNum"> 49 </span> : Upgradable = 1 &lt;&lt; 5,
-<span class="lineNum"> 50 </span> : NowBroken = 1 &lt;&lt; 6,
-<span class="lineNum"> 51 </span> : WillBreak = 1 &lt;&lt; 7,
-<span class="lineNum"> 52 </span> : ReInstall = 1 &lt;&lt; 8,
-<span class="lineNum"> 53 </span> : Purge = 1 &lt;&lt; 9,
-<span class="lineNum"> 54 </span> : Hold = 1 &lt;&lt; 10,
-<span class="lineNum"> 55 </span> : Valid = 1 &lt;&lt; 11
-<span class="lineNum"> 56 </span> : };
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : typedef unsigned state;
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 3786 : operator unsigned() { return m_state; };</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : PackageState &amp;operator=( unsigned i ) {
-<span class="lineNum"> 63 </span> : m_state = i;
-<span class="lineNum"> 64 </span> : return *this;
-<span class="lineNum"> 65 </span> : }
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 5218 : PackageState &amp;operator|=( const PackageState &amp;s ) {</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 5218 : m_state |= s.m_state;</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 5218 : return *this;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineCov"> 9003 : PackageState( unsigned a ) {</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 9003 : m_state = a;</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 9003 : }</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : PackageState() : m_state( 0 ) {}</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span> : // FIXME this probably needs to be used consistently in core and out of core
-<span class="lineNum"> 79 </span><span class="lineCov"> 2 : bool isValid() const { return m_state &amp; Valid; }</span>
-<span class="lineNum"> 80 </span> : // FIXME compatibility API for non-core apt
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : bool isInstalled() const { return installed(); }</span>
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span><span class="lineCov"> 2 : bool install() const { return m_state &amp; Install; }</span>
-<span class="lineNum"> 84 </span> : // reinstall() implies install()
-<span class="lineNum"> 85 </span> : bool reinstall() const { return m_state &amp; ReInstall; }
-<span class="lineNum"> 86 </span> : bool remove() const { return m_state &amp; Remove; }
-<span class="lineNum"> 87 </span> : // purge() implies remove()
-<span class="lineNum"> 88 </span><span class="lineCov"> 3775 : bool purge() const { return m_state &amp; Purge; }</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 3780 : bool keep() const { return m_state &amp; Keep; }</span>
-<span class="lineNum"> 90 </span> : bool willBreak() const { return m_state &amp; WillBreak; }
-<span class="lineNum"> 91 </span> : // upgrade() implies install()
-<span class="lineNum"> 92 </span> : bool upgrade() const { return hasNewVersion() &amp;&amp; install(); }
-<span class="lineNum"> 93 </span> : // newInsstal() implies install()
-<span class="lineNum"> 94 </span> : bool newInstall() const { return !installed() &amp;&amp; install(); }
-<span class="lineNum"> 95 </span> : bool hold() const { return m_state &amp; Hold; }
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span><span class="lineCov"> 1 : bool installed() const { return m_state &amp; Installed; }</span>
-<span class="lineNum"> 98 </span> : bool hasNewVersion() const { return m_state &amp; Upgradable; }
-<span class="lineNum"> 99 </span> : bool upgradable() const { return hasNewVersion() &amp;&amp; !hold(); }
-<span class="lineNum"> 100 </span> : bool held() const { return hasNewVersion() &amp;&amp; hold(); }
-<span class="lineNum"> 101 </span> : bool nowBroken() const { return m_state &amp; NowBroken; }
-<span class="lineNum"> 102 </span> :
-<span class="lineNum"> 103 </span> : bool modify() const { return install() || remove(); }
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span> : protected:
-<span class="lineNum"> 106 </span> : unsigned m_state;
-<span class="lineNum"> 107 </span> : };
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : time_t aptTimestamp();
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span> : // wrap the apt's database
-<span class="lineNum"> 112 </span> : struct AptDatabase {
-<span class="lineNum"> 113 </span><span class="lineCov"> 5093 : pkgCache &amp;cache() {</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 5093 : if ( !m_cache )</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 20 : openCache();</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 5093 : return *m_cache;</span>
-<span class="lineNum"> 117 </span> : }
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span><span class="lineCov"> 3793 : pkgDepCache &amp;state() {</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 3793 : if ( !m_state )</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 5 : openState();</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 3793 : return *m_state;</span>
-<span class="lineNum"> 123 </span> : }
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span><span class="lineCov"> 1436 : pkgPolicy &amp;policy() {</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 1436 : if ( !m_policy )</span>
-<span class="lineNum"> 127 </span><span class="lineNoCov"> 0 : openCache();</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 1436 : return *m_policy;</span>
-<span class="lineNum"> 129 </span> : }
-<span class="lineNum"> 130 </span> :
-<span class="lineNum"> 131 </span> : OpProgress *m_progress;
-<span class="lineNum"> 132 </span> : bool m_tryWriteable;
-<span class="lineNum"> 133 </span> : bool m_writeable;
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> : time_t timestamp() {
-<span class="lineNum"> 136 </span> : return aptTimestamp();
-<span class="lineNum"> 137 </span> : }
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span><span class="lineCov"> 73 : AptDatabase() {</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 73 : m_cache = 0;</span>
-<span class="lineNum"> 141 </span><span class="lineCov"> 73 : m_state = 0;</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 73 : m_policy = 0;</span>
-<span class="lineNum"> 143 </span><span class="lineCov"> 73 : m_progress = new OpProgress();</span>
-<span class="lineNum"> 144 </span><span class="lineCov"> 73 : m_tryWriteable = true;</span>
-<span class="lineNum"> 145 </span><span class="lineCov"> 73 : m_writeable = false;</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 73 : }</span>
-<span class="lineNum"> 147 </span> :
-<span class="lineNum"> 148 </span> : void setProgress( OpProgress *p ) {
-<span class="lineNum"> 149 </span> : m_progress = p;
-<span class="lineNum"> 150 </span> : }
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span> : bool writeable() {
-<span class="lineNum"> 153 </span> : if ( !m_cache )
-<span class="lineNum"> 154 </span> : openCache();
-<span class="lineNum"> 155 </span> : return m_writeable;
-<span class="lineNum"> 156 </span> : }
-<span class="lineNum"> 157 </span> :
-<span class="lineNum"> 158 </span><span class="lineCov"> 5 : void openState() {</span>
-<span class="lineNum"> 159 </span><span class="lineCov"> 5 : m_state = new pkgDepCache( &amp;cache(), m_policy );</span>
-<span class="lineNum"> 160 </span><span class="lineCov"> 5 : m_state-&gt;Init( m_progress );</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 5 : m_progress-&gt;Done();</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 5 : }</span>
-<span class="lineNum"> 163 </span> :
-<span class="lineNum"> 164 </span><span class="lineCov"> 20 : void openCache() {</span>
-<span class="lineNum"> 165 </span><span class="lineCov"> 20 : if ( !_config-&gt;FindB(&quot;Initialized&quot;) ) {</span>
-<span class="lineNum"> 166 </span><span class="lineNoCov"> 0 : pkgInitConfig(*_config);</span>
-<span class="lineNum"> 167 </span><span class="lineNoCov"> 0 : _config-&gt;Set(&quot;Initialized&quot;, 1);</span>
-<span class="lineNum"> 168 </span><span class="lineNoCov"> 0 : pkgInitSystem(*_config, _system);</span>
-<span class="lineNum"> 169 </span> : }
-<span class="lineNum"> 170 </span> :
-<span class="lineNum"> 171 </span><span class="lineCov"> 20 : m_writeable = m_tryWriteable;</span>
-<span class="lineNum"> 172 </span> :
-<span class="lineNum"> 173 </span><span class="lineCov"> 20 : if ( m_tryWriteable ) {</span>
-<span class="lineNum"> 174 </span> : try {
-<span class="lineNum"> 175 </span><span class="lineCov"> 20 : _system-&gt;Lock();</span>
-<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : } catch ( std::exception e ) {</span>
-<span class="lineNum"> 177 </span><span class="lineNoCov"> 0 : m_tryWriteable = false;</span>
-<span class="lineNum"> 178 </span><span class="lineNoCov"> 0 : openCache();</span>
-<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : m_tryWriteable = true;</span>
-<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : throw;</span>
-<span class="lineNum"> 181 </span> : }
-<span class="lineNum"> 182 </span> : }
-<span class="lineNum"> 183 </span> :
-<span class="lineNum"> 184 </span><span class="lineCov"> 20 : pkgSourceList list;</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 20 : if ( list.ReadMainList() == false ) {</span>
-<span class="lineNum"> 186 </span><span class="lineNoCov"> 0 : _error-&gt;DumpErrors();</span>
-<span class="lineNum"> 187 </span> : throw wibble::exception::System(
-<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : &quot;The list of sources could not be read.&quot; );</span>
-<span class="lineNum"> 189 </span> : }
-<span class="lineNum"> 190 </span> :
-<span class="lineNum"> 191 </span><span class="lineCov"> 20 : MMap *m = 0;</span>
-<span class="lineNum"> 192 </span><span class="lineCov"> 20 : bool Res = pkgMakeStatusCache( list, *m_progress, &amp;m, !m_writeable );</span>
-<span class="lineNum"> 193 </span> :
-<span class="lineNum"> 194 </span><span class="lineCov"> 20 : if ( !Res ) {</span>
-<span class="lineNum"> 195 </span> : std::cerr &lt;&lt; &quot;The package lists or status file &quot;
-<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : &quot;could not be parsed or opened.&quot; &lt;&lt; std::endl;</span>
-<span class="lineNum"> 197 </span> : throw AptException(
-<span class="lineNum"> 198 </span> : &quot;The package lists or status file &quot;
-<span class="lineNum"> 199 </span><span class="lineNoCov"> 0 : &quot;could not be parsed or opened.&quot; );</span>
-<span class="lineNum"> 200 </span> : }
-<span class="lineNum"> 201 </span> :
-<span class="lineNum"> 202 </span><span class="lineCov"> 20 : m_cache = new pkgCache( m, true );</span>
-<span class="lineNum"> 203 </span><span class="lineCov"> 40 : m_policy = new pkgPolicy( m_cache );</span>
-<span class="lineNum"> 204 </span><span class="lineCov"> 40 : if ( ReadPinFile( *m_policy ) == false )</span>
-<span class="lineNum"> 205 </span><span class="lineNoCov"> 0 : throw wibble::exception::System( &quot;error reading pin file&quot; );</span>
-<span class="lineNum"> 206 </span><span class="lineCov"> 20 : m_progress-&gt;Done();</span>
-<span class="lineNum"> 207 </span><span class="lineCov"> 20 : }</span>
-<span class="lineNum"> 208 </span> :
-<span class="lineNum"> 209 </span><span class="lineCov"> 74 : void invalidate() {</span>
-<span class="lineNum"> 210 </span><span class="lineCov"> 74 : if ( _config-&gt;FindB(&quot;Initialized&quot;) ) {</span>
-<span class="lineNum"> 211 </span><span class="lineCov"> 74 : _system-&gt;UnLock();</span>
-<span class="lineNum"> 212 </span> : }
-<span class="lineNum"> 213 </span> :
-<span class="lineNum"> 214 </span><span class="lineCov"> 74 : delete m_state;</span>
-<span class="lineNum"> 215 </span><span class="lineCov"> 74 : m_state = 0;</span>
-<span class="lineNum"> 216 </span><span class="lineCov"> 74 : delete m_policy;</span>
-<span class="lineNum"> 217 </span><span class="lineCov"> 74 : m_policy = 0;</span>
-<span class="lineNum"> 218 </span><span class="lineCov"> 74 : delete m_cache;</span>
-<span class="lineNum"> 219 </span><span class="lineCov"> 74 : m_cache = 0;</span>
-<span class="lineNum"> 220 </span><span class="lineCov"> 74 : }</span>
-<span class="lineNum"> 221 </span> :
-<span class="lineNum"> 222 </span> : pkgCache::VerIterator anyVersion( pkgCache::PkgIterator pi ) {
-<span class="lineNum"> 223 </span> : if ( pi.end() ) return pkgCache::VerIterator();
-<span class="lineNum"> 224 </span> : return pi.VersionList();
-<span class="lineNum"> 225 </span> : }
-<span class="lineNum"> 226 </span> :
-<span class="lineNum"> 227 </span><span class="lineCov"> 5 : Token candidateVersion( Token p ) {</span>
-<span class="lineNum"> 228 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = cache().FindPkg( p.package() );</span>
-<span class="lineNum"> 229 </span><span class="lineCov"> 6 : if ( pi.end() ) return Token();</span>
-<span class="lineNum"> 230 </span><span class="lineCov"> 4 : pkgCache::VerIterator vi = policy().GetCandidateVer( pi );</span>
-<span class="lineNum"> 231 </span><span class="lineCov"> 4 : if ( vi.end() ) return Token();</span>
-<span class="lineNum"> 232 </span> :
-<span class="lineNum"> 233 </span><span class="lineCov"> 4 : Token t; t._id = p.package() + &quot;_&quot; + vi.VerStr();</span>
-<span class="lineNum"> 234 </span><span class="lineCov"> 4 : return t;</span>
-<span class="lineNum"> 235 </span> : }
-<span class="lineNum"> 236 </span> :
-<span class="lineNum"> 237 </span><span class="lineCov"> 1432 : pkgCache::VerIterator candidateVersion( pkgCache::PkgIterator pi ) {</span>
-<span class="lineNum"> 238 </span><span class="lineCov"> 1432 : if ( pi.end() ) return pkgCache::VerIterator();</span>
-<span class="lineNum"> 239 </span><span class="lineCov"> 1432 : pkgCache::VerIterator vi = policy().GetCandidateVer( pi );</span>
-<span class="lineNum"> 240 </span><span class="lineCov"> 1432 : if ( vi.end() ) return pkgCache::VerIterator();</span>
-<span class="lineNum"> 241 </span><span class="lineCov"> 1432 : return vi;</span>
-<span class="lineNum"> 242 </span> : }
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span><span class="lineCov"> 1432 : pkgCache::VerIterator installedVersion( pkgCache::PkgIterator pi ) {</span>
-<span class="lineNum"> 245 </span><span class="lineCov"> 1432 : if ( pi.end() ) return pkgCache::VerIterator();</span>
-<span class="lineNum"> 246 </span> : pkgCache::VerIterator vi = pkgCache::VerIterator( cache(),
-<span class="lineNum"> 247 </span><span class="lineCov"> 1432 : cache().VerP + pi-&gt;CurrentVer );</span>
-<span class="lineNum"> 248 </span><span class="lineCov"> 1432 : if ( vi.end() ) return pkgCache::VerIterator();</span>
-<span class="lineNum"> 249 </span><span class="lineCov"> 1432 : return vi;</span>
-<span class="lineNum"> 250 </span> : }
-<span class="lineNum"> 251 </span> :
-<span class="lineNum"> 252 </span><span class="lineCov"> 27 : pkgCache::PkgIterator lookupPackage( Token t ) {</span>
-<span class="lineNum"> 253 </span><span class="lineCov"> 27 : return cache().FindPkg( t.package() );</span>
-<span class="lineNum"> 254 </span> : }
-<span class="lineNum"> 255 </span> :
-<span class="lineNum"> 256 </span><span class="lineCov"> 5 : pkgCache::VerIterator lookupVersion( Token t ) {</span>
-<span class="lineNum"> 257 </span><span class="lineCov"> 5 : if ( !t.hasVersion() )</span>
-<span class="lineNum"> 258 </span><span class="lineCov"> 5 : t = candidateVersion( t );</span>
-<span class="lineNum"> 259 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = lookupPackage( t );</span>
-<span class="lineNum"> 260 </span><span class="lineCov"> 5 : if ( pi.end() )</span>
-<span class="lineNum"> 261 </span><span class="lineCov"> 1 : return pkgCache::VerIterator();</span>
-<span class="lineNum"> 262 </span><span class="lineCov"> 4 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); ++vi)</span>
-<span class="lineNum"> 263 </span><span class="lineCov"> 4 : if ( t.version() == vi.VerStr() )</span>
-<span class="lineNum"> 264 </span><span class="lineCov"> 4 : return vi;</span>
-<span class="lineNum"> 265 </span><span class="lineNoCov"> 0 : return pkgCache::VerIterator();</span>
-<span class="lineNum"> 266 </span> : }
-<span class="lineNum"> 267 </span> :
-<span class="lineNum"> 268 </span> : static pkgCache::VerFileIterator lookupVersionFile(
-<span class="lineNum"> 269 </span><span class="lineCov"> 5 : pkgCache::VerIterator vi )</span>
-<span class="lineNum"> 270 </span> : {
-<span class="lineNum"> 271 </span><span class="lineCov"> 5 : if ( vi.end() )</span>
-<span class="lineNum"> 272 </span><span class="lineCov"> 1 : return pkgCache::VerFileIterator();</span>
-<span class="lineNum"> 273 </span><span class="lineCov"> 4 : pkgCache::VerFileIterator vfi = vi.FileList();</span>
-<span class="lineNum"> 274 </span><span class="lineCov"> 4 : for ( ; !vfi.end(); vfi++ )</span>
-<span class="lineNum"> 275 </span><span class="lineCov"> 4 : if ( ( vfi.File()-&gt;Flags &amp; pkgCache::Flag::NotSource ) == 0)</span>
-<span class="lineNum"> 276 </span><span class="lineCov"> 4 : break;</span>
-<span class="lineNum"> 277 </span><span class="lineCov"> 4 : if ( vfi.end() )</span>
-<span class="lineNum"> 278 </span><span class="lineNoCov"> 0 : vfi = vi.FileList();</span>
-<span class="lineNum"> 279 </span><span class="lineCov"> 4 : return vfi;</span>
-<span class="lineNum"> 280 </span> : }
-<span class="lineNum"> 281 </span> :
-<span class="lineNum"> 282 </span><span class="lineNoCov"> 0 : PackageState invalidState() {</span>
-<span class="lineNum"> 283 </span><span class="lineNoCov"> 0 : return PackageState( PackageState::NowBroken | PackageState::Keep );</span>
-<span class="lineNum"> 284 </span> : }
-<span class="lineNum"> 285 </span> :
-<span class="lineNum"> 286 </span><span class="lineCov"> 3784 : PackageState packageState( pkgCache::PkgIterator P )</span>
-<span class="lineNum"> 287 </span> : {
-<span class="lineNum"> 288 </span><span class="lineCov"> 3784 : PackageState s = 0;</span>
-<span class="lineNum"> 289 </span><span class="lineCov"> 3784 : if ( P.end() )</span>
-<span class="lineNum"> 290 </span><span class="lineNoCov"> 0 : return invalidState();</span>
-<span class="lineNum"> 291 </span><span class="lineCov"> 3784 : if ( ! ( P-&gt;CurrentState == pkgCache::State::ConfigFiles</span>
-<span class="lineNum"> 292 </span> : || P-&gt;CurrentState == pkgCache::State::NotInstalled ) )
-<span class="lineNum"> 293 </span><span class="lineCov"> 1432 : s |= PackageState::Installed;</span>
-<span class="lineNum"> 294 </span><span class="lineCov"> 3784 : if ( s &amp; PackageState::Installed &amp;&amp;</span>
-<span class="lineNum"> 295 </span> : candidateVersion( P ) != installedVersion( P ) )
-<span class="lineNum"> 296 </span><span class="lineCov"> 1 : s |= PackageState::Upgradable;</span>
-<span class="lineNum"> 297 </span><span class="lineCov"> 3784 : pkgDepCache::StateCache S = state()[ P ];</span>
-<span class="lineNum"> 298 </span><span class="lineCov"> 3784 : if ( S.Install() )</span>
-<span class="lineNum"> 299 </span><span class="lineCov"> 3 : s |= PackageState::Install;</span>
-<span class="lineNum"> 300 </span><span class="lineCov"> 3784 : if ( ( S.iFlags &amp; pkgDepCache::ReInstall )</span>
-<span class="lineNum"> 301 </span> : == pkgDepCache::ReInstall )
-<span class="lineNum"> 302 </span><span class="lineNoCov"> 0 : s |= PackageState::ReInstall;</span>
-<span class="lineNum"> 303 </span><span class="lineCov"> 3784 : if ( S.Keep() )</span>
-<span class="lineNum"> 304 </span><span class="lineCov"> 3780 : s |= PackageState::Keep;</span>
-<span class="lineNum"> 305 </span><span class="lineCov"> 3784 : if ( S.Delete() )</span>
-<span class="lineNum"> 306 </span><span class="lineCov"> 1 : s |= PackageState::Remove;</span>
-<span class="lineNum"> 307 </span><span class="lineCov"> 3784 : if ( ( S.iFlags &amp; pkgDepCache::Purge ) == pkgDepCache::Purge )</span>
-<span class="lineNum"> 308 </span><span class="lineNoCov"> 0 : s |= PackageState::Purge;</span>
-<span class="lineNum"> 309 </span><span class="lineCov"> 3784 : if ( S.NowBroken() )</span>
-<span class="lineNum"> 310 </span><span class="lineCov"> 1 : s |= PackageState::NowBroken;</span>
-<span class="lineNum"> 311 </span><span class="lineCov"> 3784 : if ( S.InstBroken() )</span>
-<span class="lineNum"> 312 </span><span class="lineNoCov"> 0 : s |= PackageState::WillBreak;</span>
-<span class="lineNum"> 313 </span><span class="lineCov"> 3784 : if ( P-&gt;SelectedState == pkgCache::State::Hold )</span>
-<span class="lineNum"> 314 </span><span class="lineNoCov"> 0 : s |= PackageState::Hold;</span>
-<span class="lineNum"> 315 </span><span class="lineCov"> 3784 : return s;</span>
-<span class="lineNum"> 316 </span> : }
-<span class="lineNum"> 317 </span> :
-<span class="lineNum"> 318 </span><span class="lineCov"> 1 : PackageState packageState( Token t ) {</span>
-<span class="lineNum"> 319 </span><span class="lineCov"> 1 : t = validate( t );</span>
-<span class="lineNum"> 320 </span><span class="lineCov"> 1 : if ( t.valid() )</span>
-<span class="lineNum"> 321 </span><span class="lineCov"> 1 : return packageState( lookupPackage( t ) );</span>
-<span class="lineNum"> 322 </span><span class="lineNoCov"> 0 : return invalidState();</span>
-<span class="lineNum"> 323 </span> : }
-<span class="lineNum"> 324 </span> :
-<span class="lineNum"> 325 </span><span class="lineCov"> 4 : Token validate( Token t ) {</span>
-<span class="lineNum"> 326 </span><span class="lineCov"> 4 : if ( t.hasVersion() )</span>
-<span class="lineNum"> 327 </span><span class="lineNoCov"> 0 : return lookupVersion( t ).end() ? Token() : t;</span>
-<span class="lineNum"> 328 </span><span class="lineCov"> 4 : return lookupPackage( t ).end() ? Token() : t;</span>
-<span class="lineNum"> 329 </span> : }
-<span class="lineNum"> 330 </span> :
-<span class="lineNum"> 331 </span><span class="lineCov"> 73 : ~AptDatabase() {</span>
-<span class="lineNum"> 332 </span><span class="lineCov"> 73 : invalidate();</span>
-<span class="lineNum"> 333 </span><span class="lineCov"> 73 : }</span>
-<span class="lineNum"> 334 </span> :
-<span class="lineNum"> 335 </span> : protected:
-<span class="lineNum"> 336 </span> : pkgCache *m_cache;
-<span class="lineNum"> 337 </span> : pkgDepCache *m_state;
-<span class="lineNum"> 338 </span> : pkgPolicy *m_policy;
-<span class="lineNum"> 339 </span> : };
-<span class="lineNum"> 340 </span> :
-<span class="lineNum"> 341 </span> : template&lt; typename Internal &gt;
-<span class="lineNum"> 342 </span> : struct AptInternalList {
-<span class="lineNum"> 343 </span> : Internal m_head;
-<span class="lineNum"> 344 </span> : typedef Internal Type;
-<span class="lineNum"> 345 </span><span class="lineCov"> 11331 : AptInternalList tail() const {</span>
-<span class="lineNum"> 346 </span><span class="lineCov"> 11331 : AptInternalList t = *this;</span>
-<span class="lineNum"> 347 </span><span class="lineCov"> 11331 : t.m_head++;</span>
-<span class="lineNum"> 348 </span> : return t;
-<span class="lineNum"> 349 </span> : }
-<span class="lineNum"> 350 </span><span class="lineCov"> 7554 : const Internal &amp;head() const { return m_head; }</span>
-<span class="lineNum"> 351 </span><span class="lineCov"> 3781 : Internal &amp;head() { return m_head; }</span>
-<span class="lineNum"> 352 </span><span class="lineCov"> 11334 : bool empty() const { return m_head.end(); }</span>
-<span class="lineNum"> 353 </span><span class="lineCov"> 3 : AptInternalList( Internal head ) : m_head( head ) {}</span>
-<span class="lineNum"> 354 </span> : AptInternalList() {}
-<span class="lineNum"> 355 </span> : };
-<span class="lineNum"> 356 </span> :
-<span class="lineNum"> 357 </span> : namespace version {
-<span class="lineNum"> 358 </span> :
-<span class="lineNum"> 359 </span> : typedef enum { Package, VersionString, Section, Architecture,
-<span class="lineNum"> 360 </span> : Depends, Recommends, Record } PropertyId;
-<span class="lineNum"> 361 </span> :
-<span class="lineNum"> 362 </span> : typedef pkgCache::VerIterator Internal;
-<span class="lineNum"> 363 </span> : template&lt; PropertyId &gt; struct PropertyType {};
-<span class="lineNum"> 364 </span> :
-<span class="lineNum"> 365 </span> : }
-<span class="lineNum"> 366 </span> :
-<span class="lineNum"> 367 </span> : namespace package {
-<span class="lineNum"> 368 </span> :
-<span class="lineNum"> 369 </span> : typedef enum { Name, Versions, AnyVersion, State, CandidateVersion,
-<span class="lineNum"> 370 </span> : InstalledVersion } PropertyId;
-<span class="lineNum"> 371 </span> : typedef pkgCache::PkgIterator Internal;
-<span class="lineNum"> 372 </span> : template&lt; PropertyId &gt; struct PropertyType {};
-<span class="lineNum"> 373 </span> :
-<span class="lineNum"> 374 </span> : struct VersionList {
-<span class="lineNum"> 375 </span> : version::Internal m_head;
-<span class="lineNum"> 376 </span> : VersionList tail() const;
-<span class="lineNum"> 377 </span> : const version::Internal &amp;head() const { return m_head; }
-<span class="lineNum"> 378 </span> : version::Internal &amp;head() { return m_head; }
-<span class="lineNum"> 379 </span> : };
-<span class="lineNum"> 380 </span> :
-<span class="lineNum"> 381 </span> : typedef AptInternalList&lt; Internal &gt; InternalList;
-<span class="lineNum"> 382 </span> :
-<span class="lineNum"> 383 </span> : }
-<span class="lineNum"> 384 </span> :
-<span class="lineNum"> 385 </span> : namespace record {
-<span class="lineNum"> 386 </span> :
-<span class="lineNum"> 387 </span> : typedef enum { Record, Name, Priority, Section, InstalledSize, Maintainer,
-<span class="lineNum"> 388 </span> : Architecture, SourcePackage, Version, Description,
-<span class="lineNum"> 389 </span> : ShortDescription, LongDescription, PackageSize } PropertyId;
-<span class="lineNum"> 390 </span> :
-<span class="lineNum"> 391 </span> : extern const char *fields[];
-<span class="lineNum"> 392 </span> :
-<span class="lineNum"> 393 </span> : typedef pkgCache::VerFileIterator Internal;
-<span class="lineNum"> 394 </span> :
-<span class="lineNum"> 395 </span> : template&lt; PropertyId &gt; struct PropertyType {
-<span class="lineNum"> 396 </span> : typedef std::string T;
-<span class="lineNum"> 397 </span> : };
-<span class="lineNum"> 398 </span> :
-<span class="lineNum"> 399 </span> : }
-<span class="lineNum"> 400 </span> : }
-<span class="lineNum"> 401 </span> : }
-<span class="lineNum"> 402 </span> :
-<span class="lineNum"> 403 </span> : #include &lt;ept/core/apt/package.h&gt;
-<span class="lineNum"> 404 </span> : #include &lt;ept/core/apt/version.h&gt;
-<span class="lineNum"> 405 </span> : #include &lt;ept/core/apt/record.h&gt;
-<span class="lineNum"> 406 </span> :
-<span class="lineNum"> 407 </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>
diff --git a/rep/ept/core/apt.test.h.gcov.html b/rep/ept/core/apt.test.h.gcov.html
deleted file mode 100644
index 8586911..0000000
--- a/rep/ept/core/apt.test.h.gcov.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!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/apt.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">60</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">60</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> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/core/list.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : using namespace ept::core;
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : struct TestCoreApt : AptTestEnvironment
-<span class="lineNum"> 10 </span><span class="lineCov"> 12 : {</span>
-<span class="lineNum"> 11 </span> : package::Source pkgs;
-<span class="lineNum"> 12 </span> : version::Source vers;
-<span class="lineNum"> 13 </span> : ept::Token t;
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span><span class="lineCov"> 12 : TestCoreApt() : pkgs( db ), vers( db ) {</span>
-<span class="lineNum"> 16 </span><span class="lineCov"> 12 : t._id = &quot;sp&quot;;</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 12 : }</span>
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span><span class="lineCov"> 1 : Test token() {</span>
-<span class="lineNum"> 20 </span><span class="lineCov"> 1 : assert_eq( t.package(), &quot;sp&quot; );</span>
-<span class="lineNum"> 21 </span><span class="lineCov"> 2 : assert_eq( t.version(), &quot;&quot; );</span>
-<span class="lineNum"> 22 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span><span class="lineCov"> 1 : Test tokenVersion() {</span>
-<span class="lineNum"> 25 </span><span class="lineCov"> 1 : ept::Token t2;</span>
-<span class="lineNum"> 26 </span><span class="lineCov"> 1 : t2._id = &quot;libwibble-dev_0.1.10&quot;;</span>
-<span class="lineNum"> 27 </span><span class="lineCov"> 1 : assert_eq( t2.package(), &quot;libwibble-dev&quot; );</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 1 : assert_eq( t2.version(), &quot;0.1.10&quot; );</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test packageName() {</span>
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : assert_eq( t.package(), pkgs.get&lt; package::Name &gt;( t ) );</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : template&lt; typename List &gt;
-<span class="lineNum"> 36 </span><span class="lineCov"> 1 : void checkPackageNameList( List l ) {</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 3779 : while ( !l.empty() ) {</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 3777 : assert_eq( l.token().package(), l.property() );</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 3777 : l = l.tail();</span>
-<span class="lineNum"> 40 </span> : }
-<span class="lineNum"> 41 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : template&lt; typename List &gt;
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : void checkVersionPackageList( List l ) {</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 1810 : while ( !l.empty() ) {</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 1808 : assert_eq( l.property().package(), l.token().package() );</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 3616 : assert_eq( l.property().version(), &quot;&quot; );</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1808 : l = l.tail();</span>
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : Test packageCount() {</span>
-<span class="lineNum"> 53 </span> : assert_eq( list::count( pkgs.list&lt; package::Name &gt;() ),
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : 3777 );</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : Test packageNameList() {</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : checkPackageNameList( pkgs.list&lt; package::Name &gt;() );</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test versionCount() {</span>
-<span class="lineNum"> 62 </span> : assert_eq( list::count( vers.list&lt; version::Package &gt;() ),
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : 1808 );</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Test versionPackage() {</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : checkVersionPackageList( vers.list&lt; version::Package &gt;() );</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test validate() {</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 1 : assert_eq( t, db.validate( t ) );</span>
-<span class="lineNum"> 72 </span> : assert_neq( ept::Token( &quot;libfoobar&quot; ),
-<span class="lineNum"> 73 </span><span class="lineCov"> 2 : db.validate( ept::Token( &quot;libfooar&quot; ) ) );</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert_eq( ept::Token(), db.validate( ept::Token( &quot;libfoobar&quot; ) ) );</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : Test packageState() {</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert( db.packageState( t ) &amp; PackageState::Keep );</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : Test packageState2() {</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ) &amp; PackageState::Keep );</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineCov"> 1 : Test exists() {</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert( pkgs.exists( t ) );</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert( !pkgs.exists( ept::Token( &quot;nonexistent-package&quot; ) ) );</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 89 </span> :
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Test invalidate() {</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 1 : assert( pkgs.exists( t ) );</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : db.invalidate();</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert( pkgs.exists( t ) );</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 95 </span> : };
-</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>
diff --git a/rep/ept/core/apt/action.h.gcov.html b/rep/ept/core/apt/action.h.gcov.html
deleted file mode 100644
index 08b2810..0000000
--- a/rep/ept/core/apt/action.h.gcov.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!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/apt/action.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - action.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">48</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">85.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">41</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 &lt;string&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/token.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 6 </span> : #include &lt;apt-pkg/algorithms.h&gt;
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : #ifndef EPT_APT_ACTION_H
-<span class="lineNum"> 9 </span> : #define EPT_APT_ACTION_H
-<span class="lineNum"> 10 </span> :
-<span class="lineNum"> 11 </span> : namespace ept {
-<span class="lineNum"> 12 </span> : namespace core {
-<span class="lineNum"> 13 </span> : namespace package {
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span><span class="lineCov"> 13 : struct Action {</span>
-<span class="lineNum"> 16 </span> : enum Type { Install, ReInstall, Remove, Keep, Purge, SystemUpgrade };
-<span class="lineNum"> 17 </span> : Token m_token;
-<span class="lineNum"> 18 </span> : Type m_type;
-<span class="lineNum"> 19 </span> :
-<span class="lineNum"> 20 </span><span class="lineCov"> 4 : Token token() { return m_token; }</span>
-<span class="lineNum"> 21 </span> : Type type() { return m_type; }
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span><span class="lineCov"> 4 : void apply( package::Source &amp;pkgs )</span>
-<span class="lineNum"> 24 </span> : {
-<span class="lineNum"> 25 </span><span class="lineCov"> 4 : Type a = m_type;</span>
-<span class="lineNum"> 26 </span><span class="lineCov"> 4 : pkgDepCache &amp;dc = pkgs.db().state();</span>
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span><span class="lineCov"> 4 : if ( a == SystemUpgrade ) {</span>
-<span class="lineNum"> 29 </span><span class="lineNoCov"> 0 : pkgDistUpgrade( dc );</span>
-<span class="lineNum"> 30 </span> : } else {
-<span class="lineNum"> 31 </span><span class="lineCov"> 4 : if ( !pkgs.exists( m_token ) )</span>
-<span class="lineNum"> 32 </span><span class="lineNoCov"> 0 : return;</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 4 : pkgCache::PkgIterator p = pkgs.lookupToken( m_token );</span>
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span><span class="lineCov"> 4 : pkgProblemResolver fix( &amp;dc );</span>
-<span class="lineNum"> 36 </span><span class="lineCov"> 8 : if ( a == Install || a == ReInstall ) {</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 2 : fix.Clear( p );</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 2 : fix.Protect( p );</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 2 : dc.MarkInstall( p, true );</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 2 : fix.InstallProtect();</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 2 : if ( a == ReInstall )</span>
-<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : dc.SetReInstall( p, true );</span>
-<span class="lineNum"> 43 </span><span class="lineCov"> 2 : } else if ( a == Remove || a == Purge ) {</span>
-<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : fix.Clear( p );</span>
-<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : fix.Protect( p );</span>
-<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : fix.Remove( p );</span>
-<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : dc.MarkDelete( p, a == Purge ? true : false );</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 2 : } else if ( a == Keep ) {</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 2 : fix.Clear( p );</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 2 : fix.Protect( p );</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 2 : dc.MarkKeep( p, true );</span>
-<span class="lineNum"> 52 </span> : }
-<span class="lineNum"> 53 </span><span class="lineCov"> 4 : fix.Resolve( true );</span>
-<span class="lineNum"> 54 </span> : }
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : bool redundant( package::Source &amp;pkgs ) {
-<span class="lineNum"> 58 </span> : if ( m_type == SystemUpgrade ) {
-<span class="lineNum"> 59 </span> : // check whether we have any upgradable packages
-<span class="lineNum"> 60 </span> : return false;
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> : if ( !pkgs.exists( m_token ) )
-<span class="lineNum"> 63 </span> : return true;
-<span class="lineNum"> 64 </span> : PackageState s = pkgs.db().packageState( m_token );
-<span class="lineNum"> 65 </span> : Type a = m_type;
-<span class="lineNum"> 66 </span> : // if ( a == Keep &amp;&amp; !s.upgradable() )
-<span class="lineNum"> 67 </span> : // return true;
-<span class="lineNum"> 68 </span> : if ( ( a == Install || a == ReInstall )
-<span class="lineNum"> 69 </span> : &amp;&amp; ( !s.upgradable() &amp;&amp; s.installed() ) )
-<span class="lineNum"> 70 </span> : return true;
-<span class="lineNum"> 71 </span> : if ( ( a == Remove || a == Purge ) &amp;&amp; !s.installed() )
-<span class="lineNum"> 72 </span> : return true;
-<span class="lineNum"> 73 </span> : return false;
-<span class="lineNum"> 74 </span> : }
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 6 : Action( Token t, Type a )</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 6 : : m_token( t ), m_type( a )</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 6 : {}</span>
-<span class="lineNum"> 79 </span> : };
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 2 : struct ActionList {</span>
-<span class="lineNum"> 82 </span> : typedef std::vector&lt; Action &gt; List;
-<span class="lineNum"> 83 </span> : List m_list;
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : void clear() {
-<span class="lineNum"> 86 </span> : m_list.clear();
-<span class="lineNum"> 87 </span> : }
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 1 : bool empty() {</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : return m_list.empty();</span>
-<span class="lineNum"> 91 </span> : }
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span><span class="lineCov"> 3 : void add( Action a ) {</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 3 : List::iterator rm = m_list.end(), i;</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 3 : for ( i = m_list.begin(); i != m_list.end(); ++i ) {</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 2 : if ( i-&gt;token() == a.token() ) {</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 2 : rm = i;</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 2 : break;</span>
-<span class="lineNum"> 99 </span> : }
-<span class="lineNum"> 100 </span> : }
-<span class="lineNum"> 101 </span><span class="lineCov"> 3 : if ( rm != m_list.end() )</span>
-<span class="lineNum"> 102 </span><span class="lineCov"> 2 : m_list.erase( rm );</span>
-<span class="lineNum"> 103 </span> : // if ( a.type() != Action::Keep )
-<span class="lineNum"> 104 </span><span class="lineCov"> 3 : m_list.push_back( a );</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : Action latest() {
-<span class="lineNum"> 108 </span> : return m_list.back();
-<span class="lineNum"> 109 </span> : }
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span><span class="lineCov"> 1 : void replay( package::Source &amp;pkgs ) {</span>
-<span class="lineNum"> 112 </span><span class="lineCov"> 2 : for ( List::iterator i = m_list.begin(); i != m_list.end(); ++i ) {</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 1 : i-&gt;apply( pkgs );</span>
-<span class="lineNum"> 114 </span> : }
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 116 </span> :
-<span class="lineNum"> 117 </span> : void prune( package::Source &amp;pkgs ) {
-<span class="lineNum"> 118 </span> : List l;
-<span class="lineNum"> 119 </span> : std::swap( l, m_list );
-<span class="lineNum"> 120 </span> : for ( List::iterator i = m_list.begin(); i != m_list.end(); ++i ) {
-<span class="lineNum"> 121 </span> : if ( !i-&gt;redundant( pkgs ) )
-<span class="lineNum"> 122 </span> : m_list.push_back( *i );
-<span class="lineNum"> 123 </span> : }
-<span class="lineNum"> 124 </span> : /* We want to do but can't bind reference parameters.... (or
-<span class="lineNum"> 125 </span> : maybe use remove_copy_if or whatever ... ugly
-<span class="lineNum"> 126 </span> : std::remove_if( m_list.begin(), m_list.end(), std::bind2nd(
-<span class="lineNum"> 127 </span> : std::mem_fun_ref( &amp;Action::redundant ), pkgs ) ); */
-<span class="lineNum"> 128 </span> : }
-<span class="lineNum"> 129 </span> : };
-<span class="lineNum"> 130 </span> :
-<span class="lineNum"> 131 </span> : }
-<span class="lineNum"> 132 </span> : }
-<span class="lineNum"> 133 </span> : }
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </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>
diff --git a/rep/ept/core/apt/action.test.h.gcov.html b/rep/ept/core/apt/action.test.h.gcov.html
deleted file mode 100644
index 86e5fcc..0000000
--- a/rep/ept/core/apt/action.test.h.gcov.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!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/apt/action.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - action.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</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> : #include &lt;ept/core/apt/action.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : using namespace ept::core;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : struct TestAptAction : AptTestEnvironment
-<span class="lineNum"> 8 </span><span class="lineCov"> 3 : {</span>
-<span class="lineNum"> 9 </span> : package::Source pkgs;
-<span class="lineNum"> 10 </span><span class="lineCov"> 3 : TestAptAction() : pkgs( db ) {}</span>
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span><span class="lineCov"> 1 : Test basic() {</span>
-<span class="lineNum"> 13 </span><span class="lineCov"> 1 : ept::Token t( &quot;sp&quot; );</span>
-<span class="lineNum"> 14 </span><span class="lineCov"> 2 : package::Action a( t, package::Action::Install );</span>
-<span class="lineNum"> 15 </span><span class="lineCov"> 1 : a.apply( pkgs );</span>
-<span class="lineNum"> 16 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ).install() );</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 1 : a = package::Action( t, package::Action::Keep );</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 1 : a.apply( pkgs );</span>
-<span class="lineNum"> 19 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ).keep() );</span>
-<span class="lineNum"> 20 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span><span class="lineCov"> 1 : Test revert() {</span>
-<span class="lineNum"> 23 </span><span class="lineCov"> 1 : ept::Token t( &quot;sp&quot; );</span>
-<span class="lineNum"> 24 </span><span class="lineCov"> 2 : package::Action a( t, package::Action::Install );</span>
-<span class="lineNum"> 25 </span><span class="lineCov"> 1 : a.apply( pkgs );</span>
-<span class="lineNum"> 26 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ).install() );</span>
-<span class="lineNum"> 27 </span><span class="lineCov"> 1 : pkgs.revertStates();</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ).keep() );</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test keep() {</span>
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : package::ActionList al;</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 1 : ept::Token t( &quot;sp&quot; );</span>
-<span class="lineNum"> 34 </span><span class="lineCov"> 2 : al.add( package::Action( t, package::Action::Install ) );</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : assert( !al.empty() );</span>
-<span class="lineNum"> 36 </span><span class="lineCov"> 2 : al.add( package::Action( t, package::Action::Remove ) );</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 1 : al.add( package::Action( t, package::Action::Keep ) );</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : al.replay( pkgs );</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 1 : assert( pkgs.get&lt; package::State &gt;( t ).keep() );</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 41 </span> : };
-</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>
diff --git a/rep/ept/core/apt/index.html b/rep/ept/core/apt/index.html
deleted file mode 100644
index ebae680..0000000
--- a/rep/ept/core/apt/index.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!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/apt</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/core/apt</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">334</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">91.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">307</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="action.h.gcov.html">action.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=85 height=10 alt="85.4%"><img src="../../../snow.png" width=15 height=10 alt="85.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">85.4&nbsp;%</td>
- <td class="coverNumHi">41&nbsp;/&nbsp;48&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="action.test.h.gcov.html">action.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">29&nbsp;/&nbsp;29&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="package.h.gcov.html">package.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=94 height=10 alt="93.9%"><img src="../../../snow.png" width=6 height=10 alt="93.9%"></td></tr></table>
- </td>
- <td class="coverPerHi">93.9&nbsp;%</td>
- <td class="coverNumHi">31&nbsp;/&nbsp;33&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="record.cpp.gcov.html">record.cpp</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">1&nbsp;/&nbsp;1&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="record.h.gcov.html">record.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=86 height=10 alt="86.5%"><img src="../../../snow.png" width=14 height=10 alt="86.5%"></td></tr></table>
- </td>
- <td class="coverPerHi">86.5&nbsp;%</td>
- <td class="coverNumHi">83&nbsp;/&nbsp;96&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="record.test.h.gcov.html">record.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">29&nbsp;/&nbsp;29&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="recordparser.cpp.gcov.html">recordparser.cpp</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=95 height=10 alt="95.2%"><img src="../../../snow.png" width=5 height=10 alt="95.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">95.2&nbsp;%</td>
- <td class="coverNumHi">59&nbsp;/&nbsp;62&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="recordparser.h.gcov.html">recordparser.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">4&nbsp;/&nbsp;4&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="version.h.gcov.html">version.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=94 height=10 alt="93.8%"><img src="../../../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">93.8&nbsp;%</td>
- <td class="coverNumHi">30&nbsp;/&nbsp;32&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/core/apt/package.h.gcov.html b/rep/ept/core/apt/package.h.gcov.html
deleted file mode 100644
index deea250..0000000
--- a/rep/ept/core/apt/package.h.gcov.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!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/apt/package.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - package.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">33</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">93.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">31</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> : #ifndef EPT_APT_PACKAGE_H
-<span class="lineNum"> 4 </span> : #define EPT_APT_PACKAGE_H
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : namespace ept {
-<span class="lineNum"> 7 </span> : namespace core {
-<span class="lineNum"> 8 </span> : namespace package {
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : struct Setup {
-<span class="lineNum"> 11 </span> : typedef ept::Token Token;
-<span class="lineNum"> 12 </span> : typedef package::Internal Internal;
-<span class="lineNum"> 13 </span> : typedef package::PropertyId PropertyId;
-<span class="lineNum"> 14 </span> : typedef package::InternalList InternalList;
-<span class="lineNum"> 15 </span> : };
-<span class="lineNum"> 16 </span> :
-<span class="lineNum"> 17 </span> : template&lt;&gt; struct PropertyType&lt; Name &gt; { typedef std::string T; };
-<span class="lineNum"> 18 </span> : template&lt;&gt; struct PropertyType&lt; Versions &gt; { typedef VersionList T; };
-<span class="lineNum"> 19 </span> : template&lt;&gt; struct PropertyType&lt; AnyVersion &gt; { typedef Token T; };
-<span class="lineNum"> 20 </span> : template&lt;&gt; struct PropertyType&lt; State &gt; { typedef PackageState T; };
-<span class="lineNum"> 21 </span> : template&lt;&gt; struct PropertyType&lt; CandidateVersion &gt; { typedef Token T; };
-<span class="lineNum"> 22 </span> : template&lt;&gt; struct PropertyType&lt; InstalledVersion &gt; { typedef Token T; };
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : struct Source : core::Source&lt; Source, Setup, PropertyType &gt;
-<span class="lineNum"> 25 </span><span class="lineCov"> 15 : {</span>
-<span class="lineNum"> 26 </span> : AptDatabase &amp;m_db;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span><span class="lineCov"> 15 : Source( AptDatabase &amp;db ) : m_db( db ) {}</span>
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span><span class="lineCov"> 3 : InternalList listInternal() {</span>
-<span class="lineNum"> 31 </span><span class="lineCov"> 3 : return InternalList( m_db.cache().PkgBegin() );</span>
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span><span class="lineCov"> 17 : Internal lookupToken( Token t ) {</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 17 : return m_db.lookupPackage( t );</span>
-<span class="lineNum"> 36 </span> : }
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span><span class="lineCov"> 3777 : Token getToken( Internal i ) {</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 3777 : Token t;</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 3777 : t._id = i.Name();</span>
-<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 8 : bool exists( Token t ) {</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 8 : if ( t.hasVersion() )</span>
-<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : return !m_db.lookupVersion( t ).end();</span>
-<span class="lineNum"> 47 </span> : else
-<span class="lineNum"> 48 </span><span class="lineCov"> 8 : return !lookupToken( t ).end();</span>
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : Token versionToken( pkgCache::VerIterator vi ) {
-<span class="lineNum"> 52 </span> : if ( vi.end() )
-<span class="lineNum"> 53 </span> : return Token();
-<span class="lineNum"> 54 </span> : return Token( std::string( vi.ParentPkg().Name() ) + &quot;_&quot; + vi.VerStr() );
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 58 </span> : typename PropertyType&lt; p &gt;::T getInternal( Internal );
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span> : template&lt; typename List &gt;
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : void revertState( List l ) {</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 3779 : while ( !l.empty() ) {</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 3777 : PackageState s = getInternal&lt; State &gt;( l.head() );</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 3777 : if ( !s.keep() || s.purge() ) {</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 2 : pkgDepCache::StateCache &amp;S = db().state()[ l.head() ];</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 2 : db().state().MarkKeep( l.head(), false, false );</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 2 : S.iFlags &amp;= ~pkgDepCache::Purge;</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 2 : S.iFlags &amp;= ~pkgDepCache::ReInstall;</span>
-<span class="lineNum"> 69 </span> : }
-<span class="lineNum"> 70 </span><span class="lineCov"> 3777 : l = l.tail();</span>
-<span class="lineNum"> 71 </span> : }
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : void revertStates() {</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : pkgDepCache::ActionGroup group( db().state() );</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : revertState( listInternal() );</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : typedef ComposedList&lt; State &gt; ChangeList;
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : static bool isChanged( Token t, PackageState s );
-<span class="lineNum"> 82 </span> : static bool isUpgradable( Token t, PackageState s );
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : PropertyFilter&lt; State, __typeof( &amp;isChanged ) &gt;::T changedList() {
-<span class="lineNum"> 85 </span> : return propertyFilter&lt; State &gt;( isChanged );
-<span class="lineNum"> 86 </span> : }
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : PropertyFilter&lt; State, __typeof( &amp;isUpgradable ) &gt;::T upgradableList() {
-<span class="lineNum"> 89 </span> : return propertyFilter&lt; State &gt;( isUpgradable );
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 9 : AptDatabase &amp;db() { return m_db; }</span>
-<span class="lineNum"> 93 </span> : };
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span><span class="lineCov"> 3778 : template&lt;&gt; inline std::string Source::getInternal&lt; Name &gt;( Internal i ) {</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 3778 : return i.Name();</span>
-<span class="lineNum"> 97 </span> : }
-<span class="lineNum"> 98 </span> :
-<span class="lineNum"> 99 </span><span class="lineCov"> 3783 : template&lt;&gt; inline PackageState Source::getInternal&lt; State &gt;( Internal i ) {</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 3783 : return m_db.packageState( i );</span>
-<span class="lineNum"> 101 </span> : }
-<span class="lineNum"> 102 </span> :
-<span class="lineNum"> 103 </span> : template&lt;&gt; inline Token Source::getInternal&lt; CandidateVersion &gt;( Internal i ) {
-<span class="lineNum"> 104 </span> : return versionToken( m_db.candidateVersion( i ) );
-<span class="lineNum"> 105 </span> : }
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : template&lt;&gt; inline Token Source::getInternal&lt; AnyVersion &gt;( Internal i ) {
-<span class="lineNum"> 108 </span> : return versionToken( m_db.candidateVersion( i ) );
-<span class="lineNum"> 109 </span> : }
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span> : template&lt;&gt; inline Token Source::getInternal&lt; InstalledVersion &gt;( Internal i ) {
-<span class="lineNum"> 112 </span> : return versionToken( m_db.installedVersion( i ) );
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span> : inline bool Source::isChanged( Token, PackageState s ) {
-<span class="lineNum"> 116 </span> : return s.modify();
-<span class="lineNum"> 117 </span> : }
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : inline bool Source::isUpgradable( Token, PackageState s ) {
-<span class="lineNum"> 120 </span> : return s.upgradable();
-<span class="lineNum"> 121 </span> : }
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : }
-<span class="lineNum"> 124 </span> : }
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </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>
diff --git a/rep/ept/core/apt/record.cpp.gcov.html b/rep/ept/core/apt/record.cpp.gcov.html
deleted file mode 100644
index 453b7a7..0000000
--- a/rep/ept/core/apt/record.cpp.gcov.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!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/apt/record.cpp</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.cpp</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">1</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">1</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> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : namespace ept {
-<span class="lineNum"> 4 </span> : namespace core {
-<span class="lineNum"> 5 </span> : namespace record {
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : // needs to be kept in sync with record::PropertyId, see apt.h
-<span class="lineNum"> 8 </span> : const char *fields[] = {
-<span class="lineNum"> 9 </span> : &quot;&quot;, &quot;Package&quot;, &quot;Priority&quot;, &quot;Section&quot;, &quot;Installed-Size&quot;,
-<span class="lineNum"> 10 </span> : &quot;Maintainer&quot;, &quot;Architecture&quot;, &quot;Source&quot;, &quot;Version&quot;,
-<span class="lineNum"> 11 </span> : &quot;Description&quot;, &quot;&quot;, &quot;&quot;, &quot;Size&quot;
-<span class="lineNum"> 12 </span> : };
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span> : }
-<span class="lineNum"> 15 </span> : }
-<span class="lineNum"> 16 </span><span class="lineCov"> 3 : }</span>
-</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>
diff --git a/rep/ept/core/apt/record.h.gcov.html b/rep/ept/core/apt/record.h.gcov.html
deleted file mode 100644
index 4e0e3a4..0000000
--- a/rep/ept/core/apt/record.h.gcov.html
+++ /dev/null
@@ -1,355 +0,0 @@
-<!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/apt/record.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">96</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">86.5 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">83</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 &lt;ept/core/apt/recordparser.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #ifndef EPT_APT_RECORD_H
-<span class="lineNum"> 6 </span> : #define EPT_APT_RECORD_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> : namespace record {
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : struct Source;
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span> : struct InternalList {
-<span class="lineNum"> 15 </span> : Source *m_source;
-<span class="lineNum"> 16 </span> : size_t m_idx;
-<span class="lineNum"> 17 </span> :
-<span class="lineNum"> 18 </span> : Internal head();
-<span class="lineNum"> 19 </span> : const Internal head() const;
-<span class="lineNum"> 20 </span> : bool empty() const;
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span><span class="lineCov"> 870 : InternalList tail() const {</span>
-<span class="lineNum"> 23 </span><span class="lineCov"> 870 : InternalList t = *this;</span>
-<span class="lineNum"> 24 </span><span class="lineCov"> 870 : ++ t.m_idx;</span>
-<span class="lineNum"> 25 </span> : return t;
-<span class="lineNum"> 26 </span> : }
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span><span class="lineCov"> 2 : InternalList( Source &amp;s )</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 2 : : m_source( &amp;s ), m_idx( 0 )</span>
-<span class="lineNum"> 30 </span><span class="lineCov"> 2 : {}</span>
-<span class="lineNum"> 31 </span> : };
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : struct Setup {
-<span class="lineNum"> 34 </span> : typedef ept::Token Token;
-<span class="lineNum"> 35 </span> : typedef record::Internal Internal;
-<span class="lineNum"> 36 </span> : typedef record::PropertyId PropertyId;
-<span class="lineNum"> 37 </span> : typedef record::InternalList InternalList;
-<span class="lineNum"> 38 </span> : };
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span> : template&lt;&gt; struct PropertyType&lt; InstalledSize &gt; { typedef int T; };
-<span class="lineNum"> 41 </span> : template&lt;&gt; struct PropertyType&lt; PackageSize &gt; { typedef int T; };
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : struct Parser: RecordParser
-<span class="lineNum"> 44 </span><span class="lineCov"> 1310 : {</span>
-<span class="lineNum"> 45 </span> : bool parseBool(bool&amp; def, const std::string&amp; str) const
-<span class="lineNum"> 46 </span> : {
-<span class="lineNum"> 47 </span> : // Believe it or not, this is what apt does to interpret bool fields
-<span class="lineNum"> 48 </span> : if (str == &quot;no&quot; || str == &quot;false&quot; || str == &quot;without&quot; ||
-<span class="lineNum"> 49 </span> : str == &quot;off&quot; || str == &quot;disable&quot;)
-<span class="lineNum"> 50 </span> : return false;
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span> : if (str == &quot;yes&quot; || str == &quot;true&quot; || str == &quot;with&quot; ||
-<span class="lineNum"> 53 </span> : str == &quot;on&quot; || str == &quot;enable&quot;)
-<span class="lineNum"> 54 </span> : return true;
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : return def;
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : public:
-<span class="lineNum"> 60 </span> : Parser() : RecordParser() {}
-<span class="lineNum"> 61 </span><span class="lineCov"> 1310 : Parser(const std::string&amp; str) : RecordParser(str) {}</span>
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 64 </span> : typename PropertyType&lt; p &gt;::T parse( typename PropertyType&lt; p &gt;::T def,
-<span class="lineNum"> 65 </span> : std::string data );
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span> : template&lt; typename T &gt;
-<span class="lineNum"> 68 </span> : struct Default {
-<span class="lineNum"> 69 </span> : static T def;
-<span class="lineNum"> 70 </span> : };
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : template&lt; typename T &gt; T parse( const T &amp;def,
-<span class="lineNum"> 73 </span> : const std::string &amp;field ) const;
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 76 </span> : typename PropertyType&lt; p &gt;::T get(
-<span class="lineNum"> 77 </span> : const typename PropertyType&lt; p &gt;::T &amp;def
-<span class="lineNum"> 78 </span><span class="lineCov"> 1308 : = Default&lt; typename PropertyType&lt; p &gt;::T &gt;::def ) const</span>
-<span class="lineNum"> 79 </span> : {
-<span class="lineNum"> 80 </span> : return parse&lt; typename PropertyType&lt; p &gt;::T &gt;( def,
-<span class="lineNum"> 81 </span><span class="lineCov"> 1308 : lookup( fields[ p ] ) );</span>
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : };
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span><span class="lineCov"> 25 : template&lt; typename T &gt; T Parser::Default&lt; T &gt;::def = T();</span>
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : template&lt;&gt; inline std::string Parser::get&lt; ShortDescription &gt;(
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : const std::string&amp; def ) const</span>
-<span class="lineNum"> 90 </span> : {
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : std::string str = lookup( fields[ Description ] );</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 4 : if (str == std::string())</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : return def;</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : size_t pos = str.find(&quot;\n&quot;);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span>
-<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : return str;</span>
-<span class="lineNum"> 97 </span> : else
-<span class="lineNum"> 98 </span><span class="lineCov"> 1 : return str.substr(0, pos);</span>
-<span class="lineNum"> 99 </span> : }
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : template&lt;&gt; inline std::string Parser::get&lt; LongDescription &gt;(
-<span class="lineNum"> 102 </span> : const std::string&amp; def ) const
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span> : std::string str = lookup( fields[ Description ] );
-<span class="lineNum"> 105 </span> : if (str == std::string())
-<span class="lineNum"> 106 </span> : return def;
-<span class="lineNum"> 107 </span> : size_t pos = str.find(&quot;\n&quot;);
-<span class="lineNum"> 108 </span> : if (pos == std::string::npos)
-<span class="lineNum"> 109 </span> : return str;
-<span class="lineNum"> 110 </span> : else
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span> : // Trim trailing spaces
-<span class="lineNum"> 113 </span> : for (++pos; pos &lt; str.size() &amp;&amp; isspace(str[pos]); ++pos)
-<span class="lineNum"> 114 </span> : ;
-<span class="lineNum"> 115 </span> : return str.substr(pos);
-<span class="lineNum"> 116 </span> : }
-<span class="lineNum"> 117 </span> : }
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : template&lt;&gt; inline std::string Parser::parse&lt; std::string &gt;(
-<span class="lineNum"> 120 </span><span class="lineCov"> 1307 : const std::string&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 121 </span> : {
-<span class="lineNum"> 122 </span><span class="lineCov"> 1307 : if (str == std::string())</span>
-<span class="lineNum"> 123 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 1307 : return str;</span>
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : template&lt;&gt; inline int Parser::parse&lt; int &gt;(
-<span class="lineNum"> 128 </span><span class="lineCov"> 1 : const int&amp; def, const std::string&amp; str) const</span>
-<span class="lineNum"> 129 </span> : {
-<span class="lineNum"> 130 </span><span class="lineCov"> 1 : if (str == string())</span>
-<span class="lineNum"> 131 </span><span class="lineNoCov"> 0 : return def;</span>
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return (size_t)strtoul(str.c_str(), NULL, 10);</span>
-<span class="lineNum"> 133 </span> : }
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> : struct Source : core::Source&lt; Source, Setup, PropertyType &gt;
-<span class="lineNum"> 136 </span><span class="lineCov"> 6 : {</span>
-<span class="lineNum"> 137 </span> : AptDatabase &amp;m_db;
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : /* caching */
-<span class="lineNum"> 140 </span> : pkgCache::PkgFileIterator lastFile;
-<span class="lineNum"> 141 </span> : FileFd file;
-<span class="lineNum"> 142 </span> : size_t lastOffset;
-<span class="lineNum"> 143 </span> :
-<span class="lineNum"> 144 </span> : /* in-order retrieval of records, for InternalList */
-<span class="lineNum"> 145 </span> : typedef vector&lt; pkgCache::VerFile * &gt; VfList;
-<span class="lineNum"> 146 </span> : VfList m_vflist;
-<span class="lineNum"> 147 </span> :
-<span class="lineNum"> 148 </span><span class="lineCov"> 1742 : VfList &amp;vfList() {</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 1742 : if ( m_vflist.size() &gt; 0 )</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 1741 : return m_vflist;</span>
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span><span class="lineCov"> 1 : m_vflist.reserve(m_db.cache().HeaderP-&gt;PackageCount + 1);</span>
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : // Populate the vector of versions to print
-<span class="lineNum"> 155 </span><span class="lineCov"> 3778 : for (pkgCache::PkgIterator pi = m_db.cache().PkgBegin(); !pi.end(); ++pi)</span>
-<span class="lineNum"> 156 </span> : {
-<span class="lineNum"> 157 </span><span class="lineCov"> 3777 : if (pi-&gt;VersionList == 0)</span>
-<span class="lineNum"> 158 </span><span class="lineCov"> 1989 : continue;</span>
-<span class="lineNum"> 159 </span> :
-<span class="lineNum"> 160 </span><span class="lineCov"> 3596 : for( pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); ++vi ) {</span>
-<span class="lineNum"> 161 </span> :
-<span class="lineNum"> 162 </span> : // Choose a valid file that contains the record for this version
-<span class="lineNum"> 163 </span><span class="lineCov"> 1808 : pkgCache::VerFileIterator vfi = vi.FileList();</span>
-<span class="lineNum"> 164 </span><span class="lineCov"> 3181 : for ( ; !vfi.end(); ++vfi )</span>
-<span class="lineNum"> 165 </span><span class="lineCov"> 1808 : if ((vfi.File()-&gt;Flags &amp; pkgCache::Flag::NotSource) == 0)</span>
-<span class="lineNum"> 166 </span><span class="lineCov"> 435 : break;</span>
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span><span class="lineCov"> 1808 : if ( !vfi.end() )</span>
-<span class="lineNum"> 169 </span><span class="lineCov"> 435 : m_vflist.push_back( vfi );</span>
-<span class="lineNum"> 170 </span> : }
-<span class="lineNum"> 171 </span> : }
-<span class="lineNum"> 172 </span> :
-<span class="lineNum"> 173 </span><span class="lineCov"> 1 : sort(m_vflist.begin(), m_vflist.end(), localityCompare);</span>
-<span class="lineNum"> 174 </span><span class="lineCov"> 1 : return m_vflist;</span>
-<span class="lineNum"> 175 </span> : }
-<span class="lineNum"> 176 </span> :
-<span class="lineNum"> 177 </span><span class="lineCov"> 6 : Source( AptDatabase &amp;db ) : m_db( db ) {}</span>
-<span class="lineNum"> 178 </span> :
-<span class="lineNum"> 179 </span><span class="lineCov"> 2 : InternalList listInternal() {</span>
-<span class="lineNum"> 180 </span><span class="lineCov"> 2 : return InternalList( *this );</span>
-<span class="lineNum"> 181 </span> : }
-<span class="lineNum"> 182 </span> :
-<span class="lineNum"> 183 </span><span class="lineCov"> 5 : Internal lookupToken( Token t ) {</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 5 : return m_db.lookupVersionFile( m_db.lookupVersion( t ) );</span>
-<span class="lineNum"> 185 </span> : }
-<span class="lineNum"> 186 </span> :
-<span class="lineNum"> 187 </span> : // Sort a version list by package file locality
-<span class="lineNum"> 188 </span> : static bool localityCompare(const pkgCache::VerFile* a,
-<span class="lineNum"> 189 </span><span class="lineCov"> 4371 : const pkgCache::VerFile* b)</span>
-<span class="lineNum"> 190 </span> : {
-<span class="lineNum"> 191 </span><span class="lineCov"> 4371 : if (a == 0 &amp;&amp; b == 0)</span>
-<span class="lineNum"> 192 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 193 </span><span class="lineCov"> 4371 : if (a == 0)</span>
-<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 195 </span><span class="lineCov"> 4371 : if (b == 0)</span>
-<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 197 </span> :
-<span class="lineNum"> 198 </span><span class="lineCov"> 4371 : if (a-&gt;File == b-&gt;File)</span>
-<span class="lineNum"> 199 </span><span class="lineCov"> 4371 : return a-&gt;Offset &lt; b-&gt;Offset;</span>
-<span class="lineNum"> 200 </span><span class="lineNoCov"> 0 : return a-&gt;File &lt; b-&gt;File;</span>
-<span class="lineNum"> 201 </span> : }
-<span class="lineNum"> 202 </span> :
-<span class="lineNum"> 203 </span> : void invalidate() {
-<span class="lineNum"> 204 </span> : core::Source&lt; Source, Setup, PropertyType &gt;::invalidate();
-<span class="lineNum"> 205 </span> : lastFile = pkgCache::PkgFileIterator();
-<span class="lineNum"> 206 </span> : }
-<span class="lineNum"> 207 </span> :
-<span class="lineNum"> 208 </span><span class="lineCov"> 1311 : std::string getRecord( Internal vfi ) {</span>
-<span class="lineNum"> 209 </span><span class="lineCov"> 1311 : if ( vfi.Cache() == 0 || vfi.end() )</span>
-<span class="lineNum"> 210 </span><span class="lineCov"> 1 : return &quot;&quot;;</span>
-<span class="lineNum"> 211 </span> :
-<span class="lineNum"> 212 </span><span class="lineCov"> 1310 : if ((lastFile.Cache() == 0)</span>
-<span class="lineNum"> 213 </span> : || vfi-&gt;File + m_db.cache().PkgFileP != lastFile)
-<span class="lineNum"> 214 </span> : {
-<span class="lineNum"> 215 </span> : lastFile = pkgCache::PkgFileIterator(
-<span class="lineNum"> 216 </span><span class="lineCov"> 5 : m_db.cache(), vfi-&gt;File + m_db.cache().PkgFileP);</span>
-<span class="lineNum"> 217 </span><span class="lineCov"> 5 : if (!lastFile.IsOk())</span>
-<span class="lineNum"> 218 </span> : throw wibble::exception::System(
-<span class="lineNum"> 219 </span> : std::string(&quot;Reading the&quot;
-<span class="lineNum"> 220 </span> : &quot; data record for a package from file &quot;)
-<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 5 : if (file.IsOpen())</span>
-<span class="lineNum"> 223 </span><span class="lineNoCov"> 0 : file.Close();</span>
-<span class="lineNum"> 224 </span><span class="lineCov"> 5 : if (!file.Open(lastFile.FileName(), FileFd::ReadOnly))</span>
-<span class="lineNum"> 225 </span> : throw wibble::exception::System( std::string(&quot;Opening file &quot;)
-<span class="lineNum"> 226 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span>
-<span class="lineNum"> 227 </span><span class="lineCov"> 5 : lastOffset = 0;</span>
-<span class="lineNum"> 228 </span> : }
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span> : // If we start near were we ended, avoid a seek
-<span class="lineNum"> 231 </span> : // and enlarge the read a bit
-<span class="lineNum"> 232 </span><span class="lineCov"> 1310 : size_t slack = vfi-&gt;Offset - lastOffset;</span>
-<span class="lineNum"> 233 </span><span class="lineCov"> 1310 : if ( slack &gt; 128 ) // mornfall: was 8, making it 128</span>
-<span class="lineNum"> 234 </span> : {
-<span class="lineNum"> 235 </span><span class="lineCov"> 871 : slack = 0;</span>
-<span class="lineNum"> 236 </span><span class="lineCov"> 871 : if ( !file.Seek( vfi-&gt;Offset ) )</span>
-<span class="lineNum"> 237 </span> : throw wibble::exception::System(
-<span class="lineNum"> 238 </span> : std::string(&quot;Cannot seek to package record in file &quot;)
-<span class="lineNum"> 239 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span>
-<span class="lineNum"> 240 </span> : }
-<span class="lineNum"> 241 </span> :
-<span class="lineNum"> 242 </span><span class="lineCov"> 1310 : char buffer[vfi-&gt;Size + slack + 1];</span>
-<span class="lineNum"> 243 </span><span class="lineCov"> 1310 : if (!file.Read(buffer, vfi-&gt;Size + slack))</span>
-<span class="lineNum"> 244 </span> : throw wibble::exception::System(
-<span class="lineNum"> 245 </span> : std::string(&quot;Cannot read package &quot;
-<span class="lineNum"> 246 </span><span class="lineNoCov"> 0 : &quot;record in file &quot;) + lastFile.FileName() );</span>
-<span class="lineNum"> 247 </span> :
-<span class="lineNum"> 248 </span><span class="lineCov"> 1310 : buffer[vfi-&gt;Size + slack] = '\0';</span>
-<span class="lineNum"> 249 </span> : //cerr &lt;&lt; &quot;Data read (slack: &quot; &lt;&lt; slack &lt;&lt; &quot;)&quot; &lt;&lt; endl;
-<span class="lineNum"> 250 </span> :
-<span class="lineNum"> 251 </span><span class="lineCov"> 1310 : lastOffset = vfi-&gt;Offset + vfi-&gt;Size;</span>
-<span class="lineNum"> 252 </span> :
-<span class="lineNum"> 253 </span><span class="lineCov"> 1310 : return string(buffer+slack);</span>
-<span class="lineNum"> 254 </span> : }
-<span class="lineNum"> 255 </span> :
-<span class="lineNum"> 256 </span><span class="lineCov"> 435 : Token getToken( Internal i ) {</span>
-<span class="lineNum"> 257 </span><span class="lineCov"> 435 : Token t;</span>
-<span class="lineNum"> 258 </span><span class="lineCov"> 435 : t._id = getInternal&lt; Name &gt;( i ) + &quot;_&quot; + getInternal&lt; Version &gt;( i );</span>
-<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 260 </span> : }
-<span class="lineNum"> 261 </span> :
-<span class="lineNum"> 262 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 263 </span><span class="lineCov"> 1310 : typename PropertyType&lt; p &gt;::T getInternal( Internal i ) {</span>
-<span class="lineNum"> 264 </span><span class="lineCov"> 1310 : Parser rec( getRecord( i ) );</span>
-<span class="lineNum"> 265 </span><span class="lineCov"> 1310 : return rec.get&lt; p &gt;();</span>
-<span class="lineNum"> 266 </span> : }
-<span class="lineNum"> 267 </span> : };
-<span class="lineNum"> 268 </span> :
-<span class="lineNum"> 269 </span><span class="lineCov"> 1 : template&lt;&gt; inline std::string Source::getInternal&lt; Record &gt;( Internal i ) {</span>
-<span class="lineNum"> 270 </span><span class="lineCov"> 1 : assert( !i.end() );</span>
-<span class="lineNum"> 271 </span><span class="lineCov"> 1 : return getRecord( i );</span>
-<span class="lineNum"> 272 </span> : }
-<span class="lineNum"> 273 </span> :
-<span class="lineNum"> 274 </span><span class="lineCov"> 870 : inline const Internal InternalList::head() const {</span>
-<span class="lineNum"> 275 </span> : return pkgCache::VerFileIterator( m_source-&gt;m_db.cache(),
-<span class="lineNum"> 276 </span><span class="lineCov"> 870 : m_source-&gt;vfList()[ m_idx ] );</span>
-<span class="lineNum"> 277 </span> : }
-<span class="lineNum"> 278 </span> :
-<span class="lineNum"> 279 </span><span class="lineCov"> 872 : inline bool InternalList::empty() const {</span>
-<span class="lineNum"> 280 </span><span class="lineCov"> 872 : return m_idx == m_source-&gt;vfList().size();</span>
-<span class="lineNum"> 281 </span> : }
-<span class="lineNum"> 282 </span> :
-<span class="lineNum"> 283 </span> :
-<span class="lineNum"> 284 </span> : }
-<span class="lineNum"> 285 </span> : }
-<span class="lineNum"> 286 </span> : }
-<span class="lineNum"> 287 </span> :
-<span class="lineNum"> 288 </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>
diff --git a/rep/ept/core/apt/record.test.h.gcov.html b/rep/ept/core/apt/record.test.h.gcov.html
deleted file mode 100644
index afee746..0000000
--- a/rep/ept/core/apt/record.test.h.gcov.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!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/apt/record.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</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> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : using namespace ept::core;
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : struct TestAptRecord : AptTestEnvironment
-<span class="lineNum"> 9 </span><span class="lineCov"> 6 : {</span>
-<span class="lineNum"> 10 </span> : record::Source recs;
-<span class="lineNum"> 11 </span> : ept::Token t;
-<span class="lineNum"> 12 </span> :
-<span class="lineNum"> 13 </span><span class="lineCov"> 6 : TestAptRecord() : recs( db ) {</span>
-<span class="lineNum"> 14 </span><span class="lineCov"> 6 : t._id = &quot;sp&quot;;</span>
-<span class="lineNum"> 15 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 16 </span> :
-<span class="lineNum"> 17 </span><span class="lineCov"> 1 : Test checkLookup() {</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 1 : recs.get&lt; record::Record &gt;( t );</span>
-<span class="lineNum"> 19 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span><span class="lineCov"> 1 : Test checkLookupValue() {</span>
-<span class="lineNum"> 22 </span><span class="lineCov"> 1 : assert_eq( recs.get&lt; record::Name &gt;( t ), t.package() );</span>
-<span class="lineNum"> 23 </span> : assert_eq( recs.get&lt; record::Maintainer &gt;( t ),
-<span class="lineNum"> 24 </span><span class="lineCov"> 2 : &quot;Neil Roeth &lt;neil@debian.org&gt;&quot; );</span>
-<span class="lineNum"> 25 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span><span class="lineCov"> 1 : Test checkLookupNumeric() {</span>
-<span class="lineNum"> 28 </span> : assert_eq( recs.get&lt; record::InstalledSize &gt;( t ),
-<span class="lineNum"> 29 </span><span class="lineCov"> 1 : 600 );</span>
-<span class="lineNum"> 30 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : Test checkShortDescription() {</span>
-<span class="lineNum"> 33 </span> : assert_eq( recs.get&lt; record::ShortDescription &gt;( t ),
-<span class="lineNum"> 34 </span><span class="lineCov"> 1 : &quot;James Clark's SGML parsing tools&quot; );</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : template&lt; typename List &gt;
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : void checkRecordNameList( List l ) {</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 437 : while ( !l.empty() ) {</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 435 : assert_eq( l.property(), l.token().package() );</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 435 : l = l.tail();</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : Test checkList() {</span>
-<span class="lineNum"> 46 </span> : // there are 435 valid records in the list file
-<span class="lineNum"> 47 </span> : assert_eq( list::count( recs.list&lt;
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : record::Name &gt;() ), 435 );</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : checkRecordNameList( recs.list&lt; record::Name &gt;() );</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : Test nonexistent() {</span>
-<span class="lineNum"> 53 </span> : assert_eq( recs.get&lt; record::ShortDescription &gt;(
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : ept::Token( &quot;nonexistent-package&quot; ) ), &quot;&quot; );</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 56 </span> : };
-</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>
diff --git a/rep/ept/core/apt/recordparser.cpp.gcov.html b/rep/ept/core/apt/recordparser.cpp.gcov.html
deleted file mode 100644
index de47e25..0000000
--- a/rep/ept/core/apt/recordparser.cpp.gcov.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<!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/apt/recordparser.cpp</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - recordparser.cpp</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">62</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">95.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">59</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> : /** \file
-<span class="lineNum"> 2 </span> : * Parser for APT records
-<span class="lineNum"> 3 </span> : */
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /*
-<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : *
-<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 16 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 21 </span> : */
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;ept/core/apt/recordparser.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 26 </span> : #include &lt;cctype&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : using namespace std;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : namespace ept {
-<span class="lineNum"> 33 </span> : namespace core {
-<span class="lineNum"> 34 </span> : namespace record {
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : struct rpcompare
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span> : const RecordParser&amp; rp;
-<span class="lineNum"> 39 </span><span class="lineCov"> 1310 : rpcompare(const RecordParser&amp; rp) : rp(rp) {}</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 89600 : bool operator()(size_t a, size_t b)</span>
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span><span class="lineCov"> 89600 : return rp.name(a) &lt; rp.name(b);</span>
-<span class="lineNum"> 43 </span> : }
-<span class="lineNum"> 44 </span> : };
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span><span class="lineCov"> 1310 : void RecordParser::scan(const std::string&amp; str)</span>
-<span class="lineNum"> 47 </span> : {
-<span class="lineNum"> 48 </span><span class="lineCov"> 1310 : buffer = str;</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1310 : ends.clear();</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 1310 : sorted.clear();</span>
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span> : //cerr &lt;&lt; &quot;PARSE &quot; &lt;&lt; endl &lt;&lt; buffer &lt;&lt; &quot;*****&quot; &lt;&lt; endl;
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span> : // Scan the buffer, taking note of all ending offsets of the various fields
-<span class="lineNum"> 55 </span><span class="lineCov"> 1310 : size_t pos = 0;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1310 : size_t idx = 0;</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 29815 : while (pos &lt; buffer.size() - 1)</span>
-<span class="lineNum"> 58 </span> : {
-<span class="lineNum"> 59 </span> : //cerr &lt;&lt; &quot;PREPOS &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; buffer.substr(pos, 10) &lt;&lt; endl;
-<span class="lineNum"> 60 </span><span class="lineCov"> 28505 : pos = buffer.find(&quot;\n&quot;, pos);</span>
-<span class="lineNum"> 61 </span> : //cerr &lt;&lt; &quot;POSTPOS &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; (pos == string::npos ? &quot;NONE&quot; : buffer.substr(pos, 10)) &lt;&lt; endl;
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : // The buffer does not end with a newline
-<span class="lineNum"> 64 </span><span class="lineCov"> 28505 : if (pos == string::npos)</span>
-<span class="lineNum"> 65 </span> : {
-<span class="lineNum"> 66 </span> : //cerr &lt;&lt; &quot;ENDNOTEOL&quot; &lt;&lt; endl;
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : pos = buffer.size();</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : ends.push_back(pos);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 1 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : break;</span>
-<span class="lineNum"> 71 </span> : }
-<span class="lineNum"> 72 </span> :
-<span class="lineNum"> 73 </span><span class="lineCov"> 28504 : ++pos;</span>
-<span class="lineNum"> 74 </span> : //cerr &lt;&lt; &quot;POSTPOSINC &quot; &lt;&lt; pos &lt;&lt; &quot; left: &quot; &lt;&lt; buffer.substr(pos, 10) &lt;&lt; endl;
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span> : // The buffer ends with a newline
-<span class="lineNum"> 77 </span><span class="lineCov"> 28504 : if (pos == buffer.size())</span>
-<span class="lineNum"> 78 </span> : {
-<span class="lineNum"> 79 </span> : //cerr &lt;&lt; &quot;ENDEOL&quot; &lt;&lt; endl;
-<span class="lineNum"> 80 </span><span class="lineCov"> 1309 : ends.push_back(pos);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 1309 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1309 : break;</span>
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : // Terminate parsing on double newlines
-<span class="lineNum"> 86 </span><span class="lineCov"> 27195 : if (buffer[pos] == '\n')</span>
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span> : //cerr &lt;&lt; &quot;ENDDOUBLENL&quot; &lt;&lt; endl;
-<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : ends.push_back(pos);</span>
-<span class="lineNum"> 90 </span><span class="lineNoCov"> 0 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : break;</span>
-<span class="lineNum"> 92 </span> : }
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : // Mark the end of the field if it's not a continuation line
-<span class="lineNum"> 95 </span><span class="lineCov"> 27195 : if (!isspace(buffer[pos]))</span>
-<span class="lineNum"> 96 </span> : {
-<span class="lineNum"> 97 </span> : //cerr &lt;&lt; &quot;INNERFIELD&quot; &lt;&lt; endl;
-<span class="lineNum"> 98 </span><span class="lineCov"> 17224 : ends.push_back(pos);</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 17224 : sorted.push_back(idx++);</span>
-<span class="lineNum"> 100 </span> : } //else
-<span class="lineNum"> 101 </span> : //cerr &lt;&lt; &quot;CONTLINE&quot; &lt;&lt; endl;
-<span class="lineNum"> 102 </span> : }
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span> : // Sort the sorted array
-<span class="lineNum"> 105 </span><span class="lineCov"> 1310 : sort(sorted.begin(), sorted.end(), rpcompare(*this));</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : //for (size_t i = 0; i &lt; ends.size(); ++i)
-<span class="lineNum"> 108 </span> : // cerr &lt;&lt; ends[i] &lt;&lt; &quot;\t&quot; &lt;&lt; name(i) &lt;&lt; &quot;\t&quot; &lt;&lt; sorted[i] &lt;&lt; &quot;\t&quot; &lt;&lt; name(sorted[i]) &lt;&lt; endl;
-<span class="lineNum"> 109 </span><span class="lineCov"> 1310 : }</span>
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span><span class="lineCov"> 187124 : std::string RecordParser::field(size_t idx) const</span>
-<span class="lineNum"> 112 </span> : {
-<span class="lineNum"> 113 </span><span class="lineCov"> 187124 : if (idx &gt;= ends.size())</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : return string();</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 187123 : if (idx == 0)</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 16577 : return buffer.substr(0, ends[0]);</span>
-<span class="lineNum"> 117 </span> : else
-<span class="lineNum"> 118 </span><span class="lineCov"> 170546 : return buffer.substr(ends[idx-1], ends[idx]-ends[idx-1]);</span>
-<span class="lineNum"> 119 </span> : }
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span><span class="lineCov"> 185814 : std::string RecordParser::name(size_t idx) const</span>
-<span class="lineNum"> 122 </span> : {
-<span class="lineNum"> 123 </span><span class="lineCov"> 185814 : string res = field(idx);</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 185814 : size_t pos = res.find(&quot;:&quot;);</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 185814 : if (pos == string::npos)</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 2 : return res;</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 185812 : return res.substr(0, pos);</span>
-<span class="lineNum"> 128 </span> : }
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span><span class="lineCov"> 1310 : std::string RecordParser::lookup(size_t idx) const</span>
-<span class="lineNum"> 131 </span> : {
-<span class="lineNum"> 132 </span><span class="lineCov"> 1310 : string res = field(idx);</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 1310 : size_t pos = res.find(&quot;:&quot;);</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 1310 : if (pos == string::npos)</span>
-<span class="lineNum"> 135 </span><span class="lineCov"> 1 : return res;</span>
-<span class="lineNum"> 136 </span> : // Skip initial whitespace after the :
-<span class="lineNum"> 137 </span><span class="lineCov"> 1309 : for (++pos; pos &lt; res.size() &amp;&amp; isspace(res[pos]); ++pos)</span>
-<span class="lineNum"> 138 </span> : ;
-<span class="lineNum"> 139 </span><span class="lineCov"> 1309 : res = res.substr(pos);</span>
-<span class="lineNum"> 140 </span> : // Trim spaces at the end
-<span class="lineNum"> 141 </span><span class="lineCov"> 3927 : while (!res.empty() &amp;&amp; isspace(res[res.size() - 1]))</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 1309 : res.resize(res.size() - 1);</span>
-<span class="lineNum"> 143 </span><span class="lineCov"> 1309 : return res;</span>
-<span class="lineNum"> 144 </span> : }
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span><span class="lineCov"> 1310 : size_t RecordParser::index(const std::string&amp; str) const</span>
-<span class="lineNum"> 147 </span> : {
-<span class="lineNum"> 148 </span> : int begin, end;
-<span class="lineNum"> 149 </span> :
-<span class="lineNum"> 150 </span> : /* Binary search */
-<span class="lineNum"> 151 </span><span class="lineCov"> 1310 : begin = -1, end = size();</span>
-<span class="lineNum"> 152 </span><span class="lineCov"> 7924 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 153 </span> : {
-<span class="lineNum"> 154 </span><span class="lineCov"> 5304 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 155 </span> : //cerr &lt;&lt; &quot;Test &quot; &lt;&lt; cur &lt;&lt; &quot; &quot; &lt;&lt; str &lt;&lt; &quot; &lt; &quot; &lt;&lt; name(cur) &lt;&lt; endl;
-<span class="lineNum"> 156 </span><span class="lineCov"> 5304 : if (name(sorted[cur]) &gt; str)</span>
-<span class="lineNum"> 157 </span><span class="lineCov"> 1724 : end = cur;</span>
-<span class="lineNum"> 158 </span> : else
-<span class="lineNum"> 159 </span><span class="lineCov"> 3580 : begin = cur;</span>
-<span class="lineNum"> 160 </span> : }
-<span class="lineNum"> 161 </span> :
-<span class="lineNum"> 162 </span><span class="lineCov"> 1310 : if (begin == -1 || name(sorted[begin]) != str)</span>
-<span class="lineNum"> 163 </span><span class="lineCov"> 1 : return size();</span>
-<span class="lineNum"> 164 </span> : else
-<span class="lineNum"> 165 </span><span class="lineCov"> 1309 : return sorted[begin];</span>
-<span class="lineNum"> 166 </span> : }
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span> : }
-<span class="lineNum"> 169 </span> : }
-<span class="lineNum"> 170 </span> : }
-<span class="lineNum"> 171 </span> :
-<span class="lineNum"> 172 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/core/apt/recordparser.h.gcov.html b/rep/ept/core/apt/recordparser.h.gcov.html
deleted file mode 100644
index 13eb803..0000000
--- a/rep/ept/core/apt/recordparser.h.gcov.html
+++ /dev/null
@@ -1,165 +0,0 @@
-<!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/apt/recordparser.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - recordparser.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">4</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">4</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> : #ifndef EPT_CORE_APT_RECORDPARSER_H
-<span class="lineNum"> 3 </span> : #define EPT_CORE_APT_RECORDPARSER_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /** \file
-<span class="lineNum"> 6 </span> : * Parser for APT records
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 13 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 14 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 15 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 20 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 23 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 28 </span> : #include &lt;string&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace core {
-<span class="lineNum"> 32 </span> : namespace record {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : /**
-<span class="lineNum"> 35 </span> : * Access the fields of a package record contained inside a std::string.
-<span class="lineNum"> 36 </span> : *
-<span class="lineNum"> 37 </span> : * Implementation note: this implementation should take advantage of
-<span class="lineNum"> 38 </span> : * std::string sharing buffer space among them.
-<span class="lineNum"> 39 </span> : */
-<span class="lineNum"> 40 </span> : class RecordParser
-<span class="lineNum"> 41 </span><span class="lineCov"> 1310 : {</span>
-<span class="lineNum"> 42 </span> : /// Buffer containing the whole record
-<span class="lineNum"> 43 </span> : std::string buffer;
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : /// End offsets of the various fields in the record
-<span class="lineNum"> 46 </span> : std::vector&lt;size_t&gt; ends;
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : /// Indexes on the ends vector, sorted by field name
-<span class="lineNum"> 49 </span> : std::vector&lt;size_t&gt; sorted;
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : public:
-<span class="lineNum"> 52 </span> : RecordParser() {}
-<span class="lineNum"> 53 </span><span class="lineCov"> 1310 : RecordParser(const std::string&amp; str) { scan(str); }</span>
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span> : /// Index a new record
-<span class="lineNum"> 56 </span> : void scan(const std::string&amp; str);
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : /**
-<span class="lineNum"> 59 </span> : * Get the index of the field with the given name.
-<span class="lineNum"> 60 </span> : *
-<span class="lineNum"> 61 </span> : * size() is returned if not found
-<span class="lineNum"> 62 </span> : */
-<span class="lineNum"> 63 </span> : size_t index(const std::string&amp; str) const;
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : /// Return the field by its index
-<span class="lineNum"> 66 </span> : std::string field(size_t idx) const;
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : /// Return the name of a field by its index
-<span class="lineNum"> 69 </span> : std::string name(size_t idx) const;
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : /// Return the content of a field by its index
-<span class="lineNum"> 72 </span> : std::string lookup(size_t idx) const;
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : /// Return the content of a field by its name
-<span class="lineNum"> 75 </span><span class="lineCov"> 1310 : std::string lookup(const std::string&amp; name) const { return lookup(index(name)); }</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span> : /// Return the content of a field by its index
-<span class="lineNum"> 78 </span> : std::string operator[](size_t idx) const { return lookup(idx); }
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span> : /// Return the content of a field by its name
-<span class="lineNum"> 81 </span> : std::string operator[](const std::string&amp; name) const { return lookup(name); }
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : /// Return the entire record
-<span class="lineNum"> 84 </span> : const std::string&amp; record() const { return buffer; }
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span> : /// Return the entire record
-<span class="lineNum"> 87 </span> : std::string record() { return buffer; }
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : /// Return the number of fields in the record
-<span class="lineNum"> 90 </span><span class="lineCov"> 1311 : size_t size() const { return ends.size(); }</span>
-<span class="lineNum"> 91 </span> : };
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span> : }
-<span class="lineNum"> 94 </span> : }
-<span class="lineNum"> 95 </span> : }
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 98 </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>
diff --git a/rep/ept/core/apt/version.h.gcov.html b/rep/ept/core/apt/version.h.gcov.html
deleted file mode 100644
index b17fdfb..0000000
--- a/rep/ept/core/apt/version.h.gcov.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!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/apt/version.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - version.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">32</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">93.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">30</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> : #ifndef EPT_CORE_APT_VERSION_H
-<span class="lineNum"> 3 </span> : #define EPT_CORE_APT_VERSION_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : namespace ept {
-<span class="lineNum"> 6 </span> : namespace core {
-<span class="lineNum"> 7 </span> : namespace version {
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span><span class="lineCov"> 3616 : struct InternalList {</span>
-<span class="lineNum"> 10 </span> : package::Internal m_pkg;
-<span class="lineNum"> 11 </span> : Internal m_ver;
-<span class="lineNum"> 12 </span> :
-<span class="lineNum"> 13 </span> : typedef Internal Type;
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span><span class="lineCov"> 3616 : InternalList tail() const {</span>
-<span class="lineNum"> 16 </span><span class="lineCov"> 3616 : InternalList t = *this;</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 3616 : t.m_ver ++;</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 3616 : t.seek();</span>
-<span class="lineNum"> 19 </span> : return t;
-<span class="lineNum"> 20 </span> : }
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span><span class="lineCov"> 5424 : const Internal head() const {</span>
-<span class="lineNum"> 23 </span><span class="lineCov"> 5424 : return m_ver;</span>
-<span class="lineNum"> 24 </span> : }
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : Internal head() {
-<span class="lineNum"> 27 </span> : return m_ver;
-<span class="lineNum"> 28 </span> : }
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span><span class="lineCov"> 3618 : bool empty() const {</span>
-<span class="lineNum"> 31 </span><span class="lineCov"> 3618 : return m_pkg.end();</span>
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span><span class="lineCov"> 3618 : void seek()</span>
-<span class="lineNum"> 35 </span> : {
-<span class="lineNum"> 36 </span><span class="lineCov"> 14790 : while ( m_ver.end() &amp;&amp; !m_pkg.end() ) {</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 7554 : m_pkg ++;</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 7554 : m_ver = m_pkg.VersionList();</span>
-<span class="lineNum"> 39 </span> : }
-<span class="lineNum"> 40 </span><span class="lineCov"> 3618 : }</span>
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span><span class="lineCov"> 2 : InternalList( package::Internal i )</span>
-<span class="lineNum"> 43 </span><span class="lineCov"> 2 : : m_pkg( i )</span>
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : m_ver = m_pkg.VersionList();</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 2 : seek();</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 48 </span> : };
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : struct Setup {
-<span class="lineNum"> 51 </span> : typedef ept::Token Token;
-<span class="lineNum"> 52 </span> : typedef version::Internal Internal;
-<span class="lineNum"> 53 </span> : typedef version::PropertyId PropertyId;
-<span class="lineNum"> 54 </span> : typedef version::InternalList InternalList;
-<span class="lineNum"> 55 </span> : };
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : struct Source : core::Source&lt; Source, Setup, PropertyType &gt;
-<span class="lineNum"> 58 </span><span class="lineCov"> 12 : {</span>
-<span class="lineNum"> 59 </span> : AptDatabase &amp;m_db;
-<span class="lineNum"> 60 </span><span class="lineCov"> 12 : Source( AptDatabase &amp;db ) : m_db( db ) {}</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineCov"> 2 : InternalList listInternal() {</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 2 : return InternalList( m_db.cache().PkgBegin() );</span>
-<span class="lineNum"> 64 </span> : }
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 1808 : Token getToken( Internal i ) {</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1808 : Token t;</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1808 : t._id = std::string( i.ParentPkg().Name() ) + &quot;_&quot; + i.VerStr();</span>
-<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : Internal lookupToken( Token t ) {
-<span class="lineNum"> 73 </span> : return m_db.lookupVersion( t );
-<span class="lineNum"> 74 </span> : }
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 77 </span> : typename PropertyType&lt; p &gt;::T getInternal( Internal );
-<span class="lineNum"> 78 </span> : };
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span> : template&lt;&gt; struct PropertyType&lt; Package &gt; { typedef Token T; };
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span><span class="lineCov"> 3616 : template&lt;&gt; inline Token Source::getInternal&lt; Package &gt;( Internal i ) {</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 3616 : assert( !i.end() );</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 3616 : Token t;</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 7232 : t._id = i.ParentPkg().Name();</span>
-<span class="lineNum"> 86 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 87 </span> : }
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : }
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> : }
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </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>
diff --git a/rep/ept/core/desktop.h.gcov.html b/rep/ept/core/desktop.h.gcov.html
deleted file mode 100644
index 27d0be3..0000000
--- a/rep/ept/core/desktop.h.gcov.html
+++ /dev/null
@@ -1,344 +0,0 @@
-<!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/desktop.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktop.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">103</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">94.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">97</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++ -*- (c) 2006, 2007 Petr Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #include &lt;ept/token.h&gt;
-<span class="lineNum"> 6 </span> : #include &lt;ept/core/desktopfile.h&gt;
-<span class="lineNum"> 7 </span> : #include &lt;ept/core/source.h&gt;
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : #include &lt;set&gt;
-<span class="lineNum"> 10 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 11 </span> : #include &lt;fstream&gt;
-<span class="lineNum"> 12 </span> : #include &lt;sstream&gt;
-<span class="lineNum"> 13 </span> : #include &lt;iterator&gt;
-<span class="lineNum"> 14 </span> : #include &lt;functional&gt;
-<span class="lineNum"> 15 </span> :
-<span class="lineNum"> 16 </span> : #include &lt;dirent.h&gt;
-<span class="lineNum"> 17 </span> :
-<span class="lineNum"> 18 </span> : #ifndef EPT_CORE_DESKTOP_H
-<span class="lineNum"> 19 </span> : #define EPT_CORE_DESKTOP_H
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : namespace ept {
-<span class="lineNum"> 22 </span> : namespace core {
-<span class="lineNum"> 23 </span> : namespace desktop {
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : typedef enum { Name, Group, ShortDescription, Package, Icon } PropertyId;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : template&lt; PropertyId &gt; struct PropertyType {};
-<span class="lineNum"> 28 </span> : template&lt;&gt; struct PropertyType&lt; Name &gt; { typedef std::string T; };
-<span class="lineNum"> 29 </span> : template&lt;&gt; struct PropertyType&lt; Group &gt; { typedef std::string T; };
-<span class="lineNum"> 30 </span> : template&lt;&gt; struct PropertyType&lt; ShortDescription &gt; { typedef std::string T; };
-<span class="lineNum"> 31 </span> : template&lt;&gt; struct PropertyType&lt; Package &gt; { typedef ept::Token T; };
-<span class="lineNum"> 32 </span> : template&lt;&gt; struct PropertyType&lt; Icon &gt; { typedef std::string T; };
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : typedef std::set&lt; std::string &gt; Categories;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 64 : struct Category {</span>
-<span class="lineNum"> 37 </span> : std::string name;
-<span class="lineNum"> 38 </span><span class="lineCov"> 112 : operator std::string() const { return name; }</span>
-<span class="lineNum"> 39 </span> : };
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 80 : inline std::istream &amp;operator &gt;&gt;( std::istream &amp;i, Category &amp;cat ) {</span>
-<span class="lineNum"> 42 </span> : char c;
-<span class="lineNum"> 43 </span><span class="lineCov"> 80 : cat.name = &quot;&quot;;</span>
-<span class="lineNum"> 44 </span><span class="lineCov"> 468 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 356 : c = i.get();</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 356 : if ( c == ';' ) return i;</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 308 : cat.name += c;</span>
-<span class="lineNum"> 48 </span> : }
-<span class="lineNum"> 49 </span><span class="lineCov"> 32 : return i;</span>
-<span class="lineNum"> 50 </span> : }
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 567 : struct Entry : wibble::mixin::Comparable&lt; Entry &gt; {</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 18 : Entry() {}</span>
-<span class="lineNum"> 54 </span> : Entry( std::string n, std::string g,
-<span class="lineNum"> 55 </span> : std::string p, std::string d , std::string i )
-<span class="lineNum"> 56 </span> : : m_name( n ),
-<span class="lineNum"> 57 </span> : m_package( p ),
-<span class="lineNum"> 58 </span> : m_description( d ),
-<span class="lineNum"> 59 </span> : m_icon( i )
-<span class="lineNum"> 60 </span> : { setCategories( g ); }
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineCov"> 16 : void load( std::string file ) {</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 16 : m_id = file;</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 16 : std::ifstream i( file.c_str() );</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 16 : if ( !i.is_open() )</span>
-<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : return; // throw?</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 16 : desktop::File e;</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 16 : i &gt;&gt; e;</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 16 : i.close();</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 16 : desktop::File::Group &amp;g = e.group( &quot;Desktop Entry&quot; );</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 32 : m_name = g.entry( &quot;Name&quot; ).value;</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 32 : m_description = g.entry( &quot;Comment&quot; ).value;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 32 : if ( m_description == &quot;&quot; )</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 8 : m_description = g.entry( &quot;GenericName&quot; ).value;</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 16 : m_package = g.entry( &quot;X-AppInstall-Package&quot; ).value;</span>
-<span class="lineNum"> 76 </span> : // m_group = g.entry( &quot;Categories&quot; ).value;
-<span class="lineNum"> 77 </span><span class="lineCov"> 32 : m_icon = g.entry( &quot;Icon&quot; ).value;</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 32 : setCategories( g.entry( &quot;Categories&quot; ).value );</span>
-<span class="lineNum"> 79 </span> : }
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 16 : void setCategories( std::string s ) {</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 16 : std::istringstream i( s );</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 16 : m_categories.clear();</span>
-<span class="lineNum"> 84 </span> : std::remove_copy_if(
-<span class="lineNum"> 85 </span> : std::istream_iterator&lt; Category &gt;( i ),
-<span class="lineNum"> 86 </span> : std::istream_iterator&lt; Category &gt;(),
-<span class="lineNum"> 87 </span> : std::inserter( m_categories, m_categories.begin() ),
-<span class="lineNum"> 88 </span><span class="lineCov"> 16 : std::bind1st( std::equal_to&lt; std::string &gt;(), &quot;&quot; ) );</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 16 : }</span>
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span><span class="lineCov"> 16 : Categories categories() const { return m_categories; }</span>
-<span class="lineNum"> 92 </span> : bool inCategory( std::string c ) const {
-<span class="lineNum"> 93 </span> : return m_categories.find( c ) != m_categories.end();
-<span class="lineNum"> 94 </span> : }
-<span class="lineNum"> 95 </span><span class="lineCov"> 34 : std::string id() const { return m_id; }</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 6 : std::string name() const { return m_name; }</span>
-<span class="lineNum"> 97 </span> : std::string package() const { return m_package; }
-<span class="lineNum"> 98 </span> : std::string description() const { return m_description; }
-<span class="lineNum"> 99 </span> : std::string icon() const { return m_icon; }
-<span class="lineNum"> 100 </span> : bool operator&lt; ( const Entry &amp;o ) const {
-<span class="lineNum"> 101 </span> : if ( m_name &lt; o.m_name ) return true;
-<span class="lineNum"> 102 </span> : if ( m_name == o.m_name )
-<span class="lineNum"> 103 </span> : if ( m_package &lt; o.m_package ) return true;
-<span class="lineNum"> 104 </span> : return false;
-<span class="lineNum"> 105 </span> : }
-<span class="lineNum"> 106 </span> : protected:
-<span class="lineNum"> 107 </span> : std::string m_name, m_package, m_description, m_icon, m_id;
-<span class="lineNum"> 108 </span> : bool m_supported, m_free;
-<span class="lineNum"> 109 </span> : Categories m_categories;
-<span class="lineNum"> 110 </span> : };
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 450 : struct InternalList {</span>
-<span class="lineNum"> 113 </span> : std::string dir;
-<span class="lineNum"> 114 </span> : std::string current;
-<span class="lineNum"> 115 </span> : mutable Entry entry;
-<span class="lineNum"> 116 </span> : off_t offset;
-<span class="lineNum"> 117 </span> : mutable bool loaded;
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span><span class="lineCov"> 9 : InternalList() : dir( &quot;&quot; ), offset( -2 ), loaded( false ) {}</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 4 : InternalList( std::string d ) : dir( d ), offset( -1 ), loaded( false )</span>
-<span class="lineNum"> 121 </span> : {
-<span class="lineNum"> 122 </span><span class="lineCov"> 4 : firstFile();</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span><span class="lineCov"> 56 : Entry head() const {</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 56 : if (!loaded)</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 16 : entry.load( current );</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 56 : loaded = true;</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 56 : return entry;</span>
-<span class="lineNum"> 130 </span> : }
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span><span class="lineCov"> 33 : bool empty() const {</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 33 : return (offset == -2);</span>
-<span class="lineNum"> 134 </span> : }
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span><span class="lineCov"> 4 : void firstFile() {</span>
-<span class="lineNum"> 137 </span><span class="lineCov"> 4 : offset = -1;</span>
-<span class="lineNum"> 138 </span><span class="lineCov"> 4 : nextFile();</span>
-<span class="lineNum"> 139 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 140 </span> :
-<span class="lineNum"> 141 </span><span class="lineCov"> 16 : InternalList tail() const {</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 16 : InternalList r = *this;</span>
-<span class="lineNum"> 143 </span><span class="lineCov"> 16 : r.nextFile();</span>
-<span class="lineNum"> 144 </span><span class="lineNoCov"> 0 : return r;</span>
-<span class="lineNum"> 145 </span> : }
-<span class="lineNum"> 146 </span> :
-<span class="lineNum"> 147 </span><span class="lineCov"> 20 : void nextFile() {</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 20 : loaded = false;</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 20 : DIR *d = opendir( dir.c_str() );</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 20 : if ( !d ) {</span>
-<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : offset = -2;</span>
-<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : closedir( d );</span>
-<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : return;</span>
-<span class="lineNum"> 154 </span> : }
-<span class="lineNum"> 155 </span> :
-<span class="lineNum"> 156 </span><span class="lineCov"> 20 : if ( offset != -1 )</span>
-<span class="lineNum"> 157 </span><span class="lineCov"> 16 : seekdir( d, offset );</span>
-<span class="lineNum"> 158 </span> :
-<span class="lineNum"> 159 </span><span class="lineCov"> 20 : dirent *ent = 0;</span>
-<span class="lineNum"> 160 </span><span class="lineCov"> 48 : while ( ( ent = readdir( d ) ) != 0 ) {</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 24 : std::string name( ent-&gt;d_name );</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 48 : if ( name == &quot;.&quot; || name == &quot;..&quot; )</span>
-<span class="lineNum"> 163 </span><span class="lineCov"> 8 : continue;</span>
-<span class="lineNum"> 164 </span><span class="lineCov"> 16 : if ( !wibble::str::endsWith( name, &quot;.desktop&quot; ) )</span>
-<span class="lineNum"> 165 </span> : continue;
-<span class="lineNum"> 166 </span><span class="lineCov"> 16 : current = dir + &quot;/&quot; + name;</span>
-<span class="lineNum"> 167 </span><span class="lineCov"> 16 : offset = telldir( d );</span>
-<span class="lineNum"> 168 </span><span class="lineCov"> 16 : closedir( d );</span>
-<span class="lineNum"> 169 </span><span class="lineCov"> 16 : return;</span>
-<span class="lineNum"> 170 </span> : }
-<span class="lineNum"> 171 </span><span class="lineCov"> 4 : closedir( d );</span>
-<span class="lineNum"> 172 </span><span class="lineCov"> 4 : offset = -2;</span>
-<span class="lineNum"> 173 </span> : }
-<span class="lineNum"> 174 </span> : };
-<span class="lineNum"> 175 </span> :
-<span class="lineNum"> 176 </span> : struct Setup {
-<span class="lineNum"> 177 </span> : typedef ept::Token Token;
-<span class="lineNum"> 178 </span> : typedef Entry Internal;
-<span class="lineNum"> 179 </span> : typedef desktop::PropertyId PropertyId;
-<span class="lineNum"> 180 </span> : typedef desktop::InternalList InternalList;
-<span class="lineNum"> 181 </span> : };
-<span class="lineNum"> 182 </span> :
-<span class="lineNum"> 183 </span><span class="lineCov"> 5 : struct GroupPolicy {</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 16 : virtual std::string group( const Entry &amp;e )</span>
-<span class="lineNum"> 185 </span> : {
-<span class="lineNum"> 186 </span><span class="lineCov"> 16 : return wibble::str::fmt( e.categories() );</span>
-<span class="lineNum"> 187 </span> : }
-<span class="lineNum"> 188 </span><span class="lineCov"> 5 : virtual ~GroupPolicy() {}</span>
-<span class="lineNum"> 189 </span> : };
-<span class="lineNum"> 190 </span> :
-<span class="lineNum"> 191 </span> : struct Source : core::Source&lt; Source, Setup, PropertyType &gt;
-<span class="lineNum"> 192 </span><span class="lineCov"> 5 : {</span>
-<span class="lineNum"> 193 </span> : std::string m_dir;
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span> : GroupPolicy m_defaultPolicy;
-<span class="lineNum"> 196 </span> : GroupPolicy *m_policy;
-<span class="lineNum"> 197 </span> :
-<span class="lineNum"> 198 </span><span class="lineCov"> 5 : Source( std::string dir ) : m_dir( dir ),</span>
-<span class="lineNum"> 199 </span><span class="lineCov"> 5 : m_policy( &amp;m_defaultPolicy ) {}</span>
-<span class="lineNum"> 200 </span> :
-<span class="lineNum"> 201 </span><span class="lineCov"> 4 : InternalList listInternal() {</span>
-<span class="lineNum"> 202 </span><span class="lineCov"> 4 : return InternalList( m_dir );</span>
-<span class="lineNum"> 203 </span> : }
-<span class="lineNum"> 204 </span> :
-<span class="lineNum"> 205 </span><span class="lineCov"> 34 : Token getToken( Entry i ) {</span>
-<span class="lineNum"> 206 </span><span class="lineCov"> 34 : Token t;</span>
-<span class="lineNum"> 207 </span><span class="lineCov"> 34 : t._id = std::string( &quot;desktop:&quot; ) + i.id();</span>
-<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 209 </span> : }
-<span class="lineNum"> 210 </span> :
-<span class="lineNum"> 211 </span> : Entry lookupToken( Token t ) {
-<span class="lineNum"> 212 </span> : Entry e;
-<span class="lineNum"> 213 </span> : e.load( t.desktop() );
-<span class="lineNum"> 214 </span> : return e;
-<span class="lineNum"> 215 </span> : }
-<span class="lineNum"> 216 </span> :
-<span class="lineNum"> 217 </span> : void setGroupPolicy( GroupPolicy *p ) {
-<span class="lineNum"> 218 </span> : m_policy = p;
-<span class="lineNum"> 219 </span> : }
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span> : template&lt; PropertyId p &gt;
-<span class="lineNum"> 222 </span> : typename PropertyType&lt; p &gt;::T getInternal( Entry );
-<span class="lineNum"> 223 </span> :
-<span class="lineNum"> 224 </span><span class="lineCov"> 56 : struct IsInGroup {</span>
-<span class="lineNum"> 225 </span> : std::string g;
-<span class="lineNum"> 226 </span><span class="lineCov"> 2 : IsInGroup( std::string _g = &quot;&quot; ) : g( _g ) {}</span>
-<span class="lineNum"> 227 </span><span class="lineCov"> 8 : bool operator()( Token, std::string gr ) const {</span>
-<span class="lineNum"> 228 </span><span class="lineCov"> 8 : return gr == g;</span>
-<span class="lineNum"> 229 </span> : }
-<span class="lineNum"> 230 </span> : };
-<span class="lineNum"> 231 </span> :
-<span class="lineNum"> 232 </span><span class="lineCov"> 1 : PropertyFilter&lt; Group, IsInGroup &gt;::T group( std::string id )</span>
-<span class="lineNum"> 233 </span> : {
-<span class="lineNum"> 234 </span><span class="lineCov"> 1 : return propertyFilter&lt; Group &gt;( IsInGroup( id ) );</span>
-<span class="lineNum"> 235 </span> : }
-<span class="lineNum"> 236 </span> :
-<span class="lineNum"> 237 </span><span class="lineCov"> 4 : static std::string projectGroup( ComposedList&lt; Name &gt; t ) {</span>
-<span class="lineNum"> 238 </span><span class="lineCov"> 4 : return t.get&lt; Group &gt;();</span>
-<span class="lineNum"> 239 </span> : }
-<span class="lineNum"> 240 </span> :
-<span class="lineNum"> 241 </span> : list::Unique&lt; list::Sorted&lt;
-<span class="lineNum"> 242 </span> : list::Map&lt; ComposedList&lt; Name &gt;,
-<span class="lineNum"> 243 </span> : __typeof( std::ptr_fun( &amp;projectGroup ) ) &gt; &gt; &gt;
-<span class="lineNum"> 244 </span><span class="lineCov"> 1 : groupList() {</span>
-<span class="lineNum"> 245 </span> : return list::unique(
-<span class="lineNum"> 246 </span> : list::sort( list::map( list&lt; Name &gt;(),
-<span class="lineNum"> 247 </span><span class="lineCov"> 1 : std::ptr_fun( &amp;projectGroup ) ) ) );</span>
-<span class="lineNum"> 248 </span> : }
-<span class="lineNum"> 249 </span> : };
-<span class="lineNum"> 250 </span> :
-<span class="lineNum"> 251 </span><span class="lineCov"> 6 : template&lt;&gt; inline std::string Source::getInternal&lt; Name &gt;( Entry e ) {</span>
-<span class="lineNum"> 252 </span><span class="lineCov"> 6 : return e.name();</span>
-<span class="lineNum"> 253 </span> : }
-<span class="lineNum"> 254 </span> :
-<span class="lineNum"> 255 </span> : template&lt;&gt; inline std::string Source::getInternal&lt; Icon &gt;( Entry e ) {
-<span class="lineNum"> 256 </span> : return e.icon();
-<span class="lineNum"> 257 </span> : }
-<span class="lineNum"> 258 </span> :
-<span class="lineNum"> 259 </span> : template&lt;&gt; inline ept::Token Source::getInternal&lt; Package &gt;( Entry e ) {
-<span class="lineNum"> 260 </span> : ept::Token t;
-<span class="lineNum"> 261 </span> : t._id = e.package();
-<span class="lineNum"> 262 </span> : return t;
-<span class="lineNum"> 263 </span> : }
-<span class="lineNum"> 264 </span> :
-<span class="lineNum"> 265 </span><span class="lineCov"> 16 : template&lt;&gt; inline std::string Source::getInternal&lt; Group &gt;( Entry e ) {</span>
-<span class="lineNum"> 266 </span><span class="lineCov"> 16 : return m_policy-&gt;group( e );</span>
-<span class="lineNum"> 267 </span> : }
-<span class="lineNum"> 268 </span> :
-<span class="lineNum"> 269 </span> : template&lt;&gt; inline std::string Source::getInternal&lt; ShortDescription &gt;( Entry e ) {
-<span class="lineNum"> 270 </span> : return e.description();
-<span class="lineNum"> 271 </span> : }
-<span class="lineNum"> 272 </span> :
-<span class="lineNum"> 273 </span> : }
-<span class="lineNum"> 274 </span> : }
-<span class="lineNum"> 275 </span> : }
-<span class="lineNum"> 276 </span> :
-<span class="lineNum"> 277 </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>
diff --git a/rep/ept/core/desktop.test.h.gcov.html b/rep/ept/core/desktop.test.h.gcov.html
deleted file mode 100644
index 0d08106..0000000
--- a/rep/ept/core/desktop.test.h.gcov.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!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/desktop.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktop.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">33</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">33</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> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/core/desktop.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/core/list.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : using namespace ept::core;
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span><span class="lineCov"> 5 : struct TestDesktop {</span>
-<span class="lineNum"> 10 </span> : desktop::Source desk;
-<span class="lineNum"> 11 </span> : ept::Token t;
-<span class="lineNum"> 12 </span> :
-<span class="lineNum"> 13 </span><span class="lineCov"> 5 : TestDesktop() : desk( TEST_ENV_DIR &quot;desktop&quot; ) {}</span>
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span> : template&lt; desktop::PropertyId P, typename L &gt;
-<span class="lineNum"> 16 </span><span class="lineCov"> 3 : void checkIteration2( int c, const char **check, L l ) {</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 3 : int i = 0;</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 16 : while ( !l.empty() ) {</span>
-<span class="lineNum"> 19 </span><span class="lineCov"> 10 : assert_eq( l.head().template get&lt; P &gt;(), check[ i ] );</span>
-<span class="lineNum"> 20 </span><span class="lineCov"> 20 : l = l.tail();</span>
-<span class="lineNum"> 21 </span><span class="lineCov"> 10 : ++ i;</span>
-<span class="lineNum"> 22 </span> : }
-<span class="lineNum"> 23 </span><span class="lineCov"> 3 : assert_eq( i, c );</span>
-<span class="lineNum"> 24 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : template&lt; desktop::PropertyId P, typename L &gt;
-<span class="lineNum"> 27 </span><span class="lineCov"> 3 : void checkIteration( int c, const char **check, L l ) {</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 3 : checkIteration2&lt; P &gt;( c, check, list::sort( l ) );</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test iteration() {</span>
-<span class="lineNum"> 32 </span><span class="lineCov"> 1 : const char *check[] = { &quot;Kdict&quot;, &quot;foo&quot;, &quot;XQF&quot;, &quot;X-Server&quot; };</span>
-<span class="lineNum"> 33 </span> : checkIteration&lt; desktop::Name &gt;(
-<span class="lineNum"> 34 </span><span class="lineCov"> 1 : 4, check, desk.list&lt; desktop::Name &gt;() );</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span><span class="lineCov"> 1 : Test groupProperty() {</span>
-<span class="lineNum"> 38 </span> : const char *check[] = {
-<span class="lineNum"> 39 </span> : &quot;{ KDE, Qt, Utility }&quot;,
-<span class="lineNum"> 40 </span> : &quot;{ KDE, Qt, Utility }&quot;,
-<span class="lineNum"> 41 </span> : &quot;{ Application, Game, X-SuSE-Core-Game }&quot;,
-<span class="lineNum"> 42 </span> : &quot;{ KDE, Qt, X-KDE-information }&quot;,
-<span class="lineNum"> 43 </span><span class="lineCov"> 1 : };</span>
-<span class="lineNum"> 44 </span> : checkIteration&lt; desktop::Group &gt;(
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : 4, check, desk.list&lt; desktop::Name &gt;() );</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : Test groups() {</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : const char *check[] = { &quot;Kdict&quot;, &quot;foo&quot; };</span>
-<span class="lineNum"> 50 </span> : checkIteration&lt; desktop::Name &gt;(
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : 2, check, desk.group( &quot;{ KDE, Qt, Utility }&quot; ) );</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : Test groupList() {</span>
-<span class="lineNum"> 55 </span> : std::string check[] = {
-<span class="lineNum"> 56 </span> : &quot;{ Application, Game, X-SuSE-Core-Game }&quot;,
-<span class="lineNum"> 57 </span> : &quot;{ KDE, Qt, Utility }&quot;,
-<span class="lineNum"> 58 </span> : &quot;{ KDE, Qt, X-KDE-information }&quot;,
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : };</span>
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span><span class="lineCov"> 2 : assert_list_eq( desk.groupList(), check );</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span><span class="lineCov"> 1 : Test emptyGroupList() {</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : desktop::InternalList l;</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : assert( l.empty() );</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 68 </span> : };
-</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>
diff --git a/rep/ept/core/desktopfile.h.gcov.html b/rep/ept/core/desktopfile.h.gcov.html
deleted file mode 100644
index 9ed8552..0000000
--- a/rep/ept/core/desktopfile.h.gcov.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!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/desktopfile.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktopfile.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">77</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">75.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">58</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++ -*- (c) 2006, 2007 Petr Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 4 </span> : #include &lt;string&gt;
-<span class="lineNum"> 5 </span> : #include &lt;map&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : #ifndef EPT_CORE_DESKTOPFILE_H
-<span class="lineNum"> 8 </span> : #define EPT_CORE_DESKTOPFILE_H
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : namespace ept {
-<span class="lineNum"> 11 </span> : namespace core {
-<span class="lineNum"> 12 </span> : namespace desktop {
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span><span class="lineCov"> 32 : struct File {</span>
-<span class="lineNum"> 15 </span><span class="lineCov"> 13540 : struct Entry {</span>
-<span class="lineNum"> 16 </span> : std::string key;
-<span class="lineNum"> 17 </span> : std::string value;
-<span class="lineNum"> 18 </span> : };
-<span class="lineNum"> 19 </span> : typedef std::map&lt; std::string, Entry &gt; EntryMap;
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span><span class="lineCov"> 144 : struct Group {</span>
-<span class="lineNum"> 22 </span> : std::string name;
-<span class="lineNum"> 23 </span> : EntryMap entries;
-<span class="lineNum"> 24 </span><span class="lineCov"> 88 : Entry &amp;entry( std::string k ) { return entries[ k ]; }</span>
-<span class="lineNum"> 25 </span> : };
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : typedef std::map&lt; std::string, Group &gt; GroupMap;
-<span class="lineNum"> 28 </span> : GroupMap groups;
-<span class="lineNum"> 29 </span><span class="lineCov"> 16 : Group &amp;group( std::string k ) { return groups[ k ]; }</span>
-<span class="lineNum"> 30 </span> : };
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 1228 : inline std::istream &amp;operator &gt;&gt;( std::istream &amp;i, File::Entry &amp;e )</span>
-<span class="lineNum"> 33 </span> : {
-<span class="lineNum"> 34 </span><span class="lineCov"> 1228 : std::string spaces = &quot;&quot;; char c; bool started = false;</span>
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 1228 : e.key = &quot;&quot;;</span>
-<span class="lineNum"> 37 </span> : // read key
-<span class="lineNum"> 38 </span><span class="lineCov"> 16056 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 14820 : c = i.get();</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 14820 : if ( !started &amp;&amp; c == '\n' )</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 8 : return i &gt;&gt; e;</span>
-<span class="lineNum"> 42 </span><span class="lineCov"> 14812 : if ( isspace( c ) ) {</span>
-<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : spaces += c;</span>
-<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 45 </span> : }
-<span class="lineNum"> 46 </span><span class="lineCov"> 14812 : if ( !started &amp;&amp; c == '#' ) {</span>
-<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : while ( i.peek() != EOF &amp;&amp; i.get() != '\n' )</span>
-<span class="lineNum"> 48 </span> : ; // read till eol
-<span class="lineNum"> 49 </span><span class="lineNoCov"> 0 : return i &gt;&gt; e; // restart reading</span>
-<span class="lineNum"> 50 </span> : }
-<span class="lineNum"> 51 </span><span class="lineCov"> 14812 : started = true;</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 14812 : if ( c == '=' )</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 1212 : break;</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 13600 : e.key += spaces;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 13600 : e.key += c;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 13600 : spaces = &quot;&quot;;</span>
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span> : // std::cerr &lt;&lt; &quot;read key: &quot; &lt;&lt; e.key &lt;&lt; std::endl;
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 1220 : started = false;</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 1220 : bool backslash = false;</span>
-<span class="lineNum"> 62 </span> : // read value
-<span class="lineNum"> 63 </span><span class="lineCov"> 37496 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 36268 : c = i.get();</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 36268 : if ( c == '\n' ) {</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1212 : if ( backslash )</span>
-<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : e.value += '\\';</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1212 : return i;</span>
-<span class="lineNum"> 69 </span> : }
-<span class="lineNum"> 70 </span><span class="lineCov"> 35056 : if ( !started &amp;&amp; isspace( c ) )</span>
-<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 35056 : started = true;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 35056 : if ( backslash ) { // interpret escape sequences</span>
-<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : if ( c == '\\' ) e.value += '\\';</span>
-<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : else if ( c == 'n' ) e.value += '\n';</span>
-<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : else if ( c == 't' ) e.value += '\t';</span>
-<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : else if ( c == 'r' ) e.value += '\r';</span>
-<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : else if ( c == 's' ) e.value += ' ';</span>
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : else { e.value += '\\'; e.value += c; }</span>
-<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : backslash = false;</span>
-<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span><span class="lineCov"> 35056 : if ( c == '\\' ) {</span>
-<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : backslash = true;</span>
-<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 86 </span> : }
-<span class="lineNum"> 87 </span><span class="lineCov"> 35056 : e.value += c;</span>
-<span class="lineNum"> 88 </span> : }
-<span class="lineNum"> 89 </span><span class="lineCov"> 8 : return i;</span>
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 16 : inline std::istream &amp;operator &gt;&gt;( std::istream &amp;i, File::Group &amp;g )</span>
-<span class="lineNum"> 93 </span> : {
-<span class="lineNum"> 94 </span><span class="lineCov"> 16 : bool started = false; char c;</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 16 : g.name = &quot;&quot;;</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 256 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 240 : c = i.get();</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 240 : if ( !started &amp;&amp; isspace( c ) )</span>
-<span class="lineNum"> 99 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 240 : if ( !started &amp;&amp; c == '#' ) {</span>
-<span class="lineNum"> 101 </span><span class="lineNoCov"> 0 : while( i.peek() != EOF &amp;&amp; i.get() != '\n' )</span>
-<span class="lineNum"> 102 </span> : ; // read till eol
-<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : return i &gt;&gt; g; // restart reading</span>
-<span class="lineNum"> 104 </span> : }
-<span class="lineNum"> 105 </span><span class="lineCov"> 240 : if ( !started &amp;&amp; c == '[' ) {</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 16 : started = true;</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 16 : continue;</span>
-<span class="lineNum"> 108 </span> : }
-<span class="lineNum"> 109 </span><span class="lineCov"> 224 : if ( started &amp;&amp; c == ']' ) {</span>
-<span class="lineNum"> 110 </span><span class="lineCov"> 16 : while( i.peek() != EOF &amp;&amp; i.get() != '\n' )</span>
-<span class="lineNum"> 111 </span> : ; // read till eol
-<span class="lineNum"> 112 </span><span class="lineCov"> 16 : break;</span>
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span><span class="lineCov"> 208 : g.name += c;</span>
-<span class="lineNum"> 115 </span> : }
-<span class="lineNum"> 116 </span><span class="lineCov"> 1236 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 1220 : File::Entry e;</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 1220 : i &gt;&gt; e;</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 1220 : g.entries[ e.key ] = e;</span>
-<span class="lineNum"> 120 </span> : }
-<span class="lineNum"> 121 </span><span class="lineCov"> 16 : return i;</span>
-<span class="lineNum"> 122 </span> : }
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span><span class="lineCov"> 16 : inline std::istream &amp;operator &gt;&gt;( std::istream &amp;i, File &amp;f )</span>
-<span class="lineNum"> 125 </span> : {
-<span class="lineNum"> 126 </span><span class="lineCov"> 32 : while ( i.peek() != EOF ) {</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 16 : File::Group g;</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 16 : i &gt;&gt; g;</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 16 : f.groups[ g.name ] = g;</span>
-<span class="lineNum"> 130 </span> : }
-<span class="lineNum"> 131 </span><span class="lineCov"> 16 : return i;</span>
-<span class="lineNum"> 132 </span> : }
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> : }
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> : }
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </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>
diff --git a/rep/ept/core/index.html b/rep/ept/core/index.html
deleted file mode 100644
index bec608b..0000000
--- a/rep/ept/core/index.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!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</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/core</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">688</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">82.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">570</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.cpp.gcov.html">apt.cpp</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">7&nbsp;/&nbsp;7&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.h.gcov.html">apt.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=80 height=10 alt="79.8%"><img src="../../snow.png" width=20 height=10 alt="79.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">79.8&nbsp;%</td>
- <td class="coverNumHi">138&nbsp;/&nbsp;173&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="apt.test.h.gcov.html">apt.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">60&nbsp;/&nbsp;60&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="desktop.h.gcov.html">desktop.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=94 height=10 alt="94.2%"><img src="../../snow.png" width=6 height=10 alt="94.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">94.2&nbsp;%</td>
- <td class="coverNumHi">97&nbsp;/&nbsp;103&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="desktop.test.h.gcov.html">desktop.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">33&nbsp;/&nbsp;33&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="desktopfile.h.gcov.html">desktopfile.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=75 height=10 alt="75.3%"><img src="../../snow.png" width=25 height=10 alt="75.3%"></td></tr></table>
- </td>
- <td class="coverPerHi">75.3&nbsp;%</td>
- <td class="coverNumHi">58&nbsp;/&nbsp;77&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="source.h.gcov.html">source.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">34&nbsp;/&nbsp;34&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="xapian.cpp.gcov.html">xapian.cpp</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../amber.png" width=21 height=10 alt="21.4%"><img src="../../snow.png" width=79 height=10 alt="21.4%"></td></tr></table>
- </td>
- <td class="coverPerMed">21.4&nbsp;%</td>
- <td class="coverNumMed">12&nbsp;/&nbsp;56&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="xapian.h.gcov.html">xapian.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="87.2%"><img src="../../snow.png" width=13 height=10 alt="87.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">87.2&nbsp;%</td>
- <td class="coverNumHi">95&nbsp;/&nbsp;109&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="xapian.test.h.gcov.html">xapian.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">36&nbsp;/&nbsp;36&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/core/source.h.gcov.html b/rep/ept/core/source.h.gcov.html
deleted file mode 100644
index 2c2d8e5..0000000
--- a/rep/ept/core/source.h.gcov.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!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&nbsp;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&nbsp;lines:</td>
- <td class="headerValue" width="20%">34</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;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 &lt;ept/core/list.h&gt;
-<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&lt; typename Self, typename Setup,
-<span class="lineNum"> 12 </span> : template&lt; typename Setup::PropertyId &gt; class PType &gt;
-<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 &amp;self() { return *static_cast&lt; Self * &gt;( this ); }</span>
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : template&lt; PropertyId property &gt;
-<span class="lineNum"> 23 </span><span class="lineCov"> 13 : typename PType&lt; property &gt;::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&lt; property &gt;( 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&lt; PropertyId _property &gt;
-<span class="lineNum"> 37 </span> : struct ComposedList : wibble::mixin::Comparable&lt; ComposedList&lt; _property &gt; &gt;
-<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&lt; _property &gt;::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&lt; _property &gt;( *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&lt;( const ComposedList &amp;o ) const {</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 13 : return token() &lt; o.token();</span>
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 18 : ComposedList &amp;head() { return *this; }</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 4 : const ComposedList &amp;head() const { return *this; }</span>
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 6054 : Token token() const { return origin-&gt;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-&gt;template getInternal&lt; _property &gt;(
-<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&lt; PropertyId P &gt;
-<span class="lineNum"> 68 </span> : typename PType&lt; P &gt;::T
-<span class="lineNum"> 69 </span><span class="lineCov"> 14 : get() const {</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 14 : return origin-&gt;template getInternal&lt; P &gt;( 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 &amp;o, typename Setup::InternalList i )</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 12066 : : origin( &amp;o ), internal( i ) {}</span>
-<span class="lineNum"> 77 </span> : };
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : template&lt; PropertyId property &gt;
-<span class="lineNum"> 80 </span><span class="lineCov"> 10 : ComposedList&lt; property &gt; list()</span>
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span><span class="lineCov"> 10 : return ComposedList&lt; property &gt;( self(), self().listInternal() );</span>
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : template&lt; PropertyId P, typename F &gt;
-<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&lt; P &gt; &amp;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&lt; PropertyId P, typename F &gt;
-<span class="lineNum"> 95 </span> : struct PropertyFilter {
-<span class="lineNum"> 96 </span> : typedef typename list::Filtered&lt;
-<span class="lineNum"> 97 </span> : ComposedList&lt; P &gt;, Propertify&lt; P, F &gt; &gt; T;
-<span class="lineNum"> 98 </span> : };
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span> : template&lt; PropertyId P, typename F &gt;
-<span class="lineNum"> 101 </span> : typename PropertyFilter&lt; P, F &gt;::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&lt; P &gt;(), Propertify&lt; P, F &gt;( 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>
diff --git a/rep/ept/core/xapian.cpp.gcov.html b/rep/ept/core/xapian.cpp.gcov.html
deleted file mode 100644
index fdd7a16..0000000
--- a/rep/ept/core/xapian.cpp.gcov.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!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/xapian.cpp</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.cpp</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">56</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">21.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">12</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++ -*- (c) 2007 Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 2 </span> : // Petr Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /*
-<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 6 </span> : *
-<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 10 </span> : * (at your option) any later version.
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 15 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 20 </span> : */
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/core/xapian.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/core/apt/record.h&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/textsearch/maint/path.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;wibble/regexp.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;cctype&gt;
-<span class="lineNum"> 30 </span> : #include &lt;cmath&gt;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : #include &lt;xapian/queryparser.h&gt;
-<span class="lineNum"> 33 </span> : #include &lt;xapian/base.h&gt;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : using namespace std;
-<span class="lineNum"> 40 </span> : using namespace ept;
-<span class="lineNum"> 41 </span> : // using namespace ept::debtags;
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : namespace ept {
-<span class="lineNum"> 44 </span> : namespace core {
-<span class="lineNum"> 45 </span> : namespace xapian {
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : size_t max_index = 0;
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineCov"> 4 : Source::Source()</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 4 : : m_stem(&quot;en&quot;), m_opened( false )</span>
-<span class="lineNum"> 51 </span> : {
-<span class="lineNum"> 52 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span><span class="lineCov"> 9 : time_t Source::timestamp() const {</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 9 : return textsearch::Path::indexTimestamp();</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span><span class="lineCov"> 9 : void Source::open() const {</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 9 : if (timestamp()) {</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 9 : std::string path = textsearch::Path::index();</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 9 : m_db = Xapian::Database( path );</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 9 : m_opened = true;</span>
-<span class="lineNum"> 63 </span> : }
-<span class="lineNum"> 64 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : std::string Source::toLower(const std::string&amp; str)</span>
-<span class="lineNum"> 67 </span> : {
-<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : std::string res;</span>
-<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : res.reserve(str.size());</span>
-<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)</span>
-<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : res += tolower(*i);</span>
-<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 73 </span> : }
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : void Source::normalize_and_add(Xapian::Document&amp; doc, const std::string&amp; term,
-<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : int&amp; /* pos */) const</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : string t = Source::toLower(term);</span>
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : string s = m_stem(t);</span>
-<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : doc.add_term(t);</span>
-<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : if (s != t)</span>
-<span class="lineNum"> 82 </span><span class="lineNoCov"> 0 : doc.add_term(s);</span>
-<span class="lineNum"> 83 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : Xapian::docid Source::docidByName(const std::string&amp; pkgname) const</span>
-<span class="lineNum"> 86 </span> : {
-<span class="lineNum"> 87 </span><span class="lineNoCov"> 0 : Xapian::PostingIterator i = m_db.postlist_begin(&quot;pkg:&quot;+pkgname);</span>
-<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : if (i == m_db.postlist_end(&quot;pkg:&quot;+pkgname))</span>
-<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 90 </span> : else
-<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return *i;</span>
-<span class="lineNum"> 92 </span> : }
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : Xapian::Query Source::makeRelatedQuery(const std::string&amp; pkgname) const</span>
-<span class="lineNum"> 95 </span> : {
-<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : Xapian::Enquire enquire(db());</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span> : // Retrieve the document for the given package
-<span class="lineNum"> 99 </span><span class="lineNoCov"> 0 : enquire.set_query(Xapian::Query(&quot;pkg:&quot;+pkgname));</span>
-<span class="lineNum"> 100 </span><span class="lineNoCov"> 0 : Xapian::MSet matches = enquire.get_mset(0, 1);</span>
-<span class="lineNum"> 101 </span><span class="lineNoCov"> 0 : Xapian::MSetIterator mi = matches.begin();</span>
-<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : if (mi == matches.end()) return Xapian::Query();</span>
-<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : Xapian::Document doc = mi.get_document();</span>
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span> : // Return the query to get the list of similar documents
-<span class="lineNum"> 106 </span><span class="lineNoCov"> 0 : return Xapian::Query(Xapian::Query::OP_OR, doc.termlist_begin(), doc.termlist_end());</span>
-<span class="lineNum"> 107 </span> : }
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : double Source::getDoubleValue(const std::string&amp; pkgname,
-<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : Xapian::valueno val_id) const</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : Xapian::docid id = docidByName(pkgname);</span>
-<span class="lineNum"> 113 </span><span class="lineNoCov"> 0 : if (id == 0)</span>
-<span class="lineNum"> 114 </span><span class="lineNoCov"> 0 : return 0.0;</span>
-<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : Xapian::Document doc = db().get_document(id);</span>
-<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : string val = doc.get_value(val_id);</span>
-<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : if (val.empty())</span>
-<span class="lineNum"> 118 </span><span class="lineNoCov"> 0 : return 0.0;</span>
-<span class="lineNum"> 119 </span> : else
-<span class="lineNum"> 120 </span><span class="lineNoCov"> 0 : return Xapian::sortable_unserialise(val);</span>
-<span class="lineNum"> 121 </span> : }
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : int Source::getIntValue(const std::string&amp; pkgname,
-<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : Xapian::valueno val_id) const</span>
-<span class="lineNum"> 125 </span> : {
-<span class="lineNum"> 126 </span><span class="lineNoCov"> 0 : Xapian::docid id = docidByName(pkgname);</span>
-<span class="lineNum"> 127 </span><span class="lineNoCov"> 0 : if (id == 0)</span>
-<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 129 </span><span class="lineNoCov"> 0 : Xapian::Document doc = db().get_document(id);</span>
-<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : string val = doc.get_value(val_id);</span>
-<span class="lineNum"> 131 </span><span class="lineNoCov"> 0 : if (val.empty())</span>
-<span class="lineNum"> 132 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 133 </span> : else
-<span class="lineNum"> 134 </span><span class="lineNoCov"> 0 : return (int)nearbyint(Xapian::sortable_unserialise(val));</span>
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : }
-<span class="lineNum"> 138 </span> : }
-<span class="lineNum"> 139 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 140 </span> :
-<span class="lineNum"> 141 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/core/xapian.h.gcov.html b/rep/ept/core/xapian.h.gcov.html
deleted file mode 100644
index d38457e..0000000
--- a/rep/ept/core/xapian.h.gcov.html
+++ /dev/null
@@ -1,456 +0,0 @@
-<!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/xapian.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">109</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">87.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">95</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> : #include &lt;xapian.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;wibble/regexp.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;wibble/sys/pipe.h&gt;
-<span class="lineNum"> 6 </span> : #include &lt;wibble/sys/exec.h&gt;
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : #ifndef EPT_XAPIAN_H
-<span class="lineNum"> 9 </span> : #define EPT_XAPIAN_H
-<span class="lineNum"> 10 </span> :
-<span class="lineNum"> 11 </span> : namespace ept {
-<span class="lineNum"> 12 </span> : namespace core {
-<span class="lineNum"> 13 </span> : namespace xapian {
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span> : // Allocate value indexes for known values
-<span class="lineNum"> 16 </span> : const Xapian::valueno VAL_APT_INSTALLED_SIZE = 1;
-<span class="lineNum"> 17 </span> : const Xapian::valueno VAL_APT_PACKAGE_SIZE = 2;
-<span class="lineNum"> 18 </span> : const Xapian::valueno VAL_POPCON = 10;
-<span class="lineNum"> 19 </span> : const Xapian::valueno VAL_ITERATING_RATING = 20;
-<span class="lineNum"> 20 </span> : const Xapian::valueno VAL_ITERATING_FUNCTIONALITY = 21;
-<span class="lineNum"> 21 </span> : const Xapian::valueno VAL_ITERATING_USABILITY = 22;
-<span class="lineNum"> 22 </span> : const Xapian::valueno VAL_ITERATING_SECURITY = 23;
-<span class="lineNum"> 23 </span> : const Xapian::valueno VAL_ITERATING_PERFORMANCE = 24;
-<span class="lineNum"> 24 </span> : const Xapian::valueno VAL_ITERATING_QUALITY = 25;
-<span class="lineNum"> 25 </span> : const Xapian::valueno VAL_ITERATING_SUPPORT = 26;
-<span class="lineNum"> 26 </span> : const Xapian::valueno VAL_ITERATING_ADOPTION = 27;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : struct TagFilter : public Xapian::ExpandDecider
-<span class="lineNum"> 29 </span><span class="lineCov"> 8 : {</span>
-<span class="lineNum"> 30 </span><span class="lineCov"> 1760 : virtual bool operator()(const std::string &amp;term) const {</span>
-<span class="lineNum"> 31 </span><span class="lineCov"> 1760 : return term[0] == 'X' &amp;&amp; term[1] == 'T';</span>
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> : };
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span><span class="lineCov"> 91 : struct List {</span>
-<span class="lineNum"> 36 </span> : char m_enqPlace[sizeof(Xapian::Enquire)];
-<span class="lineNum"> 37 </span> : mutable Xapian::MSet m_matches;
-<span class="lineNum"> 38 </span> : mutable Xapian::MSet::const_iterator m_iter;
-<span class="lineNum"> 39 </span> : mutable int m_pos;
-<span class="lineNum"> 40 </span> : typedef List Type;
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span> : static const size_t chunkSize = 20;
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span> : List head() const {
-<span class="lineNum"> 45 </span> : seek();
-<span class="lineNum"> 46 </span> : return *this;
-<span class="lineNum"> 47 </span> : }
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineCov"> 15 : Token token() const {</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 15 : Token t;</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 15 : t._id = m_iter.get_document().get_data();</span>
-<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 53 </span> : }
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span> : bool operator&lt;( const List &amp;o ) const {
-<span class="lineNum"> 56 </span> : return token() &lt; o.token();
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span><span class="lineCov"> 58 : void seek() const {</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 58 : if ( m_matches.size() == chunkSize &amp;&amp; m_iter == m_matches.end() ) {</span>
-<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : m_matches = enq().get_mset( m_pos, chunkSize );</span>
-<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : m_iter = m_matches.begin();</span>
-<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : m_pos += chunkSize;</span>
-<span class="lineNum"> 64 </span> : }
-<span class="lineNum"> 65 </span><span class="lineCov"> 58 : }</span>
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 30 : bool empty() const {</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 30 : if ( m_pos == -1 )</span>
-<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 30 : seek();</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 30 : return m_matches.size() &lt; 30 &amp;&amp; m_iter == m_matches.end();</span>
-<span class="lineNum"> 72 </span> : }
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 28 : List tail() const {</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 28 : List t = *this;</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 28 : t.seek();</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 28 : t.m_iter ++;</span>
-<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : return t;</span>
-<span class="lineNum"> 79 </span> : }
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 6 : Xapian::Enquire const &amp;enq() const {</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 6 : return *reinterpret_cast&lt; Xapian::Enquire const * &gt;( m_enqPlace );</span>
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineCov"> 3 : List( Xapian::Enquire _enq )</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 3 : {</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 3 : Xapian::Enquire *e = new (m_enqPlace) Xapian::Enquire( _enq );</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 3 : assert_eq( e, &amp;enq() );</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 6 : m_matches = enq().get_mset( 0, chunkSize );</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 3 : m_iter = m_matches.begin();</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 3 : m_pos = chunkSize;</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : List() {}
-<span class="lineNum"> 95 </span> : };
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span><span class="lineCov"> 13 : struct Query {</span>
-<span class="lineNum"> 98 </span> : Xapian::Database *m_db;
-<span class="lineNum"> 99 </span> : Xapian::Enquire m_enq;
-<span class="lineNum"> 100 </span> : Xapian::Stem m_stem;
-<span class="lineNum"> 101 </span> : typedef std::set&lt; std::string &gt; Terms;
-<span class="lineNum"> 102 </span> : Terms m_include, m_exclude;
-<span class="lineNum"> 103 </span> : int m_cutoff;
-<span class="lineNum"> 104 </span> : bool m_expand;
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineCov"> 5 : void setQualityCutoff( int c ) {</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 5 : m_cutoff = c;</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 5 : }</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span><span class="lineCov"> 5 : void setExpand( bool e ) { m_expand = e; }</span>
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 9 : Query( Xapian::Database &amp;e ) : m_db( &amp;e ), m_enq( e ) {</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 9 : m_cutoff = 50;</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 9 : m_expand = true;</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 116 </span> :
-<span class="lineNum"> 117 </span><span class="lineCov"> 5 : wibble::Tokenizer queryTokenizer( std::string q ) const {</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 5 : return wibble::Tokenizer( q, &quot;[A-Za-z0-9_+:-]+&quot;, REG_EXTENDED );</span>
-<span class="lineNum"> 119 </span> : }
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span> : template&lt; typename Out &gt;
-<span class="lineNum"> 122 </span><span class="lineCov"> 5 : void tokenizeQuery( std::string q, Out o ) const</span>
-<span class="lineNum"> 123 </span> : {
-<span class="lineNum"> 124 </span><span class="lineCov"> 5 : wibble::Tokenizer tok = queryTokenizer( q );</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 15 : for (wibble::Tokenizer::const_iterator i = tok.begin(); i != tok.end(); ++i )</span>
-<span class="lineNum"> 126 </span> : {
-<span class="lineNum"> 127 </span><span class="lineCov"> 10 : if ( (*i).find( &quot;::&quot; ) != std::string::npos ) { // assume tag</span>
-<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : *o++ = (&quot;XT&quot; + *i);</span>
-<span class="lineNum"> 129 </span> : } else {
-<span class="lineNum"> 130 </span><span class="lineCov"> 10 : std::string t = wibble::str::tolower(*i);</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 10 : std::string s = m_stem(t);</span>
-<span class="lineNum"> 132 </span><span class="lineCov"> 10 : *o++ = t;</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 10 : if (s != t)</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 5 : *o++ = (&quot;Z&quot; + s);</span>
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> : }
-<span class="lineNum"> 137 </span><span class="lineCov"> 5 : }</span>
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : template&lt; typename Out &gt;
-<span class="lineNum"> 140 </span><span class="lineCov"> 4 : void expand( Out o ) const</span>
-<span class="lineNum"> 141 </span> : {
-<span class="lineNum"> 142 </span><span class="lineCov"> 4 : Xapian::RSet rset;</span>
-<span class="lineNum"> 143 </span> : // Get the top 5 results as 'good ones' to compute the search expansion
-<span class="lineNum"> 144 </span><span class="lineCov"> 4 : Xapian::MSet mset = m_enq.get_mset(0, 5);</span>
-<span class="lineNum"> 145 </span><span class="lineCov"> 24 : for ( Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i )</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 24 : rset.add_document(i);</span>
-<span class="lineNum"> 147 </span> : // Get the expanded set, only expanding the query with tag names
-<span class="lineNum"> 148 </span><span class="lineCov"> 4 : TagFilter tagf;</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 4 : Xapian::ESet eset = m_enq.get_eset(5, rset, &amp;tagf);</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 4 : for ( Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i )</span>
-<span class="lineNum"> 151 </span><span class="lineCov"> 4 : *o++ = *i;</span>
-<span class="lineNum"> 152 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span><span class="lineCov"> 8 : void updateEnquire() {</span>
-<span class="lineNum"> 155 </span> : // set up query now
-<span class="lineNum"> 156 </span> : Xapian::Query inc( Xapian::Query::OP_OR,
-<span class="lineNum"> 157 </span> : m_include.begin(),
-<span class="lineNum"> 158 </span><span class="lineCov"> 8 : m_include.end() ),</span>
-<span class="lineNum"> 159 </span> : exc( Xapian::Query::OP_OR,
-<span class="lineNum"> 160 </span> : m_exclude.begin(),
-<span class="lineNum"> 161 </span><span class="lineCov"> 8 : m_exclude.end() ),</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 8 : query( Xapian::Query::OP_AND_NOT, inc, exc );</span>
-<span class="lineNum"> 163 </span> :
-<span class="lineNum"> 164 </span><span class="lineCov"> 8 : m_enq.set_query( query );</span>
-<span class="lineNum"> 165 </span> :
-<span class="lineNum"> 166 </span><span class="lineCov"> 8 : if ( m_expand ) {</span>
-<span class="lineNum"> 167 </span><span class="lineCov"> 4 : m_expand = false;</span>
-<span class="lineNum"> 168 </span><span class="lineCov"> 4 : expand( std::inserter( m_include, m_include.begin() ) );</span>
-<span class="lineNum"> 169 </span><span class="lineCov"> 4 : updateEnquire();</span>
-<span class="lineNum"> 170 </span><span class="lineCov"> 4 : m_expand = true;</span>
-<span class="lineNum"> 171 </span><span class="lineCov"> 4 : return;</span>
-<span class="lineNum"> 172 </span> : }
-<span class="lineNum"> 173 </span> :
-<span class="lineNum"> 174 </span><span class="lineCov"> 4 : Xapian::MSet first = m_enq.get_mset(0, 1, 0, 0, 0);</span>
-<span class="lineNum"> 175 </span><span class="lineCov"> 4 : Xapian::MSetIterator ifirst = first.begin();</span>
-<span class="lineNum"> 176 </span><span class="lineCov"> 4 : if ( ifirst != first.end() ) {</span>
-<span class="lineNum"> 177 </span><span class="lineCov"> 4 : Xapian::percent cutoff = ifirst.get_percent() * m_cutoff / 100;</span>
-<span class="lineNum"> 178 </span><span class="lineCov"> 4 : m_enq.set_cutoff(cutoff);</span>
-<span class="lineNum"> 179 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 180 </span> : }
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span><span class="lineCov"> 3 : List results() {</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 3 : updateEnquire();</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 3 : return List( m_enq );</span>
-<span class="lineNum"> 185 </span> : }
-<span class="lineNum"> 186 </span> :
-<span class="lineNum"> 187 </span> : std::map&lt; std::string, int &gt; relevantTags( int n = 30 ) {
-<span class="lineNum"> 188 </span> : updateEnquire();
-<span class="lineNum"> 189 </span> : std::map&lt; std::string, int &gt; relev;
-<span class="lineNum"> 190 </span> : Xapian::RSet rset;
-<span class="lineNum"> 191 </span> : Xapian::MSet mset = m_enq.get_mset(0, 100);
-<span class="lineNum"> 192 </span> : for ( Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i )
-<span class="lineNum"> 193 </span> : rset.add_document(i);
-<span class="lineNum"> 194 </span> : // Get the expanded set, only expanding the query with tag names
-<span class="lineNum"> 195 </span> : TagFilter tagf;
-<span class="lineNum"> 196 </span> : Xapian::ESet eset = m_enq.get_eset(n, rset, &amp;tagf);
-<span class="lineNum"> 197 </span> : for ( Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i )
-<span class="lineNum"> 198 </span> : relev.insert( relev.begin(),
-<span class="lineNum"> 199 </span> : std::make_pair(
-<span class="lineNum"> 200 </span> : std::string( *i, 2, std::string::npos ),
-<span class="lineNum"> 201 </span> : i.get_weight() ) );
-<span class="lineNum"> 202 </span> : return relev;
-<span class="lineNum"> 203 </span> : }
-<span class="lineNum"> 204 </span> :
-<span class="lineNum"> 205 </span><span class="lineCov"> 5 : void addTerms( std::string t, bool partial = false, bool exclude = false ) {</span>
-<span class="lineNum"> 206 </span><span class="lineCov"> 5 : Terms &amp;to = exclude ? m_exclude : m_include;</span>
-<span class="lineNum"> 207 </span><span class="lineCov"> 5 : std::vector&lt; std::string &gt; tok;</span>
-<span class="lineNum"> 208 </span><span class="lineCov"> 5 : tokenizeQuery( t, std::back_inserter( tok ) );</span>
-<span class="lineNum"> 209 </span><span class="lineCov"> 5 : if ( partial ) {</span>
-<span class="lineNum"> 210 </span><span class="lineNoCov"> 0 : if ( tok.back().size() == 1 ) {</span>
-<span class="lineNum"> 211 </span><span class="lineNoCov"> 0 : tok.pop_back();</span>
-<span class="lineNum"> 212 </span> : } else {
-<span class="lineNum"> 213 </span> : std::copy(
-<span class="lineNum"> 214 </span> : m_db-&gt;allterms_begin( tok.back() ),
-<span class="lineNum"> 215 </span> : m_db-&gt;allterms_end( tok.back() ),
-<span class="lineNum"> 216 </span><span class="lineNoCov"> 0 : std::back_inserter( tok ) );</span>
-<span class="lineNum"> 217 </span> : }
-<span class="lineNum"> 218 </span> : }
-<span class="lineNum"> 219 </span><span class="lineCov"> 5 : std::copy( tok.begin(), tok.end(), std::inserter( to, to.begin() ) );</span>
-<span class="lineNum"> 220 </span><span class="lineCov"> 5 : }</span>
-<span class="lineNum"> 221 </span> :
-<span class="lineNum"> 222 </span> : void addTerms( const Terms &amp;t, bool exclude = false ) {
-<span class="lineNum"> 223 </span> : Terms &amp;to = exclude ? m_exclude : m_include;
-<span class="lineNum"> 224 </span> : std::copy( t.begin(), t.end(), std::inserter( to, to.begin() ) );
-<span class="lineNum"> 225 </span> : }
-<span class="lineNum"> 226 </span> :
-<span class="lineNum"> 227 </span> : };
-<span class="lineNum"> 228 </span> :
-<span class="lineNum"> 229 </span> : struct Source
-<span class="lineNum"> 230 </span><span class="lineCov"> 4 : {</span>
-<span class="lineNum"> 231 </span> : protected:
-<span class="lineNum"> 232 </span> : mutable Xapian::Database m_db;
-<span class="lineNum"> 233 </span> : Xapian::Stem m_stem;
-<span class="lineNum"> 234 </span> : mutable bool m_opened;
-<span class="lineNum"> 235 </span> :
-<span class="lineNum"> 236 </span> : /// Return a lowercased copy of the string
-<span class="lineNum"> 237 </span> : static std::string toLower(const std::string&amp; str);
-<span class="lineNum"> 238 </span> :
-<span class="lineNum"> 239 </span> : /**
-<span class="lineNum"> 240 </span> : * Add normalised tokens computed from the string to the document doc.
-<span class="lineNum"> 241 </span> : *
-<span class="lineNum"> 242 </span> : * pos is used as a sequence generator for entering the token position in
-<span class="lineNum"> 243 </span> : * the document.
-<span class="lineNum"> 244 </span> : */
-<span class="lineNum"> 245 </span> : void normalize_and_add(Xapian::Document&amp; doc, const std::string&amp; term,
-<span class="lineNum"> 246 </span> : int&amp; pos) const;
-<span class="lineNum"> 247 </span> :
-<span class="lineNum"> 248 </span> : public:
-<span class="lineNum"> 249 </span> : Source();
-<span class="lineNum"> 250 </span> :
-<span class="lineNum"> 251 </span> : /// Access the Xapian database
-<span class="lineNum"> 252 </span><span class="lineCov"> 9 : Xapian::Database&amp; db() {</span>
-<span class="lineNum"> 253 </span><span class="lineCov"> 9 : open();</span>
-<span class="lineNum"> 254 </span><span class="lineCov"> 9 : return m_db;</span>
-<span class="lineNum"> 255 </span> : }
-<span class="lineNum"> 256 </span> :
-<span class="lineNum"> 257 </span> : /// Access the Xapian database
-<span class="lineNum"> 258 </span><span class="lineNoCov"> 0 : const Xapian::Database&amp; db() const {</span>
-<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : open();</span>
-<span class="lineNum"> 260 </span><span class="lineNoCov"> 0 : return m_db;</span>
-<span class="lineNum"> 261 </span> : }
-<span class="lineNum"> 262 </span> :
-<span class="lineNum"> 263 </span> : void open() const;
-<span class="lineNum"> 264 </span> : void invalidate() {
-<span class="lineNum"> 265 </span> : m_db = Xapian::Database();
-<span class="lineNum"> 266 </span> : m_opened = false;
-<span class="lineNum"> 267 </span> : }
-<span class="lineNum"> 268 </span> :
-<span class="lineNum"> 269 </span> : /// Timestamp of when the Xapian database was last updated
-<span class="lineNum"> 270 </span> : time_t timestamp() const;
-<span class="lineNum"> 271 </span> :
-<span class="lineNum"> 272 </span> : void updateLeniently( AptDatabase &amp;apt, OpProgress *op = 0 ) {
-<span class="lineNum"> 273 </span> : if (apt.timestamp() - timestamp() &gt; 86400 * 8) // a little over a week
-<span class="lineNum"> 274 </span> : update( op );
-<span class="lineNum"> 275 </span> : }
-<span class="lineNum"> 276 </span> :
-<span class="lineNum"> 277 </span> : void update( OpProgress *op = 0 ) {
-<span class="lineNum"> 278 </span> : if ( !op )
-<span class="lineNum"> 279 </span> : op = new OpProgress();
-<span class="lineNum"> 280 </span> :
-<span class="lineNum"> 281 </span> : wibble::exception::AddContext _ctx( &quot;Rebuilding Xapian database.&quot; );
-<span class="lineNum"> 282 </span> : int outfd;
-<span class="lineNum"> 283 </span> : std::string op_str;
-<span class="lineNum"> 284 </span> :
-<span class="lineNum"> 285 </span> : wibble::sys::Exec ex( &quot;update-apt-xapian-index&quot; );
-<span class="lineNum"> 286 </span> : ex.args.push_back( &quot;--batch-mode&quot; );
-<span class="lineNum"> 287 </span> : ex.searchInPath = true;
-<span class="lineNum"> 288 </span> : ex.forkAndRedirect( 0, &amp;outfd, 0 );
-<span class="lineNum"> 289 </span> :
-<span class="lineNum"> 290 </span> : wibble::sys::Pipe monit( outfd );
-<span class="lineNum"> 291 </span> : while ( !monit.eof() ) {
-<span class="lineNum"> 292 </span> : std::string line = monit.nextLine();
-<span class="lineNum"> 293 </span> : if ( line.empty() ) {
-<span class="lineNum"> 294 </span> : usleep( 100000 );
-<span class="lineNum"> 295 </span> : continue;
-<span class="lineNum"> 296 </span> : }
-<span class="lineNum"> 297 </span> : std::cerr &lt;&lt; &quot;got : &quot; &lt;&lt; line &lt;&lt; std::endl;
-<span class="lineNum"> 298 </span> : if ( wibble::str::startsWith( line, &quot;begin: &quot; ) ) {
-<span class="lineNum"> 299 </span> : op_str = std::string( line, 7, std::string::npos );
-<span class="lineNum"> 300 </span> : op-&gt;OverallProgress( 0, 100, 100, op_str );
-<span class="lineNum"> 301 </span> :
-<span class="lineNum"> 302 </span> : } else if ( wibble::str::startsWith( line, &quot;done: &quot; ) ) {
-<span class="lineNum"> 303 </span> : op-&gt;Done();
-<span class="lineNum"> 304 </span> : } else if ( wibble::str::startsWith( line, &quot;progress: &quot; ) ) {
-<span class="lineNum"> 305 </span> : wibble::ERegexp re( &quot;progress: ([0-9]+)/([0-9]+)&quot;, 3 );
-<span class="lineNum"> 306 </span> : if ( re.match( line ) ) {
-<span class="lineNum"> 307 </span> : assert_eq( re[2], &quot;100&quot; );
-<span class="lineNum"> 308 </span> : op-&gt;OverallProgress( atoi( re[1].c_str() ), 100, 100, op_str );
-<span class="lineNum"> 309 </span> : }
-<span class="lineNum"> 310 </span> : }
-<span class="lineNum"> 311 </span> : }
-<span class="lineNum"> 312 </span> : ex.waitForSuccess();
-<span class="lineNum"> 313 </span> : invalidate();
-<span class="lineNum"> 314 </span> : }
-<span class="lineNum"> 315 </span> :
-<span class="lineNum"> 316 </span> : /// Returns true if the index has data
-<span class="lineNum"> 317 </span> : bool hasData() const { return timestamp() &gt; 0; }
-<span class="lineNum"> 318 </span> :
-<span class="lineNum"> 319 </span> : Query query( const std::string &amp;s,
-<span class="lineNum"> 320 </span> : bool expand = true,
-<span class="lineNum"> 321 </span><span class="lineCov"> 5 : int qualityCutoff = 50 )</span>
-<span class="lineNum"> 322 </span> : {
-<span class="lineNum"> 323 </span><span class="lineCov"> 5 : Query q( db() );</span>
-<span class="lineNum"> 324 </span><span class="lineCov"> 5 : q.setQualityCutoff( qualityCutoff );</span>
-<span class="lineNum"> 325 </span><span class="lineCov"> 5 : q.setExpand( expand );</span>
-<span class="lineNum"> 326 </span><span class="lineCov"> 5 : q.addTerms( s );</span>
-<span class="lineNum"> 327 </span><span class="lineNoCov"> 0 : return q;</span>
-<span class="lineNum"> 328 </span> : }
-<span class="lineNum"> 329 </span> :
-<span class="lineNum"> 330 </span> : Query partialQuery( const std::string &amp;s ) {
-<span class="lineNum"> 331 </span> : Query q( db() );
-<span class="lineNum"> 332 </span> : q.addTerms( s, true ); // partial
-<span class="lineNum"> 333 </span> : return q;
-<span class="lineNum"> 334 </span> : }
-<span class="lineNum"> 335 </span> :
-<span class="lineNum"> 336 </span> : /// Returns true if the index is older than the Apt database information
-<span class="lineNum"> 337 </span> : // bool needsRebuild(apt::Apt&amp; apt);
-<span class="lineNum"> 338 </span> :
-<span class="lineNum"> 339 </span> : Xapian::docid docidByName(const std::string&amp; pkgname) const;
-<span class="lineNum"> 340 </span> :
-<span class="lineNum"> 341 </span> : /**
-<span class="lineNum"> 342 </span> : * Tokenize the string and build an OR query with the resulting keywords
-<span class="lineNum"> 343 </span> : */
-<span class="lineNum"> 344 </span> : Xapian::Query makeORQuery(const std::string&amp; keywords) const;
-<span class="lineNum"> 345 </span> :
-<span class="lineNum"> 346 </span> : /**
-<span class="lineNum"> 347 </span> : * Tokenize the string and build an OR query with the resulting keywords.
-<span class="lineNum"> 348 </span> : *
-<span class="lineNum"> 349 </span> : * The last token in keywords is considered to be typed only partially, to
-<span class="lineNum"> 350 </span> : * implement proper search-as-you-type.
-<span class="lineNum"> 351 </span> : */
-<span class="lineNum"> 352 </span> : Xapian::Query makePartialORQuery(const std::string&amp; keywords) const;
-<span class="lineNum"> 353 </span> :
-<span class="lineNum"> 354 </span> : /**
-<span class="lineNum"> 355 </span> : * Build a query with the given keywords, specified as iterators of strings
-<span class="lineNum"> 356 </span> : */
-<span class="lineNum"> 357 </span> : template&lt;typename ITER&gt;
-<span class="lineNum"> 358 </span> : Xapian::Query makeORQuery(const ITER&amp; begin, const ITER&amp; end) const
-<span class="lineNum"> 359 </span> : {
-<span class="lineNum"> 360 </span> : return Xapian::Query(Xapian::Query::OP_OR, begin, end);
-<span class="lineNum"> 361 </span> : }
-<span class="lineNum"> 362 </span> :
-<span class="lineNum"> 363 </span> : /// Return a list of tag-based terms that can be used to expand an OR query
-<span class="lineNum"> 364 </span> : std::vector&lt;std::string&gt; expand(Xapian::Enquire&amp; enq) const;
-<span class="lineNum"> 365 </span> :
-<span class="lineNum"> 366 </span> : // std::vector&lt;std::string&gt; similar(const std::string&amp; pkg);
-<span class="lineNum"> 367 </span> :
-<span class="lineNum"> 368 </span> : /**
-<span class="lineNum"> 369 </span> : * Create a query to look for packages similar to the given one
-<span class="lineNum"> 370 </span> : */
-<span class="lineNum"> 371 </span> : Xapian::Query makeRelatedQuery(const std::string&amp; pkgname) const;
-<span class="lineNum"> 372 </span> :
-<span class="lineNum"> 373 </span> : /**
-<span class="lineNum"> 374 </span> : * Get the integer value for
-<span class="lineNum"> 375 </span> : */
-<span class="lineNum"> 376 </span> : double getDoubleValue(const std::string&amp; pkgname,
-<span class="lineNum"> 377 </span> : Xapian::valueno val_id) const;
-<span class="lineNum"> 378 </span> :
-<span class="lineNum"> 379 </span> : /**
-<span class="lineNum"> 380 </span> : * Get the integer value for
-<span class="lineNum"> 381 </span> : */
-<span class="lineNum"> 382 </span> : int getIntValue(const std::string&amp; pkgname, Xapian::valueno val_id) const;
-<span class="lineNum"> 383 </span> : };
-<span class="lineNum"> 384 </span> :
-<span class="lineNum"> 385 </span> : }
-<span class="lineNum"> 386 </span> : }
-<span class="lineNum"> 387 </span> : }
-<span class="lineNum"> 388 </span> :
-<span class="lineNum"> 389 </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>
diff --git a/rep/ept/core/xapian.test.h.gcov.html b/rep/ept/core/xapian.test.h.gcov.html
deleted file mode 100644
index 17fc9dd..0000000
--- a/rep/ept/core/xapian.test.h.gcov.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!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/xapian.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">36</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">36</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> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/core/list.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/core/xapian.h&gt;
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : // TODO temporary, for building test database
-<span class="lineNum"> 7 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 8 </span> : #include &lt;ept/textsearch/textsearch.h&gt;
-<span class="lineNum"> 9 </span> : #include &lt;ept/textsearch/maint/path.h&gt;
-<span class="lineNum"> 10 </span> :
-<span class="lineNum"> 11 </span> : using namespace ept;
-<span class="lineNum"> 12 </span> : using namespace core;
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span> : namespace ept {
-<span class="lineNum"> 15 </span> : namespace textsearch {
-<span class="lineNum"> 16 </span> : extern size_t max_index;
-<span class="lineNum"> 17 </span> : }
-<span class="lineNum"> 18 </span> : }
-<span class="lineNum"> 19 </span> :
-<span class="lineNum"> 20 </span><span class="lineCov"> 4 : struct XapianTestEnvironment : AptTestEnvironment {</span>
-<span class="lineNum"> 21 </span> : textsearch::Path::OverrideIndexDir oid;
-<span class="lineNum"> 22 </span> : textsearch::TextSearch textsearch;
-<span class="lineNum"> 23 </span> : apt::Apt apt;
-<span class="lineNum"> 24 </span><span class="lineCov"> 4 : XapianTestEnvironment()</span>
-<span class="lineNum"> 25 </span><span class="lineCov"> 4 : : oid( TEST_ENV_DIR &quot;xapian&quot; )</span>
-<span class="lineNum"> 26 </span> : {
-<span class="lineNum"> 27 </span><span class="lineCov"> 4 : ept::textsearch::max_index = 1000;</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 4 : textsearch.rebuildIfNeeded(apt);</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 30 </span> : };
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 4 : struct TestXapian : XapianTestEnvironment {</span>
-<span class="lineNum"> 33 </span> : xapian::Source xap;
-<span class="lineNum"> 34 </span> : xapian::Query query;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 4 : TestXapian() : query( xap.db() )</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span><span class="lineCov"> 4 : query = xap.query( &quot;sgml tool&quot; );</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 1 : Test enquire() {</span>
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : query.updateEnquire();</span>
-<span class="lineNum"> 43 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 100);</span>
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : assert( matches.size() &gt; 0 );</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : assert_eq( matches.begin().get_document().get_data(), &quot;psgml&quot; );</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : Test listCount() {</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : xapian::List l( query.results() );</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 6000);</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : assert_eq( list::count( l ), matches.size() );</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span> : template&lt; typename List &gt;
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : void checkXapianList( List l, Xapian::MSet m ) {</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : Xapian::MSet::const_iterator i = m.begin();</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 16 : while (! l.empty() ) {</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 14 : assert_eq( l.token().package(), i.get_document().get_data() );</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 14 : l = l.tail();</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 15 : ++ i;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span><span class="lineCov"> 1 : Test list() {</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : xapian::List l( query.results() );</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 6000);</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : checkXapianList( l, matches );</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test checkQuery() {</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 1 : assert_eq( xap.query( &quot;sgml tool&quot; ).results().token().package(), &quot;psgml&quot; );</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : };
-</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>
diff --git a/rep/ept/debtags/debtags.cc.gcov.html b/rep/ept/debtags/debtags.cc.gcov.html
deleted file mode 100644
index a924a43..0000000
--- a/rep/ept/debtags/debtags.cc.gcov.html
+++ /dev/null
@@ -1,317 +0,0 @@
-<!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/debtags/debtags.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">81</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">48.1 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">39</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> : * @file
-<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * System tag database
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2008 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 19 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;ept/debtags/maint/serializer.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;ept/debtags/maint/debtagsindexer.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 32 </span> : #include &lt;tagcoll/TextFormat.h&gt;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 35 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 38 </span> : #include &lt;sstream&gt;
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span> : #include &lt;sys/wait.h&gt; // WIFEXITED WEXITSTATUS
-<span class="lineNum"> 41 </span> : #include &lt;sys/types.h&gt; // getpwuid, stat, mkdir, getuid
-<span class="lineNum"> 42 </span> : #include &lt;sys/stat.h&gt; // stat, mkdir
-<span class="lineNum"> 43 </span> : #include &lt;pwd.h&gt; // getpwuid
-<span class="lineNum"> 44 </span> : #include &lt;unistd.h&gt; // stat, getuid
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : using namespace std;
-<span class="lineNum"> 48 </span> : using namespace tagcoll;
-<span class="lineNum"> 49 </span> : using namespace wibble;
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : namespace ept {
-<span class="lineNum"> 52 </span> : namespace debtags {
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span><span class="lineCov"> 10 : Debtags::Debtags(bool editable)</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 10 : : m_coll(m_rocoll)</span>
-<span class="lineNum"> 56 </span> : {
-<span class="lineNum"> 57 </span><span class="lineCov"> 10 : std::string tagfname;</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 10 : std::string idxfname;</span>
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 10 : if (!DebtagsIndexer::obtainWorkingDebtags(vocabulary(), tagfname, idxfname))</span>
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : m_timestamp = 0;</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : return;</span>
-<span class="lineNum"> 64 </span> : } else {
-<span class="lineNum"> 65 </span><span class="lineCov"> 9 : m_timestamp = Path::timestamp(idxfname);</span>
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 9 : mastermmap.init(idxfname);</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : // Initialize the readonly index
-<span class="lineNum"> 70 </span><span class="lineCov"> 9 : m_pkgid.init(mastermmap, 0);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 9 : m_rocoll.init(mastermmap, 1, 2);</span>
-<span class="lineNum"> 72 </span> : }
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : // Initialize the patch collection layer
-<span class="lineNum"> 75 </span><span class="lineCov"> 9 : rcdir = Path::debtagsUserSourceDir();</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineCov"> 9 : string patchFile = str::joinpath(rcdir, &quot;patch&quot;);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 18 : if (Path::access(patchFile, F_OK) == 0)</span>
-<span class="lineNum"> 79 </span> : {
-<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : input::Stdio in(patchFile);</span>
-<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : PatchList&lt;int, int&gt; patch;</span>
-<span class="lineNum"> 82 </span><span class="lineNoCov"> 0 : textformat::parsePatch(in, patchStringToInt(m_pkgid, vocabulary(), inserter(patch)));</span>
-<span class="lineNum"> 83 </span><span class="lineNoCov"> 0 : m_coll.setChanges(patch);</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 9 : }</span>
-<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span><span class="lineCov"> 3 : tagcoll::PatchList&lt;std::string, Tag&gt; Debtags::changes() const</span>
-<span class="lineNum"> 88 </span> : {
-<span class="lineNum"> 89 </span><span class="lineCov"> 3 : tagcoll::PatchList&lt;int, int&gt; patches = m_coll.changes();</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 3 : tagcoll::PatchList&lt;std::string, Tag&gt; res;</span>
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 5 : for (tagcoll::PatchList&lt;int, int&gt;::const_iterator i = patches.begin();</span>
-<span class="lineNum"> 93 </span> : i != patches.end(); ++i)
-<span class="lineNum"> 94 </span> : {
-<span class="lineNum"> 95 </span><span class="lineCov"> 2 : std::string pkg = packageByID(i-&gt;second.item);</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 2 : if (pkg.empty())</span>
-<span class="lineNum"> 97 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 98 </span> :
-<span class="lineNum"> 99 </span> : res.addPatch(tagcoll::Patch&lt;std::string, Tag&gt;(pkg,
-<span class="lineNum"> 100 </span> : vocabulary().tagsByID(i-&gt;second.added),
-<span class="lineNum"> 101 </span><span class="lineCov"> 2 : vocabulary().tagsByID(i-&gt;second.removed)));</span>
-<span class="lineNum"> 102 </span> : }
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span><span class="lineCov"> 3 : return res;</span>
-<span class="lineNum"> 105 </span> : }
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> :
-<span class="lineNum"> 108 </span> : #if 0
-<span class="lineNum"> 109 </span> : bool Debtags::hasTagDatabase()
-<span class="lineNum"> 110 </span> : {
-<span class="lineNum"> 111 </span> : if (Path::access(Path::tagdb(), R_OK) == -1)
-<span class="lineNum"> 112 </span> : {
-<span class="lineNum"> 113 </span> : std::cerr &lt;&lt; &quot;Missing tag database &quot; &lt;&lt; Path::tagdb() &lt;&lt; std::endl;
-<span class="lineNum"> 114 </span> : return false;
-<span class="lineNum"> 115 </span> : }
-<span class="lineNum"> 116 </span> : if (Path::access(Path::tagdbIndex(), R_OK) == -1)
-<span class="lineNum"> 117 </span> : {
-<span class="lineNum"> 118 </span> : std::cerr &lt;&lt; &quot;Missing tag database index &quot; &lt;&lt; Path::tagdbIndex() &lt;&lt; std::endl;
-<span class="lineNum"> 119 </span> : return false;
-<span class="lineNum"> 120 </span> : }
-<span class="lineNum"> 121 </span> : if (Path::access(Path::vocabulary(), R_OK) == -1)
-<span class="lineNum"> 122 </span> : {
-<span class="lineNum"> 123 </span> : std::cerr &lt;&lt; &quot;Missing tag vocabulary &quot; &lt;&lt; Path::vocabulary() &lt;&lt; std::endl;
-<span class="lineNum"> 124 </span> : return false;
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span> : if (Path::access(Path::vocabularyIndex(), R_OK) == -1)
-<span class="lineNum"> 127 </span> : {
-<span class="lineNum"> 128 </span> : std::cerr &lt;&lt; &quot;Missing index for tag vocabulary &quot; &lt;&lt; Path::vocabularyIndex() &lt;&lt; std::endl;
-<span class="lineNum"> 129 </span> : return false;
-<span class="lineNum"> 130 </span> : }
-<span class="lineNum"> 131 </span> : return true;
-<span class="lineNum"> 132 </span> : }
-<span class="lineNum"> 133 </span> : #endif
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span><span class="lineCov"> 1 : void Debtags::savePatch()</span>
-<span class="lineNum"> 137 </span> : {
-<span class="lineNum"> 138 </span><span class="lineCov"> 1 : PatchList&lt;std::string, std::string&gt; spatch;</span>
-<span class="lineNum"> 139 </span><span class="lineCov"> 1 : m_coll.changes().output(patchIntToString(m_pkgid, vocabulary(), tagcoll::inserter(spatch)));</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : savePatch(spatch);</span>
-<span class="lineNum"> 141 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 142 </span> :
-<span class="lineNum"> 143 </span><span class="lineCov"> 1 : void Debtags::savePatch(const PatchList&lt;std::string, std::string&gt;&amp; patch)</span>
-<span class="lineNum"> 144 </span> : {
-<span class="lineNum"> 145 </span><span class="lineCov"> 1 : std::string patchFile = str::joinpath(rcdir, &quot;patch&quot;);</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 1 : std::string backup = patchFile + &quot;~&quot;;</span>
-<span class="lineNum"> 147 </span> :
-<span class="lineNum"> 148 </span><span class="lineCov"> 1 : wibble::sys::fs::mkFilePath(patchFile);</span>
-<span class="lineNum"> 149 </span> :
-<span class="lineNum"> 150 </span><span class="lineCov"> 1 : if (access(patchFile.c_str(), F_OK) == 0)</span>
-<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : if (rename(patchFile.c_str(), backup.c_str()) == -1)</span>
-<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(&quot;Can't rename &quot; + patchFile + &quot; to &quot; + backup);</span>
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : try {
-<span class="lineNum"> 155 </span><span class="lineCov"> 1 : FILE* out = fopen(patchFile.c_str(), &quot;w&quot;);</span>
-<span class="lineNum"> 156 </span><span class="lineCov"> 1 : if (out == 0)</span>
-<span class="lineNum"> 157 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(&quot;Can't write to &quot; + patchFile);</span>
-<span class="lineNum"> 158 </span> :
-<span class="lineNum"> 159 </span><span class="lineCov"> 1 : textformat::outputPatch(patch, out);</span>
-<span class="lineNum"> 160 </span> :
-<span class="lineNum"> 161 </span><span class="lineCov"> 1 : fclose(out);</span>
-<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : } catch (std::exception&amp; e) {</span>
-<span class="lineNum"> 163 </span><span class="lineNoCov"> 0 : if (rename(backup.c_str(), patchFile.c_str()) == -1)</span>
-<span class="lineNum"> 164 </span><span class="lineNoCov"> 0 : std::cerr &lt;&lt; &quot;Warning: Cannot restore previous backup copy: &quot; &lt;&lt; e.what() &lt;&lt; std::endl;</span>
-<span class="lineNum"> 165 </span><span class="lineNoCov"> 0 : throw;</span>
-<span class="lineNum"> 166 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 167 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 168 </span> :
-<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : void Debtags::savePatch(const PatchList&lt;std::string, Tag&gt;&amp; patch)</span>
-<span class="lineNum"> 170 </span> : {
-<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : PatchList&lt;std::string, std::string&gt; spatch;</span>
-<span class="lineNum"> 172 </span> : // patch.output(patchToString&lt;C&gt;(m_pkgs, m_pkgidx, m_tags, tagcoll::inserter(spatch)));
-<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : savePatch(spatch);</span>
-<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 175 </span> :
-<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch()</span>
-<span class="lineNum"> 177 </span> : {
-<span class="lineNum"> 178 </span><span class="lineNoCov"> 0 : PatchList&lt;std::string, std::string&gt; spatch;</span>
-<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : m_coll.changes().output(patchIntToString(m_pkgid, vocabulary(), tagcoll::inserter(spatch)));</span>
-<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : if (!spatch.empty())</span>
-<span class="lineNum"> 181 </span> : {
-<span class="lineNum"> 182 </span><span class="lineNoCov"> 0 : sendPatch(spatch);</span>
-<span class="lineNum"> 183 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 184 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 185 </span> :
-<span class="lineNum"> 186 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch(const PatchList&lt;std::string, Tag&gt;&amp; patch)</span>
-<span class="lineNum"> 187 </span> : {
-<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : PatchList&lt;std::string, std::string&gt; spatch;</span>
-<span class="lineNum"> 189 </span> : // patch.output(patchToString&lt;C&gt;(m_pkgs, m_pkgidx, m_tags, tagcoll::inserter(spatch)));
-<span class="lineNum"> 190 </span><span class="lineNoCov"> 0 : sendPatch(spatch);</span>
-<span class="lineNum"> 191 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 192 </span> :
-<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch(const PatchList&lt;std::string, std::string&gt;&amp; patch)</span>
-<span class="lineNum"> 194 </span> : {
-<span class="lineNum"> 195 </span> : static const char* cmd = &quot;/usr/sbin/sendmail -t&quot;;
-<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : FILE* out = popen(cmd, &quot;w&quot;);</span>
-<span class="lineNum"> 197 </span><span class="lineNoCov"> 0 : if (out == 0)</span>
-<span class="lineNum"> 198 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(std::string(&quot;trying to run `&quot;) + cmd + &quot;'&quot;);</span>
-<span class="lineNum"> 199 </span> :
-<span class="lineNum"> 200 </span><span class="lineNoCov"> 0 : struct passwd* udata = getpwuid(getuid());</span>
-<span class="lineNum"> 201 </span> :
-<span class="lineNum"> 202 </span> : fprintf(out,
-<span class="lineNum"> 203 </span> : &quot;To: enrico-debtags@debian.org\n&quot;
-<span class="lineNum"> 204 </span> : &quot;Bcc: %s\n&quot;
-<span class="lineNum"> 205 </span> : &quot;Subject: Tag patch\n&quot;
-<span class="lineNum"> 206 </span> : &quot;Mime-Version: 1.0\n&quot;
-<span class="lineNum"> 207 </span> : &quot;Content-Type: multipart/mixed; boundary=\&quot;9amGYk9869ThD9tj\&quot;\n&quot;
-<span class="lineNum"> 208 </span> : &quot;Content-Disposition: inline\n&quot;
-<span class="lineNum"> 209 </span> : &quot;X-Mailer: debtags-edit\n\n&quot;
-<span class="lineNum"> 210 </span> : &quot;This mail contains a Debtags patch for the central archive\n\n&quot;
-<span class="lineNum"> 211 </span> : &quot;--9amGYk9869ThD9tj\n&quot;
-<span class="lineNum"> 212 </span> : &quot;Content-Type: text/plain; charset=utf-8\n&quot;
-<span class="lineNum"> 213 </span> : &quot;Content-Disposition: inline\n\n&quot;
-<span class="lineNum"> 214 </span><span class="lineNoCov"> 0 : &quot;-- DEBTAGS DIFF V0.1 --\n&quot;, udata-&gt;pw_name);</span>
-<span class="lineNum"> 215 </span> :
-<span class="lineNum"> 216 </span><span class="lineNoCov"> 0 : textformat::outputPatch(patch, out);</span>
-<span class="lineNum"> 217 </span> :
-<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : fprintf(out, &quot;\n--9amGYk9869ThD9tj\n&quot;);</span>
-<span class="lineNum"> 219 </span> :
-<span class="lineNum"> 220 </span><span class="lineNoCov"> 0 : int res = pclose(out);</span>
-<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : if (!WIFEXITED(res) || WEXITSTATUS(res) != 0)</span>
-<span class="lineNum"> 222 </span> : {
-<span class="lineNum"> 223 </span><span class="lineNoCov"> 0 : std::stringstream str;</span>
-<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : str &lt;&lt; res;</span>
-<span class="lineNum"> 225 </span><span class="lineNoCov"> 0 : throw wibble::exception::Consistency(&quot;checking mailer exit status&quot;, &quot;sendmail returned nonzero (&quot; + str.str() + &quot;): the mail may have not been sent&quot;);</span>
-<span class="lineNum"> 226 </span> : }
-<span class="lineNum"> 227 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 228 </span> :
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 231 </span> : void Debtags::outputSystem(const OUT&amp; cons)
-<span class="lineNum"> 232 </span> : {
-<span class="lineNum"> 233 </span> : m_rocoll.output(intToPkg(m_pkgid, vocabulary(), cons));
-<span class="lineNum"> 234 </span> : }
-<span class="lineNum"> 235 </span> :
-<span class="lineNum"> 236 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 237 </span> : void Debtags::outputPatched(const OUT&amp; cons)
-<span class="lineNum"> 238 </span> : {
-<span class="lineNum"> 239 </span> : m_coll.output(intToPkg(m_pkgid, vocabulary(), cons));
-<span class="lineNum"> 240 </span> : }
-<span class="lineNum"> 241 </span> :
-<span class="lineNum"> 242 </span> : }
-<span class="lineNum"> 243 </span> : }
-<span class="lineNum"> 244 </span> :
-<span class="lineNum"> 245 </span> : #include &lt;tagcoll/patch.tcc&gt;
-<span class="lineNum"> 246 </span> : #include &lt;tagcoll/coll/patched.tcc&gt;
-<span class="lineNum"> 247 </span> : #include &lt;tagcoll/TextFormat.tcc&gt;
-<span class="lineNum"> 248 </span> : //#include &lt;tagcoll/stream/filters.tcc&gt;
-<span class="lineNum"> 249 </span> :
-<span class="lineNum"> 250 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/debtags.h.gcov.html b/rep/ept/debtags/debtags.h.gcov.html
deleted file mode 100644
index a115a32..0000000
--- a/rep/ept/debtags/debtags.h.gcov.html
+++ /dev/null
@@ -1,484 +0,0 @@
-<!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/debtags/debtags.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">72</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">93.1 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">67</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /* @file
-<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * libpkg Debtags data provider
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 12 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 13 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 14 </span> : * (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 19 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 22 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #ifndef EPT_DEBTAGS_DEBTAGS_H
-<span class="lineNum"> 27 </span> : #define EPT_DEBTAGS_DEBTAGS_H
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : #include &lt;ept/debtags/tag.h&gt;
-<span class="lineNum"> 30 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 31 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : #include &lt;tagcoll/coll/base.h&gt;
-<span class="lineNum"> 34 </span> : #include &lt;tagcoll/coll/intdiskindex.h&gt;
-<span class="lineNum"> 35 </span> : #include &lt;tagcoll/coll/patched.h&gt;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : namespace ept {
-<span class="lineNum"> 38 </span> : namespace debtags {
-<span class="lineNum"> 39 </span> : class Debtags;
-<span class="lineNum"> 40 </span> : }
-<span class="lineNum"> 41 </span> : }
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : namespace tagcoll {
-<span class="lineNum"> 44 </span> : template&lt; typename _, typename _1 &gt; class PatchList;
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : namespace coll {
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : template&lt;&gt;
-<span class="lineNum"> 49 </span> : struct coll_traits&lt; ept::debtags::Debtags &gt;
-<span class="lineNum"> 50 </span> : {
-<span class="lineNum"> 51 </span> : typedef std::string item_type;
-<span class="lineNum"> 52 </span> : typedef ept::debtags::Tag tag_type;
-<span class="lineNum"> 53 </span> : typedef std::set&lt; ept::debtags::Tag &gt; tagset_type;
-<span class="lineNum"> 54 </span> : typedef std::set&lt; std::string &gt; itemset_type;
-<span class="lineNum"> 55 </span> : };
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span> : namespace ept {
-<span class="lineNum"> 61 </span> : namespace debtags {
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /**
-<span class="lineNum"> 64 </span> : * Access the on-disk Debtags tag database.
-<span class="lineNum"> 65 </span> : *
-<span class="lineNum"> 66 </span> : * The database is normally found in /var/lib/debtags.
-<span class="lineNum"> 67 </span> : *
-<span class="lineNum"> 68 </span> : * Tags and Facets are returned as Tag and Facet objects. The objects follow
-<span class="lineNum"> 69 </span> : * the flyweight pattern and access the data contained in the Vocabulary
-<span class="lineNum"> 70 </span> : * instantiated inside Debtags.
-<span class="lineNum"> 71 </span> : *
-<span class="lineNum"> 72 </span> : * It is possible to get a reference to the Vocabulary object using the
-<span class="lineNum"> 73 </span> : * vocabulary() method.
-<span class="lineNum"> 74 </span> : */
-<span class="lineNum"> 75 </span> : class Debtags : public tagcoll::coll::Collection&lt;Debtags&gt;
-<span class="lineNum"> 76 </span> : {
-<span class="lineNum"> 77 </span> : protected:
-<span class="lineNum"> 78 </span> : // Master mmap index container
-<span class="lineNum"> 79 </span> : tagcoll::diskindex::MasterMMap mastermmap;
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : // Debtags database
-<span class="lineNum"> 82 </span> : tagcoll::coll::IntDiskIndex m_rocoll;
-<span class="lineNum"> 83 </span> : tagcoll::coll::Patched&lt; tagcoll::coll::IntDiskIndex &gt; m_coll;
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : // Package name to ID mapping
-<span class="lineNum"> 86 </span> : PkgId m_pkgid;
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : // Tag vocabulary
-<span class="lineNum"> 89 </span> : Vocabulary m_voc;
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span> : // User rc directory to store patches
-<span class="lineNum"> 92 </span> : std::string rcdir;
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : // Last modification timestamp of the index
-<span class="lineNum"> 95 </span> : time_t m_timestamp;
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span><span class="lineCov"> 84710 : std::string packageByID(int id) const</span>
-<span class="lineNum"> 98 </span> : {
-<span class="lineNum"> 99 </span><span class="lineCov"> 84710 : return m_pkgid.byID(id);</span>
-<span class="lineNum"> 100 </span> : }
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span> : template&lt;typename IDS&gt;
-<span class="lineNum"> 103 </span><span class="lineCov"> 2 : std::set&lt;std::string&gt; packagesById(const IDS&amp; ids) const</span>
-<span class="lineNum"> 104 </span> : {
-<span class="lineNum"> 105 </span><span class="lineCov"> 2 : std::set&lt;std::string&gt; pkgs;</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 130 : for (typename IDS::const_iterator i = ids.begin();</span>
-<span class="lineNum"> 107 </span> : i != ids.end(); ++i)
-<span class="lineNum"> 108 </span><span class="lineCov"> 128 : pkgs.insert(packageByID(*i));</span>
-<span class="lineNum"> 109 </span><span class="lineNoCov"> 0 : return pkgs;</span>
-<span class="lineNum"> 110 </span> : }
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 8 : int idByPackage(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 113 </span> : {
-<span class="lineNum"> 114 </span><span class="lineCov"> 8 : return m_pkgid.byName(pkg);</span>
-<span class="lineNum"> 115 </span> : }
-<span class="lineNum"> 116 </span> :
-<span class="lineNum"> 117 </span> : template&lt;typename PKGS&gt;
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::set&lt;int&gt; idsByPackages(const PKGS&amp; pkgs) const</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : std::set&lt;int&gt; ids;</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 2 : for (typename PKGS::const_iterator i = pkgs.begin();</span>
-<span class="lineNum"> 122 </span> : i != pkgs.end(); ++i)
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : ids.insert(idByPackage(*i));</span>
-<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : return ids;</span>
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : public:
-<span class="lineNum"> 128 </span> : typedef tagcoll::coll::Patched&lt; tagcoll::coll::IntDiskIndex &gt; coll_type;
-<span class="lineNum"> 129 </span> : typedef std::pair&lt; std::string, std::set&lt;Tag&gt; &gt; value_type;
-<span class="lineNum"> 130 </span> :
-<span class="lineNum"> 131 </span> : class const_iterator
-<span class="lineNum"> 132 </span> : {
-<span class="lineNum"> 133 </span> : const Debtags&amp; coll;
-<span class="lineNum"> 134 </span> : Debtags::coll_type::const_iterator ci;
-<span class="lineNum"> 135 </span> : mutable const Debtags::value_type* cached_val;
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : protected:
-<span class="lineNum"> 138 </span> : const_iterator(const Debtags&amp; coll,
-<span class="lineNum"> 139 </span><span class="lineCov"> 63443 : const Debtags::coll_type::const_iterator&amp; ci)</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 63443 : : coll(coll), ci(ci), cached_val(0) {}</span>
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span> : public:
-<span class="lineNum"> 143 </span><span class="lineCov"> 63443 : ~const_iterator()</span>
-<span class="lineNum"> 144 </span> : {
-<span class="lineNum"> 145 </span><span class="lineCov"> 63443 : if (cached_val)</span>
-<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : delete cached_val;</span>
-<span class="lineNum"> 147 </span><span class="lineCov"> 63443 : }</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 84580 : const Debtags::value_type operator*() const</span>
-<span class="lineNum"> 149 </span> : {
-<span class="lineNum"> 150 </span><span class="lineCov"> 84580 : if (cached_val)</span>
-<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : return *cached_val;</span>
-<span class="lineNum"> 152 </span> :
-<span class="lineNum"> 153 </span><span class="lineCov"> 84580 : return make_pair(coll.packageByID(ci-&gt;first), coll.vocabulary().tagsByID(ci-&gt;second));</span>
-<span class="lineNum"> 154 </span> : }
-<span class="lineNum"> 155 </span><span class="lineCov"> 105725 : const Debtags::value_type* operator-&gt;() const</span>
-<span class="lineNum"> 156 </span> : {
-<span class="lineNum"> 157 </span><span class="lineCov"> 105725 : if (cached_val)</span>
-<span class="lineNum"> 158 </span><span class="lineCov"> 42290 : return cached_val;</span>
-<span class="lineNum"> 159 </span><span class="lineCov"> 63435 : return cached_val = new Debtags::value_type(*(*this));</span>
-<span class="lineNum"> 160 </span> : }
-<span class="lineNum"> 161 </span><span class="lineCov"> 63435 : const_iterator&amp; operator++()</span>
-<span class="lineNum"> 162 </span> : {
-<span class="lineNum"> 163 </span><span class="lineCov"> 63435 : ++ci;</span>
-<span class="lineNum"> 164 </span><span class="lineCov"> 63435 : if (cached_val)</span>
-<span class="lineNum"> 165 </span> : {
-<span class="lineNum"> 166 </span><span class="lineCov"> 63435 : delete cached_val;</span>
-<span class="lineNum"> 167 </span><span class="lineCov"> 63435 : cached_val = 0;</span>
-<span class="lineNum"> 168 </span> : }
-<span class="lineNum"> 169 </span><span class="lineCov"> 63435 : return *this;</span>
-<span class="lineNum"> 170 </span> : }
-<span class="lineNum"> 171 </span><span class="lineCov"> 1 : bool operator==(const const_iterator&amp; iter) const</span>
-<span class="lineNum"> 172 </span> : {
-<span class="lineNum"> 173 </span><span class="lineCov"> 1 : return ci == iter.ci;</span>
-<span class="lineNum"> 174 </span> : }
-<span class="lineNum"> 175 </span><span class="lineCov"> 63438 : bool operator!=(const const_iterator&amp; iter) const</span>
-<span class="lineNum"> 176 </span> : {
-<span class="lineNum"> 177 </span><span class="lineCov"> 63438 : return ci != iter.ci;</span>
-<span class="lineNum"> 178 </span> : }
-<span class="lineNum"> 179 </span> :
-<span class="lineNum"> 180 </span> : friend class Debtags;
-<span class="lineNum"> 181 </span> : };
-<span class="lineNum"> 182 </span><span class="lineCov"> 4 : const_iterator begin() const { return const_iterator(*this, m_coll.begin()); }</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 63439 : const_iterator end() const { return const_iterator(*this, m_coll.end()); }</span>
-<span class="lineNum"> 184 </span> :
-<span class="lineNum"> 185 </span> : /**
-<span class="lineNum"> 186 </span> : * Create a new accessor for the on-disk Debtags database
-<span class="lineNum"> 187 </span> : *
-<span class="lineNum"> 188 </span> : * \param editable
-<span class="lineNum"> 189 </span> : * Specifies if recording of modifications should be enabled. If editable
-<span class="lineNum"> 190 </span> : * is true, then the local state directory will be created when the object
-<span class="lineNum"> 191 </span> : * is instantiated.
-<span class="lineNum"> 192 </span> : */
-<span class="lineNum"> 193 </span> : Debtags(bool editable = false);
-<span class="lineNum"> 194 </span><span class="lineCov"> 10 : ~Debtags() {}</span>
-<span class="lineNum"> 195 </span> :
-<span class="lineNum"> 196 </span> : /// Get the timestamp of when the index was last updated
-<span class="lineNum"> 197 </span><span class="lineCov"> 1 : time_t timestamp() const { return m_timestamp; }</span>
-<span class="lineNum"> 198 </span> :
-<span class="lineNum"> 199 </span> : /// Return true if this data source has data, false if it's empty
-<span class="lineNum"> 200 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span>
-<span class="lineNum"> 201 </span> :
-<span class="lineNum"> 202 </span> : coll_type&amp; tagdb() { return m_coll; }
-<span class="lineNum"> 203 </span> : const coll_type&amp; tagdb() const { return m_coll; }
-<span class="lineNum"> 204 </span> : tagcoll::PatchList&lt;std::string, Tag&gt; changes() const;
-<span class="lineNum"> 205 </span> :
-<span class="lineNum"> 206 </span> : #if 0
-<span class="lineNum"> 207 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 208 </span> : void insert(const ITEMS&amp; items, const TAGS&amp; tags)
-<span class="lineNum"> 209 </span> : {
-<span class="lineNum"> 210 </span> : for (typename ITEMS::const_iterator i = items.begin();
-<span class="lineNum"> 211 </span> : i != items.end(); ++i)
-<span class="lineNum"> 212 </span> : m_changes.addPatch(Patch(*i, tags, TagSet()));
-<span class="lineNum"> 213 </span> : }
-<span class="lineNum"> 214 </span> :
-<span class="lineNum"> 215 </span> : template&lt;typename ITEMS&gt;
-<span class="lineNum"> 216 </span> : void insert(const ITEMS&amp; items, const wibble::Empty&lt;Tag&gt;&amp; tags)
-<span class="lineNum"> 217 </span> : {
-<span class="lineNum"> 218 </span> : // Nothing to do in this case
-<span class="lineNum"> 219 </span> : }
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span> : /**
-<span class="lineNum"> 222 </span> : * Get the changes that have been applied to this collection
-<span class="lineNum"> 223 </span> : */
-<span class="lineNum"> 224 </span> : const Patches&amp; changes() const { return m_changes; }
-<span class="lineNum"> 225 </span> :
-<span class="lineNum"> 226 </span> : /**
-<span class="lineNum"> 227 </span> : * Throw away all changes previously applied to this collection
-<span class="lineNum"> 228 </span> : */
-<span class="lineNum"> 229 </span> : void resetChanges() { m_changes.clear(); }
-<span class="lineNum"> 230 </span> :
-<span class="lineNum"> 231 </span> : /**
-<span class="lineNum"> 232 </span> : * Set the changes list to a specific patch list
-<span class="lineNum"> 233 </span> : */
-<span class="lineNum"> 234 </span> : void setChanges(const Patches&amp; changes);
-<span class="lineNum"> 235 </span> :
-<span class="lineNum"> 236 </span> : /**
-<span class="lineNum"> 237 </span> : * Add a specific patch list to the changes list
-<span class="lineNum"> 238 </span> : */
-<span class="lineNum"> 239 </span> : void addChanges(const Patches&amp; changes);
-<span class="lineNum"> 240 </span> : #endif
-<span class="lineNum"> 241 </span> :
-<span class="lineNum"> 242 </span> : bool hasTag(const Tag&amp; tag) const { return m_coll.hasTag(tag.id()); }
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span><span class="lineCov"> 5 : std::set&lt;Tag&gt; getTagsOfItem(const std::string&amp; item) const</span>
-<span class="lineNum"> 245 </span> : {
-<span class="lineNum"> 246 </span><span class="lineCov"> 5 : int id = idByPackage(item);</span>
-<span class="lineNum"> 247 </span><span class="lineCov"> 5 : if (id == -1) return std::set&lt;Tag&gt;();</span>
-<span class="lineNum"> 248 </span><span class="lineCov"> 4 : return vocabulary().tagsByID(m_coll.getTagsOfItem(id));</span>
-<span class="lineNum"> 249 </span> : }
-<span class="lineNum"> 250 </span> :
-<span class="lineNum"> 251 </span> : template&lt;typename ITEMS&gt;
-<span class="lineNum"> 252 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; getTagsOfItems(const ITEMS&amp; items) const</span>
-<span class="lineNum"> 253 </span> : {
-<span class="lineNum"> 254 </span><span class="lineCov"> 1 : return vocabulary().tagsByID(m_coll.getTagsOfItems(idsByPackages(items)));</span>
-<span class="lineNum"> 255 </span> : }
-<span class="lineNum"> 256 </span> :
-<span class="lineNum"> 257 </span> : std::set&lt;std::string&gt; getItemsHavingTag(const Tag&amp; tag) const
-<span class="lineNum"> 258 </span> : {
-<span class="lineNum"> 259 </span> : return packagesById(m_coll.getItemsHavingTag(tag.id()));
-<span class="lineNum"> 260 </span> : }
-<span class="lineNum"> 261 </span> : template&lt;typename TAGS&gt;
-<span class="lineNum"> 262 </span><span class="lineCov"> 2 : std::set&lt;std::string&gt; getItemsHavingTags(const TAGS&amp; tags) const</span>
-<span class="lineNum"> 263 </span> : {
-<span class="lineNum"> 264 </span><span class="lineCov"> 2 : std::set&lt;int&gt; itags;</span>
-<span class="lineNum"> 265 </span><span class="lineCov"> 11 : for (typename TAGS::const_iterator i = tags.begin();</span>
-<span class="lineNum"> 266 </span> : i != tags.end(); ++i)
-<span class="lineNum"> 267 </span><span class="lineCov"> 9 : itags.insert(i-&gt;id());</span>
-<span class="lineNum"> 268 </span><span class="lineCov"> 2 : return packagesById(m_coll.getItemsHavingTags(itags));</span>
-<span class="lineNum"> 269 </span> : }
-<span class="lineNum"> 270 </span> :
-<span class="lineNum"> 271 </span> : #if 0
-<span class="lineNum"> 272 </span> : ItemSet getTaggedItems() const;
-<span class="lineNum"> 273 </span> : #endif
-<span class="lineNum"> 274 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; getAllTags() const</span>
-<span class="lineNum"> 275 </span> : {
-<span class="lineNum"> 276 </span><span class="lineCov"> 1 : return vocabulary().tagsByID(m_coll.getAllTags());</span>
-<span class="lineNum"> 277 </span> : }
-<span class="lineNum"> 278 </span> :
-<span class="lineNum"> 279 </span> : /// Access the vocabulary in use
-<span class="lineNum"> 280 </span><span class="lineCov"> 27 : Vocabulary&amp; vocabulary() { return m_voc; }</span>
-<span class="lineNum"> 281 </span> : /// Access the vocabulary in use
-<span class="lineNum"> 282 </span><span class="lineCov"> 84590 : const Vocabulary&amp; vocabulary() const { return m_voc; }</span>
-<span class="lineNum"> 283 </span> :
-<span class="lineNum"> 284 </span> : /**
-<span class="lineNum"> 285 </span> : * Access the PkgId in use.
-<span class="lineNum"> 286 </span> : *
-<span class="lineNum"> 287 </span> : * \note Future implementations may not rely on a PkgId
-<span class="lineNum"> 288 </span> : */
-<span class="lineNum"> 289 </span><span class="lineCov"> 4 : PkgId&amp; pkgid() { return m_pkgid; }</span>
-<span class="lineNum"> 290 </span> : /**
-<span class="lineNum"> 291 </span> : * Access the PkgId in use.
-<span class="lineNum"> 292 </span> : *
-<span class="lineNum"> 293 </span> : * \note Future implementations may not rely on a PkgId
-<span class="lineNum"> 294 </span> : */
-<span class="lineNum"> 295 </span> : const PkgId&amp; pkgid() const { return m_pkgid; }
-<span class="lineNum"> 296 </span> :
-<span class="lineNum"> 297 </span> : int getCardinality(const Tag&amp; tag) const
-<span class="lineNum"> 298 </span> : {
-<span class="lineNum"> 299 </span> : return m_coll.getCardinality(tag.id());
-<span class="lineNum"> 300 </span> : }
-<span class="lineNum"> 301 </span> :
-<span class="lineNum"> 302 </span><span class="lineCov"> 2 : void applyChange(const tagcoll::PatchList&lt;std::string, Tag&gt;&amp; change)</span>
-<span class="lineNum"> 303 </span> : {
-<span class="lineNum"> 304 </span> : using namespace tagcoll;
-<span class="lineNum"> 305 </span><span class="lineCov"> 2 : PatchList&lt;int, int&gt; intp;</span>
-<span class="lineNum"> 306 </span><span class="lineCov"> 4 : for (PatchList&lt;std::string, Tag&gt;::const_iterator i = change.begin();</span>
-<span class="lineNum"> 307 </span> : i != change.end(); ++i)
-<span class="lineNum"> 308 </span> : {
-<span class="lineNum"> 309 </span><span class="lineCov"> 2 : Patch&lt;int, int&gt; p(idByPackage(i-&gt;first));</span>
-<span class="lineNum"> 310 </span><span class="lineCov"> 4 : for (std::set&lt;Tag&gt;::const_iterator j = i-&gt;second.added.begin();</span>
-<span class="lineNum"> 311 </span> : j != i-&gt;second.added.end(); ++j)
-<span class="lineNum"> 312 </span><span class="lineCov"> 2 : p.add(j-&gt;id());</span>
-<span class="lineNum"> 313 </span><span class="lineCov"> 2 : for (std::set&lt;Tag&gt;::const_iterator j = i-&gt;second.removed.begin();</span>
-<span class="lineNum"> 314 </span> : j != i-&gt;second.removed.end(); ++j)
-<span class="lineNum"> 315 </span><span class="lineNoCov"> 0 : p.remove(j-&gt;id());</span>
-<span class="lineNum"> 316 </span><span class="lineCov"> 2 : intp.addPatch(p);</span>
-<span class="lineNum"> 317 </span> : }
-<span class="lineNum"> 318 </span><span class="lineCov"> 2 : m_coll.applyChange(intp);</span>
-<span class="lineNum"> 319 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 320 </span> :
-<span class="lineNum"> 321 </span> : #if 0
-<span class="lineNum"> 322 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 323 </span> : void output(OUT out) const
-<span class="lineNum"> 324 </span> : {
-<span class="lineNum"> 325 </span> : for (const_iterator i = begin(); i != end(); ++i)
-<span class="lineNum"> 326 </span> : {
-<span class="lineNum"> 327 </span> : *out = *i;
-<span class="lineNum"> 328 </span> : ++out;
-<span class="lineNum"> 329 </span> : }
-<span class="lineNum"> 330 </span> : }
-<span class="lineNum"> 331 </span> : #endif
-<span class="lineNum"> 332 </span> :
-<span class="lineNum"> 333 </span> :
-<span class="lineNum"> 334 </span> :
-<span class="lineNum"> 335 </span> : /**
-<span class="lineNum"> 336 </span> : * Check if the tag database has been created (i.e. if something
-<span class="lineNum"> 337 </span> : * equivalend to debtags update has been run)
-<span class="lineNum"> 338 </span> : */
-<span class="lineNum"> 339 </span> : //static bool hasTagDatabase();
-<span class="lineNum"> 340 </span> :
-<span class="lineNum"> 341 </span> :
-<span class="lineNum"> 342 </span> : /**
-<span class="lineNum"> 343 </span> : * Save in the state storage directory a patch that can be used to turn
-<span class="lineNum"> 344 </span> : * the system database into the collection given
-<span class="lineNum"> 345 </span> : */
-<span class="lineNum"> 346 </span> : void savePatch();
-<span class="lineNum"> 347 </span> :
-<span class="lineNum"> 348 </span> : /**
-<span class="lineNum"> 349 </span> : * Save in the state storage directory a patch to turn the system database
-<span class="lineNum"> 350 </span> : * into the collection given
-<span class="lineNum"> 351 </span> : */
-<span class="lineNum"> 352 </span> : void savePatch(const tagcoll::PatchList&lt;std::string, std::string&gt;&amp; patch);
-<span class="lineNum"> 353 </span> :
-<span class="lineNum"> 354 </span> : /**
-<span class="lineNum"> 355 </span> : * Save in the state storage directory a patch to turn the system database
-<span class="lineNum"> 356 </span> : * into the collection given
-<span class="lineNum"> 357 </span> : */
-<span class="lineNum"> 358 </span> : void savePatch(const tagcoll::PatchList&lt;std::string, Tag&gt;&amp; patch);
-<span class="lineNum"> 359 </span> :
-<span class="lineNum"> 360 </span> : /**
-<span class="lineNum"> 361 </span> : * Send to the central archive a patch that can be used to turn
-<span class="lineNum"> 362 </span> : * the system database into the collection given
-<span class="lineNum"> 363 </span> : */
-<span class="lineNum"> 364 </span> : void sendPatch();
-<span class="lineNum"> 365 </span> :
-<span class="lineNum"> 366 </span> : /**
-<span class="lineNum"> 367 </span> : * Send the given patch to the central archive
-<span class="lineNum"> 368 </span> : */
-<span class="lineNum"> 369 </span> : void sendPatch(const tagcoll::PatchList&lt;std::string, std::string&gt;&amp; patch);
-<span class="lineNum"> 370 </span> :
-<span class="lineNum"> 371 </span> : /**
-<span class="lineNum"> 372 </span> : * Send the given patch to the central archive
-<span class="lineNum"> 373 </span> : */
-<span class="lineNum"> 374 </span> : void sendPatch(const tagcoll::PatchList&lt;std::string, Tag&gt;&amp; patch);
-<span class="lineNum"> 375 </span> :
-<span class="lineNum"> 376 </span> :
-<span class="lineNum"> 377 </span> : /**
-<span class="lineNum"> 378 </span> : * Output the current Debian tags database to a consumer of &lt;std::string, Tag&gt;
-<span class="lineNum"> 379 </span> : *
-<span class="lineNum"> 380 </span> : * \note The collection is sent to 'cons' without merging repeated items
-<span class="lineNum"> 381 </span> : */
-<span class="lineNum"> 382 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 383 </span><span class="lineCov"> 2 : void outputSystem(const OUT&amp; cons);</span>
-<span class="lineNum"> 384 </span> :
-<span class="lineNum"> 385 </span> : /**
-<span class="lineNum"> 386 </span> : * Output the given tag file to a consumer of &lt;std::string, Tag&gt;
-<span class="lineNum"> 387 </span> : *
-<span class="lineNum"> 388 </span> : * \note The collection is sent to 'cons' without merging repeated items
-<span class="lineNum"> 389 </span> : */
-<span class="lineNum"> 390 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 391 </span> : void outputSystem(const std::string&amp; filename, const OUT&amp; out);
-<span class="lineNum"> 392 </span> :
-<span class="lineNum"> 393 </span> : /**
-<span class="lineNum"> 394 </span> : * Output the current Debian tags database, patched with local patch,
-<span class="lineNum"> 395 </span> : * to a Consumer of &lt;std::string, Tag&gt;
-<span class="lineNum"> 396 </span> : *
-<span class="lineNum"> 397 </span> : * \note The collection is sent to 'cons' without merging repeated items
-<span class="lineNum"> 398 </span> : */
-<span class="lineNum"> 399 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 400 </span><span class="lineCov"> 2 : void outputPatched(const OUT&amp; cons);</span>
-<span class="lineNum"> 401 </span> :
-<span class="lineNum"> 402 </span> : /**
-<span class="lineNum"> 403 </span> : * Output the given tag file, patched with local patch,
-<span class="lineNum"> 404 </span> : * to a Consumer of &lt;std::string, Tag&gt;
-<span class="lineNum"> 405 </span> : *
-<span class="lineNum"> 406 </span> : * \note The collection is sent to 'cons' without merging repeated items
-<span class="lineNum"> 407 </span> : */
-<span class="lineNum"> 408 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 409 </span> : void outputPatched(const std::string&amp; filename, const OUT&amp; out);
-<span class="lineNum"> 410 </span> : };
-<span class="lineNum"> 411 </span> :
-<span class="lineNum"> 412 </span> :
-<span class="lineNum"> 413 </span> : }
-<span class="lineNum"> 414 </span> : }
-<span class="lineNum"> 415 </span> :
-<span class="lineNum"> 416 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 417 </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>
diff --git a/rep/ept/debtags/debtags.tcc.gcov.html b/rep/ept/debtags/debtags.tcc.gcov.html
deleted file mode 100644
index 3d2907f..0000000
--- a/rep/ept/debtags/debtags.tcc.gcov.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!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/debtags/debtags.tcc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.tcc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">4</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">4</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> : * @file
-<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * libpkg Debtags data provider
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 19 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #ifndef EPT_DEBTAGS_DEBTAGS_TCC
-<span class="lineNum"> 27 </span> : #define EPT_DEBTAGS_DEBTAGS_TCC
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 30 </span> : #include &lt;ept/debtags/maint/serializer.h&gt;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 33 </span> : #include &lt;tagcoll/stream/patcher.h&gt;
-<span class="lineNum"> 34 </span> : #include &lt;tagcoll/TextFormat.h&gt;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : namespace ept {
-<span class="lineNum"> 37 </span> : namespace debtags {
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 40 </span> : void Debtags::outputSystem(const OUT&amp; cons)
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span><span class="lineCov"> 2 : m_rocoll.output(intToPkg(m_pkgid, vocabulary(), cons));</span>
-<span class="lineNum"> 43 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 46 </span> : void Debtags::outputSystem(const std::string&amp; filename, const OUT&amp; out)
-<span class="lineNum"> 47 </span> : {
-<span class="lineNum"> 48 </span> : if (filename == &quot;-&quot;)
-<span class="lineNum"> 49 </span> : {
-<span class="lineNum"> 50 </span> : tagcoll::input::Stdio input(stdin, &quot;&lt;stdin&gt;&quot;);
-<span class="lineNum"> 51 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, out));
-<span class="lineNum"> 52 </span> : }
-<span class="lineNum"> 53 </span> : else
-<span class="lineNum"> 54 </span> : {
-<span class="lineNum"> 55 </span> : tagcoll::input::Stdio input(filename);
-<span class="lineNum"> 56 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, out));
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 61 </span> : void Debtags::outputPatched(const OUT&amp; cons)
-<span class="lineNum"> 62 </span> : {
-<span class="lineNum"> 63 </span><span class="lineCov"> 2 : m_coll.output(intToPkg(m_pkgid, vocabulary(), cons));</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 67 </span> : void Debtags::outputPatched(const std::string&amp; filename, const OUT&amp; out)
-<span class="lineNum"> 68 </span> : {
-<span class="lineNum"> 69 </span> : const tagcoll::PatchList&lt;string, Tag&gt;&amp; patch = m_coll.changes();
-<span class="lineNum"> 70 </span> : if (filename == &quot;-&quot;)
-<span class="lineNum"> 71 </span> : {
-<span class="lineNum"> 72 </span> : tagcoll::input::Stdio input(stdin, &quot;&lt;stdin&gt;&quot;);
-<span class="lineNum"> 73 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, patcher(patch, out)));
-<span class="lineNum"> 74 </span> : }
-<span class="lineNum"> 75 </span> : else
-<span class="lineNum"> 76 </span> : {
-<span class="lineNum"> 77 </span> : tagcoll::input::Stdio input(filename);
-<span class="lineNum"> 78 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, patcher(patch, out)));
-<span class="lineNum"> 79 </span> : }
-<span class="lineNum"> 80 </span> : }
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : #include &lt;tagcoll/coll/patched.tcc&gt;
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : #endif
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/debtags.test.h.gcov.html b/rep/ept/debtags/debtags.test.h.gcov.html
deleted file mode 100644
index e78c69b..0000000
--- a/rep/ept/debtags/debtags.test.h.gcov.html
+++ /dev/null
@@ -1,350 +0,0 @@
-<!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/debtags/debtags.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">103</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">103</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /**
-<span class="lineNum"> 3 </span> : * @file
-<span class="lineNum"> 4 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Test for the Debtags data provider
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 13 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 14 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 15 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 20 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 23 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;tagcoll/coll/simple.h&gt;
-<span class="lineNum"> 32 </span> : #include &lt;tagcoll/stream/sink.h&gt;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : #include &lt;wibble/operators.h&gt;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : #ifndef EPT_DEBTAGS_TESTH
-<span class="lineNum"> 39 </span> : #define EPT_DEBTAGS_TESTH
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : using namespace tagcoll;
-<span class="lineNum"> 42 </span> : using namespace std;
-<span class="lineNum"> 43 </span> : using namespace ept;
-<span class="lineNum"> 44 </span> : using namespace ept::debtags;
-<span class="lineNum"> 45 </span> : using namespace wibble::operators;
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : struct TestDebtags : DebtagsTestEnvironment
-<span class="lineNum"> 48 </span><span class="lineCov"> 5 : {</span>
-<span class="lineNum"> 49 </span> : Debtags debtags;
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 5 : TestDebtags() {}</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineCov"> 10 : Vocabulary&amp; voc() { return debtags.vocabulary(); }</span>
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : Test _1() {</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 21146 : for (Debtags::const_iterator i = debtags.begin(); i != debtags.end(); ++i)</span>
-<span class="lineNum"> 57 </span> : {
-<span class="lineNum"> 58 </span><span class="lineCov"> 21145 : *i;</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 21145 : i-&gt;first;</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 21145 : i-&gt;second;</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : int items = 0, tags = 0;</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : debtags.outputSystem(stream::countingSink(items, tags));</span>
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : int pitems = 0, ptags = 0;</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : debtags.outputPatched(stream::countingSink(pitems, ptags));</span>
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span><span class="lineCov"> 2 : assert(items &gt; 10);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(tags &gt; 10);</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert(items &lt;= pitems);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert(tags &lt;= ptags);</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 1 : Test _2()</span>
-<span class="lineNum"> 75 </span> : {
-<span class="lineNum"> 76 </span><span class="lineCov"> 1 : string p(&quot;debtags&quot;);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = debtags.getTagsOfItem(p);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert( !tags.empty() );</span>
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span> : #if 0
-<span class="lineNum"> 81 </span> : for ( std::set&lt; Tag &gt;::iterator i = tags.begin(); i != tags.end(); ++ i ) {
-<span class="lineNum"> 82 </span> : std::cerr &lt;&lt; i-&gt;id() &lt;&lt; &quot;: &quot; &lt;&lt; i-&gt;fullname() &lt;&lt; std::endl;
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> : std::cerr &lt;&lt; &quot;---&quot; &lt;&lt; std::endl;
-<span class="lineNum"> 85 </span> : Tag t = voc().tagByName( &quot;interface::commandline&quot; );
-<span class="lineNum"> 86 </span> : std::cerr &lt;&lt; t.id() &lt;&lt; &quot;: &quot; &lt;&lt; t.fullname() &lt;&lt; std::endl;
-<span class="lineNum"> 87 </span> : #endif
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert_eq( tags.size(), 8u );</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;devel::buildtools&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;implemented-in::c++&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;interface::commandline&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;role::program&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;scope::application&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;suite::debian&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;use::searching&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 2 : assert( voc().tagByName( &quot;works-with::software:package&quot; ) &lt;= tags );</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : Test _3()</span>
-<span class="lineNum"> 101 </span> : {
-<span class="lineNum"> 102 </span> : using namespace std;
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span> : /* Get the 'debtags' package */
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : string p(&quot;debtags&quot;);</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : /* Get its tags */
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = debtags.getTagsOfItem(p);</span>
-<span class="lineNum"> 109 </span><span class="lineCov"> 1 : assert(!tags.empty());</span>
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span> : /*
-<span class="lineNum"> 112 </span> : cerr &lt;&lt; &quot;Intersection size: &quot; &lt;&lt; endl;
-<span class="lineNum"> 113 </span> : using namespace wibble::operators;
-<span class="lineNum"> 114 </span> : std::set&lt;Tag&gt;::const_iterator dbgi = tags.begin();
-<span class="lineNum"> 115 </span> : cerr &lt;&lt; &quot;* &quot; &lt;&lt; dbgi-&gt;fullname() &lt;&lt; &quot;: &quot; &lt;&lt; dbgi-&gt;id() &lt;&lt; endl;
-<span class="lineNum"> 116 </span> : std::set&lt;int&gt; dbgres = debtags.tagdb().getItemsHavingTag(dbgi-&gt;id());
-<span class="lineNum"> 117 </span> : std::set&lt;Package&gt; dbgpres = debtags.getItemsHavingTag(*dbgi);
-<span class="lineNum"> 118 </span> : cerr &lt;&lt; &quot; #pkgs &quot; &lt;&lt; dbgres.size() &lt;&lt; &quot; == &quot; &lt;&lt; dbgpres.size() &lt;&lt; endl;
-<span class="lineNum"> 119 </span> : cerr &lt;&lt; &quot; #isec &quot; &lt;&lt; dbgres.size() &lt;&lt; &quot; == &quot; &lt;&lt; dbgpres.size() &lt;&lt; endl;
-<span class="lineNum"> 120 </span> : cerr &lt;&lt; &quot; &quot;; ppset(dbgpres); cerr &lt;&lt; endl;
-<span class="lineNum"> 121 </span> : cerr &lt;&lt; &quot; &quot;; piset(dbgres); cerr &lt;&lt; endl;
-<span class="lineNum"> 122 </span> : for (++dbgi ; dbgi != tags.end(); ++dbgi)
-<span class="lineNum"> 123 </span> : {
-<span class="lineNum"> 124 </span> : cerr &lt;&lt; &quot;* &quot; &lt;&lt; dbgi-&gt;fullname() &lt;&lt; &quot;: &quot; &lt;&lt; dbgi-&gt;id() &lt;&lt; endl;
-<span class="lineNum"> 125 </span> : std::set&lt;Package&gt; dbgpkgs = debtags.getItemsHavingTag(*dbgi);
-<span class="lineNum"> 126 </span> : std::set&lt;int&gt; dbgids = debtags.tagdb().getItemsHavingTag(dbgi-&gt;id());
-<span class="lineNum"> 127 </span> : cerr &lt;&lt; &quot; &quot;; ppset(dbgpkgs); cerr &lt;&lt; endl;
-<span class="lineNum"> 128 </span> : cerr &lt;&lt; &quot; &quot;; piset(dbgids); cerr &lt;&lt; endl;
-<span class="lineNum"> 129 </span> : cerr &lt;&lt; &quot; #pkgs &quot; &lt;&lt; dbgpkgs.size() &lt;&lt; &quot; == &quot; &lt;&lt; dbgids.size() &lt;&lt; endl;
-<span class="lineNum"> 130 </span> : dbgres &amp;= dbgids;
-<span class="lineNum"> 131 </span> : dbgpres &amp;= dbgpkgs;
-<span class="lineNum"> 132 </span> : cerr &lt;&lt; &quot; #isec &quot; &lt;&lt; dbgres.size() &lt;&lt; &quot; == &quot; &lt;&lt; dbgpres.size() &lt;&lt; endl;
-<span class="lineNum"> 133 </span> : }
-<span class="lineNum"> 134 </span> : cerr &lt;&lt; &quot; &quot; &lt;&lt; dbgres.size() &lt;&lt; endl &lt;&lt; &quot;Results: &quot; &lt;&lt; endl;
-<span class="lineNum"> 135 </span> : for (std::set&lt;int&gt;::const_iterator i = dbgres.begin(); i != dbgres.end(); ++i)
-<span class="lineNum"> 136 </span> : cerr &lt;&lt; &quot; &quot; &lt;&lt; *i &lt;&lt; endl;
-<span class="lineNum"> 137 </span> : */
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span> : // cerr &lt;&lt; &quot;Tags of debtags: &quot;;
-<span class="lineNum"> 141 </span> : // for (std::set&lt;Tag&gt;::const_iterator i = tags.begin(); i != tags.end(); ++i)
-<span class="lineNum"> 142 </span> : // {
-<span class="lineNum"> 143 </span> : // cerr &lt;&lt; &quot; &quot; + i-&gt;fullname() &lt;&lt; endl;
-<span class="lineNum"> 144 </span> : // std::set&lt;Package&gt; packages = debtags.getItemsHavingTag(*i);
-<span class="lineNum"> 145 </span> : // for (std::set&lt;Package&gt;::const_iterator p = packages.begin();
-<span class="lineNum"> 146 </span> : // p != packages.end(); ++p)
-<span class="lineNum"> 147 </span> : // cerr &lt;&lt; &quot; PKG &quot; &lt;&lt; p-&gt;name() &lt;&lt; endl;
-<span class="lineNum"> 148 </span> : // }
-<span class="lineNum"> 149 </span> : // cerr &lt;&lt; endl;
-<span class="lineNum"> 150 </span> :
-<span class="lineNum"> 151 </span> : /* Get the items for the tagset of 'debtags' */
-<span class="lineNum"> 152 </span><span class="lineCov"> 1 : std::set&lt;string&gt; packages = debtags.getItemsHavingTags(tags);</span>
-<span class="lineNum"> 153 </span> : //cerr &lt;&lt; packages.size() &lt;&lt; endl;
-<span class="lineNum"> 154 </span><span class="lineCov"> 1 : assert(!packages.empty());</span>
-<span class="lineNum"> 155 </span> : /*
-<span class="lineNum"> 156 </span> : for ( std::set&lt; Package &gt;::iterator i = packages.begin(); i != packages.end(); ++ i )
-<span class="lineNum"> 157 </span> : std::cerr &lt;&lt; i-&gt;name() &lt;&lt; std::endl;
-<span class="lineNum"> 158 </span> : std::cerr &lt;&lt; &quot;---&quot; &lt;&lt; std::endl;
-<span class="lineNum"> 159 </span> : std::cerr &lt;&lt; p.name() &lt;&lt; std::endl;
-<span class="lineNum"> 160 </span> : */
-<span class="lineNum"> 161 </span> : /* They should at least contain 'debtags' */
-<span class="lineNum"> 162 </span><span class="lineCov"> 2 : assert( p &lt;= packages );</span>
-<span class="lineNum"> 163 </span> :
-<span class="lineNum"> 164 </span> : /* Get one of the tags of 'debtags' */
-<span class="lineNum"> 165 </span><span class="lineCov"> 2 : Tag tag = *tags.begin();</span>
-<span class="lineNum"> 166 </span><span class="lineCov"> 1 : assert(tag);</span>
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span> : /* Get its items */
-<span class="lineNum"> 169 </span> : {
-<span class="lineNum"> 170 </span> : /* Need this workaround until I figure out how to tell the new GCC
-<span class="lineNum"> 171 </span> : * that TagDB is a TDBReadonlyDiskIndex and should behave as such
-<span class="lineNum"> 172 </span> : */
-<span class="lineNum"> 173 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; ts;</span>
-<span class="lineNum"> 174 </span><span class="lineCov"> 1 : ts.insert(tag);</span>
-<span class="lineNum"> 175 </span><span class="lineCov"> 1 : packages = debtags.getItemsHavingTags(ts);</span>
-<span class="lineNum"> 176 </span> : }
-<span class="lineNum"> 177 </span> : //packages = c.debtags().tagdb().getItems(tag);
-<span class="lineNum"> 178 </span><span class="lineCov"> 1 : assert(!packages.empty());</span>
-<span class="lineNum"> 179 </span> : /* They should at least contain 'debtags' */
-<span class="lineNum"> 180 </span><span class="lineCov"> 2 : assert( p &lt;= packages );</span>
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span> : //c.debtags().getTags(&quot;&quot;); // XXX HACK AWW!
-<span class="lineNum"> 183 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 184 </span> :
-<span class="lineNum"> 185 </span><span class="lineCov"> 1 : Test _4()</span>
-<span class="lineNum"> 186 </span> : {
-<span class="lineNum"> 187 </span><span class="lineCov"> 1 : std::string patchfile = Path::debtagsUserSourceDir() + &quot;patch&quot;;</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 1 : unlink(patchfile.c_str());</span>
-<span class="lineNum"> 189 </span> :
-<span class="lineNum"> 190 </span><span class="lineCov"> 1 : string p(&quot;debtags&quot;);</span>
-<span class="lineNum"> 191 </span> :
-<span class="lineNum"> 192 </span> : /* Get its tags */
-<span class="lineNum"> 193 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = debtags.getTagsOfItem(p);</span>
-<span class="lineNum"> 194 </span><span class="lineCov"> 1 : assert(!tags.empty());</span>
-<span class="lineNum"> 195 </span> :
-<span class="lineNum"> 196 </span> : // Ensure that it's not tagged with gameplaying
-<span class="lineNum"> 197 </span><span class="lineCov"> 2 : Tag t = voc().tagByName(&quot;use::gameplaying&quot;);</span>
-<span class="lineNum"> 198 </span><span class="lineCov"> 2 : assert(! (t &lt;= tags) );</span>
-<span class="lineNum"> 199 </span> :
-<span class="lineNum"> 200 </span> : // Add the gameplaying tag
-<span class="lineNum"> 201 </span><span class="lineCov"> 1 : PatchList&lt;string, Tag&gt; change;</span>
-<span class="lineNum"> 202 </span><span class="lineCov"> 1 : change.addPatch(Patch&lt;string, Tag&gt;(p, wibble::singleton(t), wibble::Empty&lt;Tag&gt;()));</span>
-<span class="lineNum"> 203 </span><span class="lineCov"> 1 : debtags.applyChange(change);</span>
-<span class="lineNum"> 204 </span> :
-<span class="lineNum"> 205 </span> : // See that the patch is non empty
-<span class="lineNum"> 206 </span><span class="lineCov"> 1 : PatchList&lt;string, Tag&gt; tmp = debtags.changes();</span>
-<span class="lineNum"> 207 </span><span class="lineCov"> 1 : assert(tmp.size() &gt; 0);</span>
-<span class="lineNum"> 208 </span><span class="lineCov"> 2 : assert_eq(tmp.size(), 1u);</span>
-<span class="lineNum"> 209 </span> :
-<span class="lineNum"> 210 </span> : // Ensure that the tag has been added
-<span class="lineNum"> 211 </span><span class="lineCov"> 2 : tags = debtags.getTagsOfItem(p);</span>
-<span class="lineNum"> 212 </span><span class="lineCov"> 1 : assert(!tags.empty());</span>
-<span class="lineNum"> 213 </span> :
-<span class="lineNum"> 214 </span><span class="lineCov"> 2 : t = voc().tagByName(&quot;use::gameplaying&quot;);</span>
-<span class="lineNum"> 215 </span><span class="lineCov"> 2 : assert( t &lt;= tags );</span>
-<span class="lineNum"> 216 </span> :
-<span class="lineNum"> 217 </span> : // Save the patch
-<span class="lineNum"> 218 </span><span class="lineCov"> 1 : debtags.savePatch();</span>
-<span class="lineNum"> 219 </span> :
-<span class="lineNum"> 220 </span> : // Check that the saved patch is correct
-<span class="lineNum"> 221 </span><span class="lineCov"> 1 : FILE* in = fopen(patchfile.c_str(), &quot;r&quot;);</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 1 : string writtenPatch;</span>
-<span class="lineNum"> 223 </span> : int c;
-<span class="lineNum"> 224 </span><span class="lineCov"> 29 : while ((c = getc(in)) != EOF)</span>
-<span class="lineNum"> 225 </span><span class="lineCov"> 27 : writtenPatch += c;</span>
-<span class="lineNum"> 226 </span><span class="lineCov"> 1 : fclose(in);</span>
-<span class="lineNum"> 227 </span> :
-<span class="lineNum"> 228 </span><span class="lineCov"> 1 : assert_eq(writtenPatch, string(&quot;debtags: +use::gameplaying\n&quot;));</span>
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span><span class="lineCov"> 2 : unlink(patchfile.c_str());</span>
-<span class="lineNum"> 231 </span> :
-<span class="lineNum"> 232 </span> : // Reapply the patch and see that it doesn't disrept things
-<span class="lineNum"> 233 </span><span class="lineCov"> 1 : debtags.applyChange(change);</span>
-<span class="lineNum"> 234 </span> :
-<span class="lineNum"> 235 </span> : // The patch should not have changed
-<span class="lineNum"> 236 </span><span class="lineCov"> 1 : tmp = debtags.changes();</span>
-<span class="lineNum"> 237 </span><span class="lineCov"> 1 : assert_eq(tmp.size(), 1u);</span>
-<span class="lineNum"> 238 </span><span class="lineCov"> 2 : assert_eq(tmp.begin()-&gt;first, p);</span>
-<span class="lineNum"> 239 </span><span class="lineCov"> 1 : assert_eq(tmp.begin()-&gt;second.item, p);</span>
-<span class="lineNum"> 240 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 241 </span> :
-<span class="lineNum"> 242 </span> : // If there is no data, Debtags should work as an empty collection
-<span class="lineNum"> 243 </span><span class="lineCov"> 1 : Test _5()</span>
-<span class="lineNum"> 244 </span> : {
-<span class="lineNum"> 245 </span><span class="lineCov"> 1 : Path::OverrideDebtagsSourceDir odsd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 246 </span><span class="lineCov"> 2 : Path::OverrideDebtagsIndexDir odid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 247 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserSourceDir odusd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 248 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserIndexDir oduid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 249 </span><span class="lineCov"> 1 : Debtags empty;</span>
-<span class="lineNum"> 250 </span> :
-<span class="lineNum"> 251 </span><span class="lineCov"> 1 : assert(empty.begin() == empty.end());</span>
-<span class="lineNum"> 252 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span>
-<span class="lineNum"> 253 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span>
-<span class="lineNum"> 254 </span> :
-<span class="lineNum"> 255 </span><span class="lineCov"> 1 : tagcoll::PatchList&lt;std::string, Tag&gt; patches = empty.changes();</span>
-<span class="lineNum"> 256 </span><span class="lineCov"> 1 : assert(patches.empty());</span>
-<span class="lineNum"> 257 </span> :
-<span class="lineNum"> 258 </span><span class="lineCov"> 2 : set&lt;Tag&gt; res = empty.getTagsOfItem(&quot;apt&quot;);</span>
-<span class="lineNum"> 259 </span><span class="lineCov"> 2 : assert(res.empty());</span>
-<span class="lineNum"> 260 </span><span class="lineCov"> 2 : res = empty.getTagsOfItems(wibble::singleton(string(&quot;apt&quot;)));</span>
-<span class="lineNum"> 261 </span><span class="lineCov"> 2 : assert(res.empty());</span>
-<span class="lineNum"> 262 </span> :
-<span class="lineNum"> 263 </span><span class="lineCov"> 2 : res = empty.getAllTags();</span>
-<span class="lineNum"> 264 </span><span class="lineCov"> 1 : assert(res.empty());</span>
-<span class="lineNum"> 265 </span> :
-<span class="lineNum"> 266 </span><span class="lineCov"> 1 : tagcoll::coll::Simple&lt;string, Tag&gt; coll;</span>
-<span class="lineNum"> 267 </span><span class="lineCov"> 1 : empty.outputSystem(tagcoll::coll::inserter(coll));</span>
-<span class="lineNum"> 268 </span><span class="lineCov"> 1 : assert_eq(coll.itemCount(), 0u);</span>
-<span class="lineNum"> 269 </span> :
-<span class="lineNum"> 270 </span><span class="lineCov"> 1 : coll.clear();</span>
-<span class="lineNum"> 271 </span> :
-<span class="lineNum"> 272 </span><span class="lineCov"> 1 : empty.outputPatched(tagcoll::coll::inserter(coll));</span>
-<span class="lineNum"> 273 </span><span class="lineCov"> 1 : assert_eq(coll.itemCount(), 0u);</span>
-<span class="lineNum"> 274 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 275 </span> :
-<span class="lineNum"> 276 </span> : };
-<span class="lineNum"> 277 </span> :
-<span class="lineNum"> 278 </span> : #include &lt;ept/debtags/debtags.tcc&gt;
-<span class="lineNum"> 279 </span> : #include &lt;tagcoll/coll/simple.tcc&gt;
-<span class="lineNum"> 280 </span> :
-<span class="lineNum"> 281 </span> : #endif
-<span class="lineNum"> 282 </span> :
-<span class="lineNum"> 283 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/expression.cc.gcov.html b/rep/ept/debtags/expression.cc.gcov.html
deleted file mode 100644
index 08ed2aa..0000000
--- a/rep/ept/debtags/expression.cc.gcov.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!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/debtags/expression.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - expression.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</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> : /** \file
-<span class="lineNum"> 2 </span> : * Match tag expressions against sets of Debtags Tags
-<span class="lineNum"> 3 </span> : */
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /*
-<span class="lineNum"> 6 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 7 </span> : *
-<span class="lineNum"> 8 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 9 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 10 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 11 </span> : * (at your option) any later version.
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 16 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 19 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 21 </span> : */
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/expression.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;string&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : namespace tagcoll
-<span class="lineNum"> 27 </span> : {
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : template&lt;&gt;
-<span class="lineNum"> 30 </span><span class="lineCov"> 12 : bool Expression::operator()(const std::set&lt;ept::debtags::Tag&gt;&amp; tags) const</span>
-<span class="lineNum"> 31 </span> : {
-<span class="lineNum"> 32 </span><span class="lineCov"> 12 : std::set&lt;std::string&gt; names;</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 48 : for (std::set&lt;ept::debtags::Tag&gt;::const_iterator i = tags.begin();</span>
-<span class="lineNum"> 34 </span> : i != tags.end(); ++i)
-<span class="lineNum"> 35 </span><span class="lineCov"> 36 : names.insert(i-&gt;fullname());</span>
-<span class="lineNum"> 36 </span><span class="lineCov"> 12 : return this-&gt;m_impl-&gt;eval(names);</span>
-<span class="lineNum"> 37 </span> : }
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : template&lt;&gt;
-<span class="lineNum"> 40 </span> : bool Expression::operator()(const std::set&lt;ept::debtags::Facet&gt;&amp; tags) const
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span> : std::set&lt;std::string&gt; names;
-<span class="lineNum"> 43 </span> : for (std::set&lt;ept::debtags::Facet&gt;::const_iterator i = tags.begin();
-<span class="lineNum"> 44 </span> : i != tags.end(); ++i)
-<span class="lineNum"> 45 </span> : names.insert(i-&gt;name());
-<span class="lineNum"> 46 </span> : return this-&gt;m_impl-&gt;eval(names);
-<span class="lineNum"> 47 </span> : }
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span> : };
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/expression.test.h.gcov.html b/rep/ept/debtags/expression.test.h.gcov.html
deleted file mode 100644
index 3a099a8..0000000
--- a/rep/ept/debtags/expression.test.h.gcov.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!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/debtags/expression.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - expression.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">32</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">32</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> : /*
-<span class="lineNum"> 2 </span> : * Match tag expressions against sets of Debtags Tags
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;wibble/test.h&gt;
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/expression.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &quot;debtags.test.h&quot;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : using namespace tagcoll;
-<span class="lineNum"> 29 </span> : using namespace std;
-<span class="lineNum"> 30 </span> : using namespace ept::debtags;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 2 : struct TestExpression : DebtagsTestEnvironment {</span>
-<span class="lineNum"> 33 </span> : Vocabulary voc;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : Test _1()</span>
-<span class="lineNum"> 36 </span> : {
-<span class="lineNum"> 37 </span><span class="lineCov"> 1 : set&lt;Tag&gt; test;</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : test.insert(voc.tagByName(&quot;use::editing&quot;));</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 2 : test.insert(voc.tagByName(&quot;use::viewing&quot;));</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 2 : test.insert(voc.tagByName(&quot;works-with::text&quot;));</span>
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span><span class="lineCov"> 2 : assert_eq(test.size(), 3u);</span>
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 2 : Expression e1(&quot;use::editing&quot;);</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 2 : Expression e2(&quot;use::editing &amp;&amp; use::viewing&quot;);</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 2 : assert(e2(test));</span>
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span><span class="lineCov"> 2 : e1 = Expression(&quot;!use::editing&quot;);</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 2 : assert(!e1(test));</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineCov"> 2 : e1 = Expression(&quot;use::editing || sugo&quot;);</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span><span class="lineCov"> 2 : e1 = Expression(&quot;use::editing &amp;&amp; !sugo&quot;);</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span><span class="lineCov"> 2 : e1 = Expression(&quot;use::editing &amp;&amp; !use::viewing&quot;);</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 2 : assert(!e1(test));</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineCov"> 2 : e1 = Expression(&quot;(use::editing || sugo) &amp;&amp; (use::viewing &amp;&amp; works-with::text)&quot;);</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span><span class="lineCov"> 2 : e1 = Expression(&quot;!(use::editinuse::editingra &amp;&amp; works-with::text)&quot;);</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span><span class="lineCov"> 2 : e1 = Expression(&quot;works-with::*&quot;);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span><span class="lineCov"> 2 : e1 = Expression(&quot;*::text&quot;);</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : e1 = Expression(&quot;!*::antani&quot;);</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 2 : assert(e1(test));</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineCov"> 2 : e1 = Expression(&quot;*::antani&quot;);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 2 : assert(!e1(test));</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : };
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/index.html b/rep/ept/debtags/index.html
deleted file mode 100644
index 1f5c5bd..0000000
--- a/rep/ept/debtags/index.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!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/debtags</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/debtags</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">702</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">89.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">626</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtags.cc.gcov.html">debtags.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../amber.png" width=48 height=10 alt="48.1%"><img src="../../snow.png" width=52 height=10 alt="48.1%"></td></tr></table>
- </td>
- <td class="coverPerMed">48.1&nbsp;%</td>
- <td class="coverNumMed">39&nbsp;/&nbsp;81&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtags.h.gcov.html">debtags.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=93 height=10 alt="93.1%"><img src="../../snow.png" width=7 height=10 alt="93.1%"></td></tr></table>
- </td>
- <td class="coverPerHi">93.1&nbsp;%</td>
- <td class="coverNumHi">67&nbsp;/&nbsp;72&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtags.tcc.gcov.html">debtags.tcc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">4&nbsp;/&nbsp;4&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtags.test.h.gcov.html">debtags.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">103&nbsp;/&nbsp;103&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="expression.cc.gcov.html">expression.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">5&nbsp;/&nbsp;5&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="expression.test.h.gcov.html">expression.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">32&nbsp;/&nbsp;32&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="tag.cc.gcov.html">tag.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=75 height=10 alt="74.6%"><img src="../../snow.png" width=25 height=10 alt="74.6%"></td></tr></table>
- </td>
- <td class="coverPerHi">74.6&nbsp;%</td>
- <td class="coverNumHi">44&nbsp;/&nbsp;59&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="tag.h.gcov.html">tag.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=94 height=10 alt="93.8%"><img src="../../snow.png" width=6 height=10 alt="93.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">93.8&nbsp;%</td>
- <td class="coverNumHi">15&nbsp;/&nbsp;16&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabulary.cc.gcov.html">vocabulary.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=95 height=10 alt="95.1%"><img src="../../snow.png" width=5 height=10 alt="95.1%"></td></tr></table>
- </td>
- <td class="coverPerHi">95.1&nbsp;%</td>
- <td class="coverNumHi">97&nbsp;/&nbsp;102&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabulary.h.gcov.html">vocabulary.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="87.3%"><img src="../../snow.png" width=13 height=10 alt="87.3%"></td></tr></table>
- </td>
- <td class="coverPerHi">87.3&nbsp;%</td>
- <td class="coverNumHi">48&nbsp;/&nbsp;55&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabulary.test.h.gcov.html">vocabulary.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=99 height=10 alt="99.4%"><img src="../../snow.png" width=1 height=10 alt="99.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">99.4&nbsp;%</td>
- <td class="coverNumHi">172&nbsp;/&nbsp;173&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/debtags/maint/debdbparser.cc.gcov.html b/rep/ept/debtags/maint/debdbparser.cc.gcov.html
deleted file mode 100644
index df9b37c..0000000
--- a/rep/ept/debtags/maint/debdbparser.cc.gcov.html
+++ /dev/null
@@ -1,255 +0,0 @@
-<!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/debtags/maint/debdbparser.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - debdbparser.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">64</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">84.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">54</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> : /*
-<span class="lineNum"> 2 </span> : * Parser for debian database files
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003--2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 7 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 8 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 9 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 14 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 17 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;ept/debtags/maint/debdbparser.h&gt;
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : #include &lt;tagcoll/input/base.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;map&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ctype.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : // using namespace std;
-<span class="lineNum"> 29 </span> : using namespace tagcoll;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace debtags {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : // Eat spaces and empty lines
-<span class="lineNum"> 35 </span> : // Returns the number of '\n' encountered
-<span class="lineNum"> 36 </span><span class="lineCov"> 12089 : int DebDBParser::eatSpacesAndEmptyLines()</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span><span class="lineCov"> 12089 : int res = 0;</span>
-<span class="lineNum"> 39 </span> : int c;
-<span class="lineNum"> 40 </span><span class="lineCov"> 31183 : while ((c = in.nextChar()) != input::Input::Eof &amp;&amp; (isblank(c) || c == '\n'))</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 7005 : if (c == '\n')</span>
-<span class="lineNum"> 42 </span> : {
-<span class="lineNum"> 43 </span><span class="lineCov"> 3314 : isBOL = true;</span>
-<span class="lineNum"> 44 </span> : //line++;
-<span class="lineNum"> 45 </span><span class="lineCov"> 3314 : res++;</span>
-<span class="lineNum"> 46 </span> : } else
-<span class="lineNum"> 47 </span><span class="lineCov"> 3691 : isBOL = false;</span>
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineCov"> 12089 : if (c == input::Input::Eof)</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 1308 : isEOF = true;</span>
-<span class="lineNum"> 51 </span> : else
-<span class="lineNum"> 52 </span><span class="lineCov"> 10781 : in.pushChar(c);</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span><span class="lineCov"> 12089 : return res;</span>
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : // Get the ^([A-Za-z0-9]+) field name
-<span class="lineNum"> 58 </span><span class="lineCov"> 7094 : std::string DebDBParser::getFieldName()</span>
-<span class="lineNum"> 59 </span> : {
-<span class="lineNum"> 60 </span><span class="lineCov"> 7094 : if (! isBOL)</span>
-<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : throw exception::Parser(in, &quot;field must start at the beginning of the line&quot;);</span>
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span><span class="lineCov"> 7094 : std::string res;</span>
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : int c;
-<span class="lineNum"> 66 </span><span class="lineCov"> 63954 : while ((c = in.nextChar()) != input::Input::Eof &amp;&amp; (isalnum(c) || c == '-'))</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 49766 : res += c;</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineCov"> 7094 : if (c == input::Input::Eof)</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : isEOF = true;</span>
-<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : if (!res.empty())</span>
-<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : throw exception::Parser(in, &quot;field is truncated at end of file. Last line begins with: \&quot;&quot; + res + &quot;\n&quot;);</span>
-<span class="lineNum"> 74 </span> : } else
-<span class="lineNum"> 75 </span><span class="lineCov"> 7094 : in.pushChar(c);</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 78 </span> : }
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span> : // Eat the \s*: characters that divide the field name and the field
-<span class="lineNum"> 81 </span> : // data
-<span class="lineNum"> 82 </span><span class="lineCov"> 7094 : void DebDBParser::eatFieldSep()</span>
-<span class="lineNum"> 83 </span> : {
-<span class="lineNum"> 84 </span> : int c;
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span><span class="lineCov"> 7094 : while ((c = in.nextChar()) != input::Input::Eof &amp;&amp; isblank(c))</span>
-<span class="lineNum"> 87 </span> : ;
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 7094 : if (c != ':')</span>
-<span class="lineNum"> 90 </span> : {
-<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : if (c == input::Input::Eof)</span>
-<span class="lineNum"> 92 </span> : {
-<span class="lineNum"> 93 </span><span class="lineNoCov"> 0 : isEOF = true;</span>
-<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : throw exception::Parser(in, &quot;field is truncated at end of file&quot;);</span>
-<span class="lineNum"> 95 </span> : } else {
-<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : throw exception::Parser(in, std::string(&quot;invalid character `&quot;) + (char)c + &quot;' expecting `:'&quot;);</span>
-<span class="lineNum"> 97 </span> : }
-<span class="lineNum"> 98 </span> : }
-<span class="lineNum"> 99 </span><span class="lineCov"> 7094 : }</span>
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : // Get the \s*(.+?)\s*\n of a body line
-<span class="lineNum"> 102 </span><span class="lineCov"> 17875 : void DebDBParser::appendFieldBody(std::string&amp; body)</span>
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span> : int c;
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : // Skip leading spaces
-<span class="lineNum"> 107 </span><span class="lineCov"> 17875 : while ((c = in.nextChar()) != input::Input::Eof &amp;&amp; isblank(c))</span>
-<span class="lineNum"> 108 </span> : ;
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : // Get the body part
-<span class="lineNum"> 111 </span><span class="lineCov"> 280757 : for ( ; c != input::Input::Eof &amp;&amp; c != '\n'; c = in.nextChar())</span>
-<span class="lineNum"> 112 </span><span class="lineCov"> 269976 : body += c;</span>
-<span class="lineNum"> 113 </span> :
-<span class="lineNum"> 114 </span> : // Delete trailing spaces
-<span class="lineNum"> 115 </span><span class="lineCov"> 10781 : size_t end = body.find_last_not_of(&quot; \t&quot;);</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 10781 : if (end != std::string::npos)</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 10781 : body.resize(end + 1);</span>
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span><span class="lineCov"> 10781 : if (c == input::Input::Eof)</span>
-<span class="lineNum"> 120 </span><span class="lineNoCov"> 0 : isEOF = true;</span>
-<span class="lineNum"> 121 </span> : else
-<span class="lineNum"> 122 </span> : {
-<span class="lineNum"> 123 </span> : //line++;
-<span class="lineNum"> 124 </span><span class="lineCov"> 10781 : isBOL = true;</span>
-<span class="lineNum"> 125 </span> : }
-<span class="lineNum"> 126 </span><span class="lineCov"> 10781 : }</span>
-<span class="lineNum"> 127 </span> :
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span><span class="lineCov"> 1308 : DebDBParser::DebDBParser(input::Input&amp; input) :</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 1308 : in(input), isBOL(true), isEOF(false)</span>
-<span class="lineNum"> 131 </span> : {
-<span class="lineNum"> 132 </span> : // Go at the start of the next record
-<span class="lineNum"> 133 </span><span class="lineCov"> 1308 : eatSpacesAndEmptyLines();</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 1308 : }</span>
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : // Read a record and positions itself at the start of the next one
-<span class="lineNum"> 138 </span> : // Returns false when there are no more records available
-<span class="lineNum"> 139 </span><span class="lineCov"> 3261 : bool DebDBParser::nextRecord(Record&amp; rec)</span>
-<span class="lineNum"> 140 </span> : {
-<span class="lineNum"> 141 </span><span class="lineCov"> 3261 : if (isEOF)</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 7 : return false;</span>
-<span class="lineNum"> 143 </span> :
-<span class="lineNum"> 144 </span><span class="lineCov"> 3254 : rec.clear();</span>
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span> : int n;
-<span class="lineNum"> 147 </span><span class="lineCov"> 12880 : do {</span>
-<span class="lineNum"> 148 </span> : // Read the field name
-<span class="lineNum"> 149 </span><span class="lineCov"> 7094 : std::string field = getFieldName();</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 7094 : std::string body;</span>
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span> : //fprintf(stderr, &quot;Got field: %.*s\n&quot;, field.size(), field.data());
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : // Read the colon
-<span class="lineNum"> 155 </span><span class="lineCov"> 7094 : eatFieldSep();</span>
-<span class="lineNum"> 156 </span> :
-<span class="lineNum"> 157 </span> : // Read the first line of the field body
-<span class="lineNum"> 158 </span><span class="lineCov"> 7094 : appendFieldBody(body);</span>
-<span class="lineNum"> 159 </span> : //fprintf(stderr, &quot;Got body: %.*s\n&quot;, body.size(), body.data());
-<span class="lineNum"> 160 </span> :
-<span class="lineNum"> 161 </span> : // Read the continuation lines of field body
-<span class="lineNum"> 162 </span><span class="lineCov"> 17875 : while ((n = eatSpacesAndEmptyLines()) == 0 &amp;&amp; ! isBOL)</span>
-<span class="lineNum"> 163 </span> : {
-<span class="lineNum"> 164 </span><span class="lineCov"> 3687 : body += '\n';</span>
-<span class="lineNum"> 165 </span> :
-<span class="lineNum"> 166 </span><span class="lineCov"> 3687 : size_t start_size = body.size();</span>
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span><span class="lineCov"> 3687 : appendFieldBody(body);</span>
-<span class="lineNum"> 169 </span> :
-<span class="lineNum"> 170 </span> : // Check for dot-only lines to be changed to empty lines
-<span class="lineNum"> 171 </span><span class="lineCov"> 3687 : if (body.size() - start_size == 1 &amp;&amp; body[body.size() - 1] == '.')</span>
-<span class="lineNum"> 172 </span><span class="lineCov"> 601 : body.resize(body.size() - 1);</span>
-<span class="lineNum"> 173 </span> :
-<span class="lineNum"> 174 </span> : //fprintf(stderr, &quot;Appended body: %.*s\n&quot;, body.size(), body.data());
-<span class="lineNum"> 175 </span> : }
-<span class="lineNum"> 176 </span> : //fprintf(stderr, &quot;Trailing newlines: %d\n&quot;, n);
-<span class="lineNum"> 177 </span> :
-<span class="lineNum"> 178 </span> :
-<span class="lineNum"> 179 </span><span class="lineCov"> 7094 : rec.insert(std::pair&lt;std::string,std::string&gt;(field, body));</span>
-<span class="lineNum"> 180 </span> : } while (!isEOF &amp;&amp; !n);
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span><span class="lineCov"> 3254 : return true;</span>
-<span class="lineNum"> 183 </span> : }
-<span class="lineNum"> 184 </span> :
-<span class="lineNum"> 185 </span> : }
-<span class="lineNum"> 186 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 187 </span> :
-<span class="lineNum"> 188 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/debtagsindexer.cc.gcov.html b/rep/ept/debtags/maint/debtagsindexer.cc.gcov.html
deleted file mode 100644
index 143e907..0000000
--- a/rep/ept/debtags/maint/debtagsindexer.cc.gcov.html
+++ /dev/null
@@ -1,332 +0,0 @@
-<!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/debtags/maint/debtagsindexer.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - debtagsindexer.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">119</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">74.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">89</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> : #include &lt;ept/debtags/maint/debtagsindexer.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/debtags/maint/serializer.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : #include &lt;tagcoll/coll/intdiskindex.h&gt;
-<span class="lineNum"> 8 </span> : #include &lt;tagcoll/coll/simple.h&gt;
-<span class="lineNum"> 9 </span> : #include &lt;tagcoll/TextFormat.h&gt;
-<span class="lineNum"> 10 </span> : #include &lt;tagcoll/stream/filters.h&gt;
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span> : #include &lt;cstring&gt;
-<span class="lineNum"> 15 </span> :
-<span class="lineNum"> 16 </span> : using namespace std;
-<span class="lineNum"> 17 </span> :
-<span class="lineNum"> 18 </span> : namespace ept {
-<span class="lineNum"> 19 </span> : namespace debtags {
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : /// MMapIndexer that indexes the package names
-<span class="lineNum"> 22 </span> : struct PkgIdGenerator : public tagcoll::diskindex::MMapIndexer
-<span class="lineNum"> 23 </span><span class="lineCov"> 2 : {</span>
-<span class="lineNum"> 24 </span> : // Sorted set of all available package names
-<span class="lineNum"> 25 </span> : std::set&lt;std::string&gt; pkgs;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span><span class="lineCov"> 3 : int encodedSize() const</span>
-<span class="lineNum"> 28 </span> : {
-<span class="lineNum"> 29 </span><span class="lineCov"> 3 : int size = pkgs.size() * sizeof(int);</span>
-<span class="lineNum"> 30 </span><span class="lineCov"> 63438 : for (std::set&lt;std::string&gt;::const_iterator i = pkgs.begin();</span>
-<span class="lineNum"> 31 </span> : i != pkgs.end(); ++i)
-<span class="lineNum"> 32 </span><span class="lineCov"> 63435 : size += i-&gt;size() + 1;</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 3 : return tagcoll::diskindex::MMap::align(size);</span>
-<span class="lineNum"> 34 </span> : }
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 2 : void encode(char* buf) const</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span><span class="lineCov"> 2 : int pos = pkgs.size() * sizeof(int);</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 2 : int idx = 0;</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 42292 : for (std::set&lt;std::string&gt;::const_iterator i = pkgs.begin();</span>
-<span class="lineNum"> 41 </span> : i != pkgs.end(); ++i)
-<span class="lineNum"> 42 </span> : {
-<span class="lineNum"> 43 </span><span class="lineCov"> 42290 : ((int*)buf)[idx++] = pos;</span>
-<span class="lineNum"> 44 </span><span class="lineCov"> 42290 : memcpy(buf + pos, i-&gt;c_str(), i-&gt;size() + 1);</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 42290 : pos += i-&gt;size() + 1;</span>
-<span class="lineNum"> 46 </span> : }
-<span class="lineNum"> 47 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 48 </span> : };
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 10 : DebtagsIndexer::DebtagsIndexer(Vocabulary&amp; voc)</span>
-<span class="lineNum"> 52 </span> : : voc(voc),
-<span class="lineNum"> 53 </span> : mainSource(Path::debtagsSourceDir()),
-<span class="lineNum"> 54 </span><span class="lineCov"> 10 : userSource(Path::debtagsUserSourceDir())</span>
-<span class="lineNum"> 55 </span> : {
-<span class="lineNum"> 56 </span><span class="lineCov"> 10 : rescan();</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 10 : }</span>
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span><span class="lineCov"> 10 : void DebtagsIndexer::rescan()</span>
-<span class="lineNum"> 60 </span> : {
-<span class="lineNum"> 61 </span><span class="lineCov"> 10 : ts_main_src = mainSource.timestamp();</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 10 : ts_user_src = userSource.timestamp();</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 10 : ts_main_tag = Path::timestamp(Path::tagdb());</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 20 : ts_main_idx = Path::timestamp(Path::tagdbIndex());</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 20 : ts_user_tag = Path::timestamp(Path::userTagdb());</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 20 : ts_user_idx = Path::timestamp(Path::userTagdbIndex());</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 10 : }</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineCov"> 10 : bool DebtagsIndexer::needsRebuild() const</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span> : // If there are no indexes of any kind, then we need rebuilding
-<span class="lineNum"> 72 </span><span class="lineCov"> 10 : if (ts_user_tag == 0 &amp;&amp; ts_user_idx == 0 &amp;&amp; ts_main_tag == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 2 : return true;</span>
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : // If the user index is ok, then we are fine
-<span class="lineNum"> 76 </span><span class="lineCov"> 8 : if (ts_user_tag &gt;= sourceTimestamp() &amp;&amp; ts_user_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 8 : return false;</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : // If there are user sources, then we cannot use the system index
-<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : if (ts_user_src &gt; 0)</span>
-<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : // If there are no user sources, then we can fallback on the system
-<span class="lineNum"> 84 </span> : // indexes in case the user indexes are not up to date
-<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : if (ts_main_tag &gt;= sourceTimestamp() &amp;&amp; ts_main_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 86 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 89 </span> : }
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span><span class="lineCov"> 10 : bool DebtagsIndexer::userIndexIsRedundant() const</span>
-<span class="lineNum"> 92 </span> : {
-<span class="lineNum"> 93 </span> : // If there is no user index, then it is not redundant
-<span class="lineNum"> 94 </span><span class="lineCov"> 10 : if (ts_user_tag == 0 &amp;&amp; ts_user_idx == 0)</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span> : // If we have user sources, then the user index is never redundant
-<span class="lineNum"> 98 </span><span class="lineCov"> 9 : if (ts_user_src &gt; 0)</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 9 : return false;</span>
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : // If the system index is not up to date, then the user index is not
-<span class="lineNum"> 102 </span> : // redundant
-<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : if (ts_main_tag &lt; sourceTimestamp() || ts_main_idx &lt; sourceTimestamp())</span>
-<span class="lineNum"> 104 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 107 </span> : }
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span><span class="lineCov"> 2 : bool DebtagsIndexer::rebuild(const std::string&amp; tagfname, const std::string&amp; idxfname)</span>
-<span class="lineNum"> 110 </span> : {
-<span class="lineNum"> 111 </span> : using namespace tagcoll;
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span><span class="lineCov"> 2 : diskindex::MasterMMapIndexer master(idxfname);</span>
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span> : // Read and merge tag data
-<span class="lineNum"> 116 </span><span class="lineCov"> 2 : coll::Simple&lt;string, string&gt; merged;</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 2 : mainSource.readTags(inserter(merged));</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 2 : userSource.readTags(inserter(merged));</span>
-<span class="lineNum"> 119 </span> :
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : if (merged.empty())</span>
-<span class="lineNum"> 121 </span> : //throw wibble::exception::Consistency(&quot;Reading debtags sources from &quot; + Path::debtagsSourceDir() + &quot; and &quot; + Path::debtagsUserSourceDir(), &quot;Unable to find any tag data&quot;);
-<span class="lineNum"> 122 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span> : // Create the pkgid index
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : PkgIdGenerator pkgidGen;</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 21146 : for (coll::Simple&lt;string, string&gt;::const_iterator i = merged.begin();</span>
-<span class="lineNum"> 127 </span> : i != merged.end(); ++i)
-<span class="lineNum"> 128 </span><span class="lineCov"> 21145 : pkgidGen.pkgs.insert(i-&gt;first);</span>
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span> : // Temporary in-memory index to use for converting packages to ints while
-<span class="lineNum"> 131 </span> : // creating the debtags index
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : char buf[pkgidGen.encodedSize()];</span>
-<span class="lineNum"> 133 </span><span class="lineCov"> 1 : pkgidGen.encode(buf);</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 1 : PkgId pkgid(buf, pkgidGen.encodedSize());</span>
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> : // Create the Debtags index
-<span class="lineNum"> 137 </span><span class="lineCov"> 1 : coll::IntDiskIndexer tagindexer;</span>
-<span class="lineNum"> 138 </span><span class="lineCov"> 1 : merged.output(stringToInt(pkgid, voc, inserter(tagindexer)));</span>
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span> : // MMap 0: pkgid
-<span class="lineNum"> 141 </span><span class="lineCov"> 1 : master.append(pkgidGen);</span>
-<span class="lineNum"> 142 </span> : // MMap 1: pkg-&gt;tag
-<span class="lineNum"> 143 </span><span class="lineCov"> 1 : master.append(tagindexer.pkgIndexer());</span>
-<span class="lineNum"> 144 </span> : // MMap 2: tag-&gt;pkg
-<span class="lineNum"> 145 </span><span class="lineCov"> 1 : master.append(tagindexer.tagIndexer());</span>
-<span class="lineNum"> 146 </span> :
-<span class="lineNum"> 147 </span> : // Write the tag database in text format
-<span class="lineNum"> 148 </span><span class="lineCov"> 1 : std::string tmpdb = tagfname + &quot;.tmp&quot;;</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 1 : FILE* out = fopen(tmpdb.c_str(), &quot;wt&quot;);</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 1 : if (!out) throw wibble::exception::File(tmpdb, &quot;creating temporary copy of tag index&quot;);</span>
-<span class="lineNum"> 151 </span><span class="lineCov"> 1 : merged.output(textformat::StdioWriter(out));</span>
-<span class="lineNum"> 152 </span><span class="lineCov"> 1 : fclose(out);</span>
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : // Perform &quot;atomic&quot; update of the tag database
-<span class="lineNum"> 155 </span> : // FIXME: cannot be atomic because race conditions happening between file
-<span class="lineNum"> 156 </span> : // renames
-<span class="lineNum"> 157 </span><span class="lineCov"> 1 : if (rename(tmpdb.c_str(), tagfname.c_str()) == -1)</span>
-<span class="lineNum"> 158 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(&quot;Renaming &quot; + tmpdb + &quot; to &quot; + tagfname);</span>
-<span class="lineNum"> 159 </span> :
-<span class="lineNum"> 160 </span><span class="lineCov"> 1 : master.commit();</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 162 </span> : }
-<span class="lineNum"> 163 </span> :
-<span class="lineNum"> 164 </span><span class="lineCov"> 10 : bool DebtagsIndexer::rebuildIfNeeded()</span>
-<span class="lineNum"> 165 </span> : {
-<span class="lineNum"> 166 </span><span class="lineCov"> 10 : if (needsRebuild())</span>
-<span class="lineNum"> 167 </span> : {
-<span class="lineNum"> 168 </span> : // Decide if we rebuild the user index or the system index
-<span class="lineNum"> 169 </span> :
-<span class="lineNum"> 170 </span><span class="lineCov"> 2 : if (ts_user_src == 0 &amp;&amp; Path::access(Path::debtagsIndexDir(), W_OK) == 0)</span>
-<span class="lineNum"> 171 </span> : {
-<span class="lineNum"> 172 </span> : // There are no user sources and we can write to the system index
-<span class="lineNum"> 173 </span> : // directory: rebuild the system index
-<span class="lineNum"> 174 </span><span class="lineCov"> 1 : if (!rebuild(Path::tagdb(), Path::tagdbIndex()))</span>
-<span class="lineNum"> 175 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : ts_main_tag = Path::timestamp(Path::tagdb());</span>
-<span class="lineNum"> 177 </span><span class="lineNoCov"> 0 : ts_main_idx = Path::timestamp(Path::tagdbIndex());</span>
-<span class="lineNum"> 178 </span><span class="lineNoCov"> 0 : if (Path::tagdb() == Path::userTagdb())</span>
-<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : ts_user_tag = ts_main_tag;</span>
-<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : if (Path::tagdbIndex() == Path::userTagdbIndex())</span>
-<span class="lineNum"> 181 </span><span class="lineNoCov"> 0 : ts_user_idx = ts_main_idx;</span>
-<span class="lineNum"> 182 </span> : } else {
-<span class="lineNum"> 183 </span><span class="lineCov"> 1 : wibble::sys::fs::mkFilePath(Path::userTagdb());</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 2 : wibble::sys::fs::mkFilePath(Path::userTagdbIndex());</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 2 : if (!rebuild(Path::userTagdb(), Path::userTagdbIndex()))</span>
-<span class="lineNum"> 186 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 187 </span><span class="lineCov"> 1 : ts_user_tag = Path::timestamp(Path::userTagdb());</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 2 : ts_user_idx = Path::timestamp(Path::userTagdbIndex());</span>
-<span class="lineNum"> 189 </span> : }
-<span class="lineNum"> 190 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 191 </span> : }
-<span class="lineNum"> 192 </span><span class="lineCov"> 8 : return false;</span>
-<span class="lineNum"> 193 </span> : }
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span><span class="lineCov"> 10 : bool DebtagsIndexer::deleteRedundantUserIndex()</span>
-<span class="lineNum"> 196 </span> : {
-<span class="lineNum"> 197 </span><span class="lineCov"> 10 : if (userIndexIsRedundant())</span>
-<span class="lineNum"> 198 </span> : {
-<span class="lineNum"> 199 </span> : // Delete the user indexes if they exist
-<span class="lineNum"> 200 </span><span class="lineNoCov"> 0 : if (Path::tagdb() != Path::userTagdb())</span>
-<span class="lineNum"> 201 </span> : {
-<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : unlink(Path::userTagdb().c_str());</span>
-<span class="lineNum"> 203 </span><span class="lineNoCov"> 0 : ts_user_tag = 0;</span>
-<span class="lineNum"> 204 </span> : }
-<span class="lineNum"> 205 </span><span class="lineNoCov"> 0 : if (Path::tagdbIndex() != Path::userTagdbIndex())</span>
-<span class="lineNum"> 206 </span> : {
-<span class="lineNum"> 207 </span><span class="lineNoCov"> 0 : unlink(Path::userTagdbIndex().c_str());</span>
-<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : ts_user_idx = 0;</span>
-<span class="lineNum"> 209 </span> : }
-<span class="lineNum"> 210 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 211 </span> : }
-<span class="lineNum"> 212 </span><span class="lineCov"> 10 : return false;</span>
-<span class="lineNum"> 213 </span> : }
-<span class="lineNum"> 214 </span> :
-<span class="lineNum"> 215 </span><span class="lineCov"> 10 : bool DebtagsIndexer::getUpToDateTagdb(std::string&amp; tagfname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 216 </span> : {
-<span class="lineNum"> 217 </span> : // If there are no indexes of any kind, then we have nothing to return
-<span class="lineNum"> 218 </span><span class="lineCov"> 10 : if (ts_user_tag == 0 &amp;&amp; ts_user_idx == 0 &amp;&amp; ts_main_tag == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 219 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span> : // If the user index is up to date, use it
-<span class="lineNum"> 222 </span><span class="lineCov"> 9 : if (ts_user_tag &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 223 </span> : ts_user_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 224 </span> : {
-<span class="lineNum"> 225 </span><span class="lineCov"> 9 : tagfname = Path::userTagdb();</span>
-<span class="lineNum"> 226 </span><span class="lineCov"> 18 : idxfname = Path::userTagdbIndex();</span>
-<span class="lineNum"> 227 </span><span class="lineCov"> 9 : return true;</span>
-<span class="lineNum"> 228 </span> : }
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span> : // If the user index is not up to date and we have user sources, we cannot
-<span class="lineNum"> 231 </span> : // fall back to the system index
-<span class="lineNum"> 232 </span><span class="lineNoCov"> 0 : if (ts_user_src != 0)</span>
-<span class="lineNum"> 233 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 234 </span> :
-<span class="lineNum"> 235 </span> : // Fallback to the system index
-<span class="lineNum"> 236 </span><span class="lineNoCov"> 0 : if (ts_main_tag &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 237 </span> : ts_main_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 238 </span> : {
-<span class="lineNum"> 239 </span><span class="lineNoCov"> 0 : tagfname = Path::tagdb();</span>
-<span class="lineNum"> 240 </span><span class="lineNoCov"> 0 : idxfname = Path::tagdbIndex();</span>
-<span class="lineNum"> 241 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 242 </span> : }
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 245 </span> : }
-<span class="lineNum"> 246 </span> :
-<span class="lineNum"> 247 </span> :
-<span class="lineNum"> 248 </span> :
-<span class="lineNum"> 249 </span><span class="lineCov"> 10 : bool DebtagsIndexer::obtainWorkingDebtags(Vocabulary&amp; voc, std::string&amp; tagfname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 250 </span> : {
-<span class="lineNum"> 251 </span><span class="lineCov"> 10 : DebtagsIndexer t(voc);</span>
-<span class="lineNum"> 252 </span> :
-<span class="lineNum"> 253 </span><span class="lineCov"> 10 : t.rebuildIfNeeded();</span>
-<span class="lineNum"> 254 </span><span class="lineCov"> 10 : t.deleteRedundantUserIndex();</span>
-<span class="lineNum"> 255 </span><span class="lineCov"> 10 : return t.getUpToDateTagdb(tagfname, idxfname);</span>
-<span class="lineNum"> 256 </span> : }
-<span class="lineNum"> 257 </span> :
-<span class="lineNum"> 258 </span> : }
-<span class="lineNum"> 259 </span> : }
-<span class="lineNum"> 260 </span> :
-<span class="lineNum"> 261 </span> : #include &lt;ept/debtags/maint/sourcedir.tcc&gt;
-<span class="lineNum"> 262 </span> : #include &lt;tagcoll/coll/simple.tcc&gt;
-<span class="lineNum"> 263 </span> :
-<span class="lineNum"> 264 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 265 </span> : // -*- C++ -*-
-</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>
diff --git a/rep/ept/debtags/maint/debtagsindexer.h.gcov.html b/rep/ept/debtags/maint/debtagsindexer.h.gcov.html
deleted file mode 100644
index a67cc3a..0000000
--- a/rep/ept/debtags/maint/debtagsindexer.h.gcov.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!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/debtags/maint/debtagsindexer.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - debtagsindexer.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</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> : #ifndef EPT_DEBTAGS_DEBTAGSINDEXER_H
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_DEBTAGSINDEXER_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : #include &lt;ept/debtags/maint/sourcedir.h&gt;
-<span class="lineNum"> 5 </span> : #include &lt;string&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : namespace ept {
-<span class="lineNum"> 8 </span> : namespace debtags {
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : class Vocabulary;
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : struct DebtagsIndexer
-<span class="lineNum"> 13 </span><span class="lineCov"> 10 : {</span>
-<span class="lineNum"> 14 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 15 </span> :
-<span class="lineNum"> 16 </span> : SourceDir mainSource;
-<span class="lineNum"> 17 </span> : SourceDir userSource;
-<span class="lineNum"> 18 </span> : time_t ts_main_src;
-<span class="lineNum"> 19 </span> : time_t ts_user_src;
-<span class="lineNum"> 20 </span> : time_t ts_main_tag;
-<span class="lineNum"> 21 </span> : time_t ts_main_idx;
-<span class="lineNum"> 22 </span> : time_t ts_user_tag;
-<span class="lineNum"> 23 </span> : time_t ts_user_idx;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span><span class="lineCov"> 34 : time_t sourceTimestamp() const</span>
-<span class="lineNum"> 26 </span> : {
-<span class="lineNum"> 27 </span><span class="lineCov"> 34 : time_t res = ts_main_src;</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 34 : if (ts_user_src &gt; res) res = ts_user_src;</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 34 : return res;</span>
-<span class="lineNum"> 30 </span> : }
-<span class="lineNum"> 31 </span> : bool needsRebuild() const;
-<span class="lineNum"> 32 </span> : bool rebuild(const std::string&amp; tagfname, const std::string&amp; idxfname);
-<span class="lineNum"> 33 </span> : bool rebuildIfNeeded();
-<span class="lineNum"> 34 </span> : bool getUpToDateTagdb(std::string&amp; tagfname, std::string&amp; idxfname);
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : bool userIndexIsRedundant() const;
-<span class="lineNum"> 37 </span> : bool deleteRedundantUserIndex();
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : void rescan();
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : DebtagsIndexer(Vocabulary&amp; voc);
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : static bool obtainWorkingDebtags(Vocabulary&amp; voc, std::string&amp; tagfname, std::string&amp; idxfname);
-<span class="lineNum"> 44 </span> : };
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : }
-<span class="lineNum"> 48 </span> : }
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 51 </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>
diff --git a/rep/ept/debtags/maint/index.html b/rep/ept/debtags/maint/index.html
deleted file mode 100644
index ca8f250..0000000
--- a/rep/ept/debtags/maint/index.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!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/debtags/maint</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/debtags/maint</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">846</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">84.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">718</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debdbparser.cc.gcov.html">debdbparser.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=84 height=10 alt="84.4%"><img src="../../../snow.png" width=16 height=10 alt="84.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">84.4&nbsp;%</td>
- <td class="coverNumHi">54&nbsp;/&nbsp;64&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtagsindexer.cc.gcov.html">debtagsindexer.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=75 height=10 alt="74.8%"><img src="../../../snow.png" width=25 height=10 alt="74.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">74.8&nbsp;%</td>
- <td class="coverNumHi">89&nbsp;/&nbsp;119&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="debtagsindexer.h.gcov.html">debtagsindexer.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">5&nbsp;/&nbsp;5&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=91 height=10 alt="90.7%"><img src="../../../snow.png" width=9 height=10 alt="90.7%"></td></tr></table>
- </td>
- <td class="coverPerHi">90.7&nbsp;%</td>
- <td class="coverNumHi">49&nbsp;/&nbsp;54&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.h.gcov.html">path.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">17&nbsp;/&nbsp;17&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="pkgid.cc.gcov.html">pkgid.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=87 height=10 alt="86.7%"><img src="../../../snow.png" width=13 height=10 alt="86.7%"></td></tr></table>
- </td>
- <td class="coverPerHi">86.7&nbsp;%</td>
- <td class="coverNumHi">13&nbsp;/&nbsp;15&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="pkgid.h.gcov.html">pkgid.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=83 height=10 alt="83.3%"><img src="../../../snow.png" width=17 height=10 alt="83.3%"></td></tr></table>
- </td>
- <td class="coverPerHi">83.3&nbsp;%</td>
- <td class="coverNumHi">5&nbsp;/&nbsp;6&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="pkgid.test.h.gcov.html">pkgid.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">18&nbsp;/&nbsp;18&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="serializer.h.gcov.html">serializer.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=98 height=10 alt="97.8%"><img src="../../../snow.png" width=2 height=10 alt="97.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">97.8&nbsp;%</td>
- <td class="coverNumHi">87&nbsp;/&nbsp;89&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="serializer.test.h.gcov.html">serializer.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">48&nbsp;/&nbsp;48&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="sourcedir.cc.gcov.html">sourcedir.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=75 height=10 alt="75.4%"><img src="../../../snow.png" width=25 height=10 alt="75.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">75.4&nbsp;%</td>
- <td class="coverNumHi">43&nbsp;/&nbsp;57&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="sourcedir.h.gcov.html">sourcedir.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">3&nbsp;/&nbsp;3&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="sourcedir.tcc.gcov.html">sourcedir.tcc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=89 height=10 alt="88.9%"><img src="../../../snow.png" width=11 height=10 alt="88.9%"></td></tr></table>
- </td>
- <td class="coverPerHi">88.9&nbsp;%</td>
- <td class="coverNumHi">8&nbsp;/&nbsp;9&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabularyindexer.cc.gcov.html">vocabularyindexer.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=69 height=10 alt="69.1%"><img src="../../../snow.png" width=31 height=10 alt="69.1%"></td></tr></table>
- </td>
- <td class="coverPerHi">69.1&nbsp;%</td>
- <td class="coverNumHi">65&nbsp;/&nbsp;94&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabularyindexer.h.gcov.html">vocabularyindexer.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">2&nbsp;/&nbsp;2&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabularymerger.cc.gcov.html">vocabularymerger.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=81 height=10 alt="81.2%"><img src="../../../snow.png" width=19 height=10 alt="81.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">81.2&nbsp;%</td>
- <td class="coverNumHi">147&nbsp;/&nbsp;181&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabularymerger.h.gcov.html">vocabularymerger.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">13&nbsp;/&nbsp;13&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="vocabularymerger.test.h.gcov.html">vocabularymerger.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">52&nbsp;/&nbsp;52&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/debtags/maint/path.cc.gcov.html b/rep/ept/debtags/maint/path.cc.gcov.html
deleted file mode 100644
index c9af780..0000000
--- a/rep/ept/debtags/maint/path.cc.gcov.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!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/debtags/maint/path.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - path.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">54</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">90.7 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">49</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : /** \file
-<span class="lineNum"> 4 </span> : * debtags paths
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;, Peter Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 13 </span> : * (at your option) any later version.
-<span class="lineNum"> 14 </span> : *
-<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 18 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 19 </span> : *
-<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 23 </span> : */
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;sys/types.h&gt; // getpwuid, stat, mkdir, getuid
-<span class="lineNum"> 32 </span> : #include &lt;sys/stat.h&gt; // stat, mkdir
-<span class="lineNum"> 33 </span> : #include &lt;pwd.h&gt; // getpwuid
-<span class="lineNum"> 34 </span> : #include &lt;unistd.h&gt; // stat, getuid
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : using namespace wibble;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : namespace ept {
-<span class="lineNum"> 39 </span> : namespace debtags {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 2 : static std::string userdir()</span>
-<span class="lineNum"> 42 </span> : {
-<span class="lineNum"> 43 </span><span class="lineCov"> 2 : std::string rcdir;</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : struct passwd* udata = getpwuid(getuid());</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 2 : rcdir = str::joinpath(udata-&gt;pw_dir, &quot;.debtags&quot;);</span>
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return rcdir;</span>
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 732 : Path &amp;Path::instance() {</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 732 : if (!s_instance) {</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : s_instance = new Path;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : instance().m_debtagsSourceDir = DEBTAGS_DB_DIR;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : instance().m_debtagsIndexDir = DEBTAGS_DB_DIR;</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 2 : instance().m_debtagsUserSourceDir = userdir();</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 2 : instance().m_debtagsUserIndexDir = userdir();</span>
-<span class="lineNum"> 59 </span> : }
-<span class="lineNum"> 60 </span><span class="lineCov"> 732 : return *s_instance;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span><span class="lineCov"> 12 : int Path::access( const std::string &amp;s, int m ) {</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 12 : return ::access( s.c_str(), m );</span>
-<span class="lineNum"> 65 </span> : }
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 300 : time_t Path::timestamp( const std::string&amp; file ) {</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 300 : std::auto_ptr&lt;struct stat&gt; st = wibble::sys::fs::stat(file);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 580 : return st.get() == NULL ? 0 : st-&gt;st_mtime;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineCov"> 62 : void Path::setDebtagsSourceDir( const std::string &amp;s )</span>
-<span class="lineNum"> 73 </span> : {
-<span class="lineNum"> 74 </span><span class="lineCov"> 62 : instance().m_debtagsSourceDir = s;</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 62 : }</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 62 : void Path::setDebtagsIndexDir( const std::string &amp;s )</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineCov"> 62 : instance().m_debtagsIndexDir = s;</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 62 : }</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 62 : void Path::setDebtagsUserSourceDir( const std::string &amp;s )</span>
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span><span class="lineCov"> 62 : instance().m_debtagsUserSourceDir = s;</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 62 : }</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 62 : void Path::setDebtagsUserIndexDir( const std::string &amp;s )</span>
-<span class="lineNum"> 85 </span> : {
-<span class="lineNum"> 86 </span><span class="lineCov"> 62 : instance().m_debtagsUserIndexDir = s;</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 62 : }</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 72 : std::string Path::debtagsSourceDir() { return instance().m_debtagsSourceDir; }</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 121 : std::string Path::debtagsIndexDir() { return instance().m_debtagsIndexDir; }</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 82 : std::string Path::debtagsUserSourceDir() { return instance().m_debtagsUserSourceDir; }</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 205 : std::string Path::debtagsUserIndexDir() { return instance().m_debtagsUserIndexDir; }</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 33 : std::string Path::vocabulary() {</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 33 : return str::joinpath(debtagsIndexDir(), &quot;vocabulary&quot;);</span>
-<span class="lineNum"> 96 </span> : }
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineCov"> 32 : std::string Path::vocabularyIndex() {</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 32 : return str::joinpath(debtagsIndexDir(), &quot;vocabulary.idx&quot;);</span>
-<span class="lineNum"> 100 </span> : }
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span><span class="lineCov"> 65 : std::string Path::userVocabulary() {</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 65 : return str::joinpath(debtagsUserIndexDir(), &quot;vocabulary&quot;);</span>
-<span class="lineNum"> 104 </span> : }
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineCov"> 65 : std::string Path::userVocabularyIndex() {</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 65 : return str::joinpath(debtagsUserIndexDir(), &quot;vocabulary.idx&quot;);</span>
-<span class="lineNum"> 108 </span> : }
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span><span class="lineCov"> 11 : std::string Path::tagdb() {</span>
-<span class="lineNum"> 111 </span><span class="lineCov"> 11 : return str::joinpath(debtagsIndexDir(), &quot;package-tags&quot;);</span>
-<span class="lineNum"> 112 </span> : }
-<span class="lineNum"> 113 </span> :
-<span class="lineNum"> 114 </span><span class="lineCov"> 11 : std::string Path::tagdbIndex() {</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 11 : return str::joinpath(debtagsIndexDir(), &quot;package-tags.idx&quot;);</span>
-<span class="lineNum"> 116 </span> : }
-<span class="lineNum"> 117 </span> :
-<span class="lineNum"> 118 </span><span class="lineCov"> 22 : std::string Path::userTagdb() {</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 22 : return str::joinpath(debtagsUserIndexDir(), &quot;package-tags&quot;);</span>
-<span class="lineNum"> 120 </span> : }
-<span class="lineNum"> 121 </span> :
-<span class="lineNum"> 122 </span><span class="lineCov"> 22 : std::string Path::userTagdbIndex() {</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 22 : return str::joinpath(debtagsUserIndexDir(), &quot;package-tags.idx&quot;);</span>
-<span class="lineNum"> 124 </span> : }
-<span class="lineNum"> 125 </span> :
-<span class="lineNum"> 126 </span><span class="lineNoCov"> 0 : std::string Path::pkgidx() {</span>
-<span class="lineNum"> 127 </span><span class="lineNoCov"> 0 : return str::joinpath(debtagsIndexDir(), &quot;pkgidx.idx&quot;);</span>
-<span class="lineNum"> 128 </span> : }
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : std::string Path::userPkgidx() {</span>
-<span class="lineNum"> 131 </span><span class="lineNoCov"> 0 : return str::joinpath(debtagsUserIndexDir(), &quot;pkgidx.idx&quot;);</span>
-<span class="lineNum"> 132 </span> : }
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> : Path *Path::s_instance = 0;
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : }
-<span class="lineNum"> 138 </span> : }
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/path.h.gcov.html b/rep/ept/debtags/maint/path.h.gcov.html
deleted file mode 100644
index 35e7710..0000000
--- a/rep/ept/debtags/maint/path.h.gcov.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!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/debtags/maint/path.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - path.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">17</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">17</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /** \file
-<span class="lineNum"> 3 </span> : * debtags paths
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 12 </span> : * (at your option) any later version.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 17 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 18 </span> : *
-<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 22 </span> : */
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : #include &lt;string&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : struct stat;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #ifndef EPT_DEBTAGS_PATH_H
-<span class="lineNum"> 29 </span> : #define EPT_DEBTAGS_PATH_H
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace debtags {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : /**
-<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Debtags paths
-<span class="lineNum"> 36 </span> : */
-<span class="lineNum"> 37 </span> : class Path
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 39 </span> : public:
-<span class="lineNum"> 40 </span> : static std::string vocabulary();
-<span class="lineNum"> 41 </span> : static std::string vocabularyIndex();
-<span class="lineNum"> 42 </span> : static std::string userVocabulary();
-<span class="lineNum"> 43 </span> : static std::string userVocabularyIndex();
-<span class="lineNum"> 44 </span> : static std::string tagdb();
-<span class="lineNum"> 45 </span> : static std::string tagdbIndex();
-<span class="lineNum"> 46 </span> : static std::string userTagdb();
-<span class="lineNum"> 47 </span> : static std::string userTagdbIndex();
-<span class="lineNum"> 48 </span> : static std::string pkgidx();
-<span class="lineNum"> 49 </span> : static std::string userPkgidx();
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : static std::string debtagsSourceDir();
-<span class="lineNum"> 52 </span> : static std::string debtagsIndexDir();
-<span class="lineNum"> 53 </span> : static std::string debtagsUserSourceDir();
-<span class="lineNum"> 54 </span> : static std::string debtagsUserIndexDir();
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : // Directory where Debtags source data is found
-<span class="lineNum"> 57 </span> : static void setDebtagsSourceDir( const std::string &amp;s );
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : // Directory where Debtags indexes are kept
-<span class="lineNum"> 60 </span> : static void setDebtagsIndexDir( const std::string &amp;s );
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : // User-specific directory for Debtags source data
-<span class="lineNum"> 63 </span> : static void setDebtagsUserSourceDir( const std::string &amp;s );
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : // User-specific directory for Debtags index data
-<span class="lineNum"> 66 </span> : static void setDebtagsUserIndexDir( const std::string &amp;s );
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : static int access( const std::string &amp;, int );
-<span class="lineNum"> 69 </span> : static time_t timestamp( const std::string&amp; );
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : // RAII-style classes to temporarily override directories
-<span class="lineNum"> 72 </span> : class OverrideDebtagsSourceDir
-<span class="lineNum"> 73 </span> : {
-<span class="lineNum"> 74 </span> : std::string old;
-<span class="lineNum"> 75 </span> : public:
-<span class="lineNum"> 76 </span><span class="lineCov"> 31 : OverrideDebtagsSourceDir(const std::string&amp; path) : old(Path::debtagsSourceDir())</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineCov"> 31 : Path::setDebtagsSourceDir(path);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 31 : ~OverrideDebtagsSourceDir() { Path::setDebtagsSourceDir(old); }</span>
-<span class="lineNum"> 81 </span> : };
-<span class="lineNum"> 82 </span> : class OverrideDebtagsIndexDir
-<span class="lineNum"> 83 </span> : {
-<span class="lineNum"> 84 </span> : std::string old;
-<span class="lineNum"> 85 </span> : public:
-<span class="lineNum"> 86 </span><span class="lineCov"> 31 : OverrideDebtagsIndexDir(const std::string&amp; path) : old(Path::debtagsIndexDir())</span>
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span><span class="lineCov"> 31 : Path::setDebtagsIndexDir(path);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 31 : ~OverrideDebtagsIndexDir() { Path::setDebtagsIndexDir(old); }</span>
-<span class="lineNum"> 91 </span> : };
-<span class="lineNum"> 92 </span> : class OverrideDebtagsUserSourceDir
-<span class="lineNum"> 93 </span> : {
-<span class="lineNum"> 94 </span> : std::string old;
-<span class="lineNum"> 95 </span> : public:
-<span class="lineNum"> 96 </span><span class="lineCov"> 31 : OverrideDebtagsUserSourceDir(const std::string&amp; path) : old(Path::debtagsUserSourceDir())</span>
-<span class="lineNum"> 97 </span> : {
-<span class="lineNum"> 98 </span><span class="lineCov"> 31 : Path::setDebtagsUserSourceDir(path);</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 31 : ~OverrideDebtagsUserSourceDir() { Path::setDebtagsUserSourceDir(old); }</span>
-<span class="lineNum"> 101 </span> : };
-<span class="lineNum"> 102 </span> : class OverrideDebtagsUserIndexDir
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span> : std::string old;
-<span class="lineNum"> 105 </span> : public:
-<span class="lineNum"> 106 </span><span class="lineCov"> 31 : OverrideDebtagsUserIndexDir(const std::string&amp; path) : old(Path::debtagsUserIndexDir())</span>
-<span class="lineNum"> 107 </span> : {
-<span class="lineNum"> 108 </span><span class="lineCov"> 31 : Path::setDebtagsUserIndexDir(path);</span>
-<span class="lineNum"> 109 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 110 </span><span class="lineCov"> 31 : ~OverrideDebtagsUserIndexDir() { Path::setDebtagsUserIndexDir(old); }</span>
-<span class="lineNum"> 111 </span> : };
-<span class="lineNum"> 112 </span> : protected:
-<span class="lineNum"> 113 </span> : static Path *s_instance;
-<span class="lineNum"> 114 </span> : static Path &amp;instance();
-<span class="lineNum"> 115 </span> :
-<span class="lineNum"> 116 </span> : // Directory where Debtags source data is found
-<span class="lineNum"> 117 </span> : std::string m_debtagsSourceDir;
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : // Directory where Debtags indexes are kept
-<span class="lineNum"> 120 </span> : std::string m_debtagsIndexDir;
-<span class="lineNum"> 121 </span> :
-<span class="lineNum"> 122 </span> : // User-specific directory for Debtags source data
-<span class="lineNum"> 123 </span> : std::string m_debtagsUserSourceDir;
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span> : // User-specific directory for Debtags index data
-<span class="lineNum"> 126 </span> : std::string m_debtagsUserIndexDir;
-<span class="lineNum"> 127 </span> : };
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span> : }
-<span class="lineNum"> 130 </span> : }
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 133 </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>
diff --git a/rep/ept/debtags/maint/pkgid.cc.gcov.html b/rep/ept/debtags/maint/pkgid.cc.gcov.html
deleted file mode 100644
index 62de1a1..0000000
--- a/rep/ept/debtags/maint/pkgid.cc.gcov.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!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/debtags/maint/pkgid.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - pkgid.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">15</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">86.7 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">13</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : /** @file
-<span class="lineNum"> 4 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 5 </span> : * Quick map from package IDs to package names
-<span class="lineNum"> 6 </span> : */
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : /*
-<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 12 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 13 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 14 </span> : * (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 19 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 22 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace debtags {
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span><span class="lineCov"> 10 : PkgId::PkgId() {}</span>
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span><span class="lineCov"> 1 : PkgId::PkgId(const char* buf, int size)</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 1 : : MMap(buf, size) {}</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span><span class="lineNoCov"> 0 : PkgId::PkgId(const tagcoll::diskindex::MasterMMap&amp; master, size_t idx)</span>
-<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : : MMap(master, idx) {}</span>
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span><span class="lineCov"> 63445 : int PkgId::byName(const std::string&amp; name) const</span>
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span> : // Binary search the index to find the package ID
-<span class="lineNum"> 43 </span> : int begin, end;
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : /* Binary search */
-<span class="lineNum"> 46 </span><span class="lineCov"> 63445 : begin = -1, end = size();</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 1043664 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 48 </span> : {
-<span class="lineNum"> 49 </span><span class="lineCov"> 916774 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 916774 : if (byID(cur) &gt; name)</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 443057 : end = cur;</span>
-<span class="lineNum"> 52 </span> : else
-<span class="lineNum"> 53 </span><span class="lineCov"> 473717 : begin = cur;</span>
-<span class="lineNum"> 54 </span> : }
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span><span class="lineCov"> 63445 : if (begin == -1 || byID(begin) != name)</span>
-<span class="lineNum"> 57 </span> : //throw NotFoundException(string(&quot;looking for the ID of string &quot;) + str);
-<span class="lineNum"> 58 </span><span class="lineCov"> 2 : return -1;</span>
-<span class="lineNum"> 59 </span> : else
-<span class="lineNum"> 60 </span><span class="lineCov"> 63443 : return begin;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : }
-<span class="lineNum"> 64 </span> : }
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/pkgid.h.gcov.html b/rep/ept/debtags/maint/pkgid.h.gcov.html
deleted file mode 100644
index 05beeb3..0000000
--- a/rep/ept/debtags/maint/pkgid.h.gcov.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<!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/debtags/maint/pkgid.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - pkgid.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">6</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">83.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : #ifndef EPT_DEBTAGS_PKGID_H
-<span class="lineNum"> 3 </span> : #define EPT_DEBTAGS_PKGID_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /** @file
-<span class="lineNum"> 6 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : * Quick map from package IDs to package names
-<span class="lineNum"> 8 </span> : */
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : /*
-<span class="lineNum"> 11 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 14 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 15 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 16 </span> : * (at your option) any later version.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 19 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 20 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 21 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 22 </span> : *
-<span class="lineNum"> 23 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 24 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 25 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 26 </span> : */
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;tagcoll/diskindex/mmap.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;string&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace debtags {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : /**
-<span class="lineNum"> 35 </span> : * Maps Packages to IDs and vice-versa.
-<span class="lineNum"> 36 </span> : *
-<span class="lineNum"> 37 </span> : * This is used in building the Debtags fast index, which works representing
-<span class="lineNum"> 38 </span> : * tags and packages as int IDs
-<span class="lineNum"> 39 </span> : */
-<span class="lineNum"> 40 </span> : class PkgId : public tagcoll::diskindex::MMap
-<span class="lineNum"> 41 </span><span class="lineCov"> 11 : {</span>
-<span class="lineNum"> 42 </span> : tagcoll::diskindex::MasterMMap mastermmap;
-<span class="lineNum"> 43 </span> : time_t m_timestamp;
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : public:
-<span class="lineNum"> 46 </span> : PkgId();
-<span class="lineNum"> 47 </span> : PkgId(const tagcoll::diskindex::MasterMMap&amp; master, size_t idx);
-<span class="lineNum"> 48 </span> : PkgId(const char* buf, int size);
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : /// Get the timestamp of when the index was last updated
-<span class="lineNum"> 51 </span> : time_t timestamp() const { return m_timestamp; }
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : /// Get the number of packages in the index
-<span class="lineNum"> 54 </span><span class="lineCov"> 63445 : size_t size() const { return m_buf ? *(int*)m_buf / sizeof(int) : 0; }</span>
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : /**
-<span class="lineNum"> 57 </span> : * Get the ID of a package given its name.
-<span class="lineNum"> 58 </span> : *
-<span class="lineNum"> 59 </span> : * If not found, returns -1.
-<span class="lineNum"> 60 </span> : */
-<span class="lineNum"> 61 </span> : int byName(const std::string&amp; name) const;
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /**
-<span class="lineNum"> 64 </span> : * Get a package name given its ID.
-<span class="lineNum"> 65 </span> : *
-<span class="lineNum"> 66 </span> : * If not found, returns the empty string.
-<span class="lineNum"> 67 </span> : */
-<span class="lineNum"> 68 </span><span class="lineCov"> 1128365 : std::string byID(int id) const</span>
-<span class="lineNum"> 69 </span> : {
-<span class="lineNum"> 70 </span><span class="lineCov"> 1128365 : if (id &gt;= 0 || static_cast&lt;unsigned&gt;(id) &lt; size())</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 1128365 : return std::string(m_buf + ((int*)m_buf)[id]);</span>
-<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : return std::string();</span>
-<span class="lineNum"> 73 </span> : }
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : /// Get the number of packages in the index
-<span class="lineNum"> 76 </span> : int size(int id) const
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span> : if (id &lt; 0 || (unsigned)id &gt;= size())
-<span class="lineNum"> 79 </span> : return 0;
-<span class="lineNum"> 80 </span> : if ((unsigned)id == size() - 1)
-<span class="lineNum"> 81 </span> : return m_size - ((int*)m_buf)[id] - 1;
-<span class="lineNum"> 82 </span> : else
-<span class="lineNum"> 83 </span> : return ((int*)m_buf)[id + 1] - ((int*)m_buf)[id] - 1;
-<span class="lineNum"> 84 </span> : }
-<span class="lineNum"> 85 </span> : };
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : }
-<span class="lineNum"> 88 </span> : }
-<span class="lineNum"> 89 </span> :
-<span class="lineNum"> 90 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 91 </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>
diff --git a/rep/ept/debtags/maint/pkgid.test.h.gcov.html b/rep/ept/debtags/maint/pkgid.test.h.gcov.html
deleted file mode 100644
index 11f3ea5..0000000
--- a/rep/ept/debtags/maint/pkgid.test.h.gcov.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!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/debtags/maint/pkgid.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - pkgid.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">18</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">18</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /*
-<span class="lineNum"> 3 </span> : * id-&gt;package mapping
-<span class="lineNum"> 4 </span> : *
-<span class="lineNum"> 5 </span> : * Copyright (C) 2006 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 6 </span> : *
-<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 10 </span> : * (at your option) any later version.
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 15 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 20 </span> : */
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;set&gt;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : using namespace std;
-<span class="lineNum"> 30 </span> : using namespace ept;
-<span class="lineNum"> 31 </span> : using namespace ept::debtags;
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : struct TestPkgid : DebtagsTestEnvironment
-<span class="lineNum"> 34 </span><span class="lineCov"> 2 : {</span>
-<span class="lineNum"> 35 </span> : Debtags debtags;
-<span class="lineNum"> 36 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span><span class="lineCov"> 2 : TestPkgid()</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 2 : : pkgid(debtags.pkgid())</span>
-<span class="lineNum"> 40 </span> : {
-<span class="lineNum"> 41 </span><span class="lineCov"> 2 : }</span>
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : // Check that we can go from name to ID and back
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : Test _1()</span>
-<span class="lineNum"> 45 </span> : {
-<span class="lineNum"> 46 </span> : //int x = 0;
-<span class="lineNum"> 47 </span><span class="lineCov"> 21146 : for (Debtags::const_iterator i = debtags.begin();</span>
-<span class="lineNum"> 48 </span> : i != debtags.end(); ++i)
-<span class="lineNum"> 49 </span> : {
-<span class="lineNum"> 50 </span><span class="lineCov"> 21145 : int id = pkgid.byName(i-&gt;first);</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 21145 : std::string pkg = pkgid.byID(id);</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 21145 : assert(i-&gt;first == pkg);</span>
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span> : /* std::cerr &lt;&lt; x &lt;&lt; &quot;: &quot; &lt;&lt; i-&gt;id() &lt;&lt; &quot;: &quot;
-<span class="lineNum"> 55 </span> : &lt;&lt; i-&gt;name() &lt;&lt; &quot;, &quot; &lt;&lt; pkgidx().name( i-&gt;id() ) &lt;&lt;
-<span class="lineNum"> 56 </span> : std::endl; */
-<span class="lineNum"> 57 </span> : //++ x;
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span> : // Check that IDs are distinct
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : Test _2()</span>
-<span class="lineNum"> 63 </span> : {
-<span class="lineNum"> 64 </span> : using namespace std;
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : size_t count = 0;</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : set&lt;int&gt; ids;</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 21146 : for (Debtags::const_iterator i = debtags.begin(); i != debtags.end(); ++i, ++count)</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 21146 : ids.insert(pkgid.byName(i-&gt;first));</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : assert_eq(ids.size(), count);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 72 </span> :
-<span class="lineNum"> 73 </span> : };
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/serializer.h.gcov.html b/rep/ept/debtags/maint/serializer.h.gcov.html
deleted file mode 100644
index 2945ccd..0000000
--- a/rep/ept/debtags/maint/serializer.h.gcov.html
+++ /dev/null
@@ -1,1016 +0,0 @@
-<!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/debtags/maint/serializer.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - serializer.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">89</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">97.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">87</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /**
-<span class="lineNum"> 3 </span> : * @file cache/component/debtags/serializer.h
-<span class="lineNum"> 4 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : #ifndef EPT_DEBTAGS_SERIALIZER_H
-<span class="lineNum"> 8 </span> : #define EPT_DEBTAGS_SERIALIZER_H
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 11 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 12 </span> : #include &lt;tagcoll/patch.h&gt;
-<span class="lineNum"> 13 </span> : #include &lt;wibble/mixin.h&gt;
-<span class="lineNum"> 14 </span> : #include &lt;string&gt;
-<span class="lineNum"> 15 </span> :
-<span class="lineNum"> 16 </span> : namespace ept {
-<span class="lineNum"> 17 </span> : namespace debtags {
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 20 </span> : class IntToPkg : public wibble::mixin::OutputIterator&lt; IntToPkg&lt;OUT&gt; &gt;
-<span class="lineNum"> 21 </span> : {
-<span class="lineNum"> 22 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 23 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 24 </span> : OUT out;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : public:
-<span class="lineNum"> 27 </span><span class="lineCov"> 5 : IntToPkg(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 5 : : pkgid(pkgid), voc(voc), out(out) {}</span>
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 31 </span><span class="lineCov"> 42291 : IntToPkg&lt;OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)</span>
-<span class="lineNum"> 32 </span> : {
-<span class="lineNum"> 33 </span><span class="lineCov"> 42291 : std::set&lt;std::string&gt; ritems;</span>
-<span class="lineNum"> 34 </span><span class="lineCov"> 42291 : std::set&lt;Tag&gt; rtags;</span>
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 84582 : for (typename ITEMS::const_iterator i = data.first.begin();</span>
-<span class="lineNum"> 37 </span> : i != data.first.end(); ++i)
-<span class="lineNum"> 38 </span> : {
-<span class="lineNum"> 39 </span><span class="lineCov"> 42291 : std::string pkg = pkgid.byID(*i);</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 42291 : if (!pkg.empty())</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 42291 : ritems.insert(pkg);</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 253489 : for (typename TAGS::const_iterator i = data.second.begin();</span>
-<span class="lineNum"> 45 </span> : i != data.second.end(); ++i)
-<span class="lineNum"> 46 </span> : {
-<span class="lineNum"> 47 </span><span class="lineCov"> 211198 : Tag t = voc.tagByID(*i);</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 211198 : if (t.valid())</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 211198 : rtags.insert(t);</span>
-<span class="lineNum"> 50 </span> : }
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 42291 : if (!ritems.empty() &amp;&amp; !rtags.empty())</span>
-<span class="lineNum"> 53 </span> : {
-<span class="lineNum"> 54 </span><span class="lineCov"> 42267 : *out = make_pair(ritems, rtags);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 42267 : ++out;</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span><span class="lineCov"> 42291 : return *this;</span>
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span> : };
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 62 </span><span class="lineCov"> 5 : IntToPkg&lt;OUT&gt; intToPkg(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 63 </span> : {
-<span class="lineNum"> 64 </span><span class="lineCov"> 5 : return IntToPkg&lt;OUT&gt;(pkgid, voc, out);</span>
-<span class="lineNum"> 65 </span> : }
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 68 </span> : class StringToInt : public wibble::mixin::OutputIterator&lt; StringToInt&lt;OUT&gt; &gt;
-<span class="lineNum"> 69 </span> : {
-<span class="lineNum"> 70 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 71 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 72 </span> : OUT out;
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : public:
-<span class="lineNum"> 75 </span><span class="lineCov"> 2 : StringToInt(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 2 : : pkgid(pkgid), voc(voc), out(out) {}</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 79 </span><span class="lineCov"> 21146 : StringToInt&lt;OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)</span>
-<span class="lineNum"> 80 </span> : {
-<span class="lineNum"> 81 </span><span class="lineCov"> 21146 : std::set&lt;int&gt; ritems;</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 21146 : std::set&lt;int&gt; rtags;</span>
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span><span class="lineCov"> 42292 : for (typename ITEMS::const_iterator i = data.first.begin();</span>
-<span class="lineNum"> 85 </span> : i != data.first.end(); ++i)
-<span class="lineNum"> 86 </span> : {
-<span class="lineNum"> 87 </span><span class="lineCov"> 21146 : int id = pkgid.byName(*i);</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 21146 : if (id != -1)</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 21146 : ritems.insert(id);</span>
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 126874 : for (typename TAGS::const_iterator i = data.second.begin();</span>
-<span class="lineNum"> 93 </span> : i != data.second.end(); ++i)
-<span class="lineNum"> 94 </span> : {
-<span class="lineNum"> 95 </span><span class="lineCov"> 105728 : Tag t = voc.tagByName(*i);</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 105728 : if (t.valid())</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 105600 : rtags.insert(t.id());</span>
-<span class="lineNum"> 98 </span> : }
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span><span class="lineCov"> 21146 : if (!ritems.empty() &amp;&amp; !rtags.empty())</span>
-<span class="lineNum"> 101 </span> : {
-<span class="lineNum"> 102 </span><span class="lineCov"> 21134 : *out = make_pair(ritems, rtags);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 21134 : ++out;</span>
-<span class="lineNum"> 104 </span> : }
-<span class="lineNum"> 105 </span><span class="lineCov"> 21146 : return *this;</span>
-<span class="lineNum"> 106 </span> : }
-<span class="lineNum"> 107 </span> :
-<span class="lineNum"> 108 </span> : };
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 111 </span><span class="lineCov"> 2 : StringToInt&lt;OUT&gt; stringToInt(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 112 </span> : {
-<span class="lineNum"> 113 </span><span class="lineCov"> 2 : return StringToInt&lt;OUT&gt;(pkgid, voc, out);</span>
-<span class="lineNum"> 114 </span> : }
-<span class="lineNum"> 115 </span> :
-<span class="lineNum"> 116 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 117 </span> : class StringToPkg : public wibble::mixin::OutputIterator&lt; StringToPkg&lt;OUT&gt; &gt;
-<span class="lineNum"> 118 </span> : {
-<span class="lineNum"> 119 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 120 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 121 </span> : OUT out;
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : public:
-<span class="lineNum"> 124 </span> : StringToPkg(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)
-<span class="lineNum"> 125 </span> : : pkgid(pkgid), voc(voc), out(out) {}
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 128 </span> : StringToPkg&lt;OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)
-<span class="lineNum"> 129 </span> : {
-<span class="lineNum"> 130 </span> : std::set&lt;std::string&gt; ritems;
-<span class="lineNum"> 131 </span> : std::set&lt;Tag&gt; rtags;
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : for (typename ITEMS::const_iterator i = data.first.begin();
-<span class="lineNum"> 134 </span> : i != data.first.end(); ++i)
-<span class="lineNum"> 135 </span> : {
-<span class="lineNum"> 136 </span> : // Ensure that the package exists in the pkgid database
-<span class="lineNum"> 137 </span> : if (pkgid.byName(*i) == -1)
-<span class="lineNum"> 138 </span> : continue;
-<span class="lineNum"> 139 </span> : ritems.insert(*i);
-<span class="lineNum"> 140 </span> : }
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span> : for (typename TAGS::const_iterator i = data.second.begin();
-<span class="lineNum"> 143 </span> : i != data.second.end(); ++i)
-<span class="lineNum"> 144 </span> : {
-<span class="lineNum"> 145 </span> : Tag t = voc.tagByName(*i);
-<span class="lineNum"> 146 </span> : if (t.valid())
-<span class="lineNum"> 147 </span> : rtags.insert(t);
-<span class="lineNum"> 148 </span> : }
-<span class="lineNum"> 149 </span> :
-<span class="lineNum"> 150 </span> : if (!ritems.empty() &amp;&amp; !rtags.empty())
-<span class="lineNum"> 151 </span> : {
-<span class="lineNum"> 152 </span> : *out = make_pair(ritems, rtags);
-<span class="lineNum"> 153 </span> : ++out;
-<span class="lineNum"> 154 </span> : }
-<span class="lineNum"> 155 </span> : return *this;
-<span class="lineNum"> 156 </span> : }
-<span class="lineNum"> 157 </span> :
-<span class="lineNum"> 158 </span> : };
-<span class="lineNum"> 159 </span> :
-<span class="lineNum"> 160 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 161 </span> : StringToPkg&lt;OUT&gt; stringToPkg(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)
-<span class="lineNum"> 162 </span> : {
-<span class="lineNum"> 163 </span> : return StringToPkg&lt;OUT&gt;(pkgid, voc, out);
-<span class="lineNum"> 164 </span> : }
-<span class="lineNum"> 165 </span> :
-<span class="lineNum"> 166 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 167 </span> : class PkgToString : public wibble::mixin::OutputIterator&lt; PkgToString&lt;OUT&gt; &gt;
-<span class="lineNum"> 168 </span> : {
-<span class="lineNum"> 169 </span> : OUT out;
-<span class="lineNum"> 170 </span> : public:
-<span class="lineNum"> 171 </span><span class="lineCov"> 1 : PkgToString(const OUT&amp; out) : out(out) {}</span>
-<span class="lineNum"> 172 </span> :
-<span class="lineNum"> 173 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 174 </span><span class="lineCov"> 1 : PkgToString&lt;OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)</span>
-<span class="lineNum"> 175 </span> : {
-<span class="lineNum"> 176 </span><span class="lineCov"> 1 : std::set&lt;std::string&gt; stags;</span>
-<span class="lineNum"> 177 </span><span class="lineCov"> 3 : for (typename TAGS::const_iterator i = data.second.begin();</span>
-<span class="lineNum"> 178 </span> : i != data.second.end(); ++i)
-<span class="lineNum"> 179 </span><span class="lineCov"> 2 : if (i-&gt;valid())</span>
-<span class="lineNum"> 180 </span><span class="lineCov"> 2 : stags.insert(i-&gt;fullname());</span>
-<span class="lineNum"> 181 </span><span class="lineCov"> 1 : *out = make_pair(data.first, stags);</span>
-<span class="lineNum"> 182 </span><span class="lineCov"> 1 : ++out;</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 1 : return *this;</span>
-<span class="lineNum"> 184 </span> : }
-<span class="lineNum"> 185 </span> : };
-<span class="lineNum"> 186 </span> :
-<span class="lineNum"> 187 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 188 </span><span class="lineCov"> 1 : PkgToString&lt;OUT&gt; pkgToString(const OUT&amp; out)</span>
-<span class="lineNum"> 189 </span> : {
-<span class="lineNum"> 190 </span><span class="lineCov"> 1 : return PkgToString&lt;OUT&gt;(out);</span>
-<span class="lineNum"> 191 </span> : }
-<span class="lineNum"> 192 </span> :
-<span class="lineNum"> 193 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 194 </span> : class PatchStringToInt : public wibble::mixin::OutputIterator&lt; PatchStringToInt&lt;OUT&gt; &gt;
-<span class="lineNum"> 195 </span> : {
-<span class="lineNum"> 196 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 197 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 198 </span> : OUT out;
-<span class="lineNum"> 199 </span> :
-<span class="lineNum"> 200 </span> : public:
-<span class="lineNum"> 201 </span><span class="lineCov"> 1 : PatchStringToInt(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 202 </span><span class="lineCov"> 1 : : pkgid(pkgid), voc(voc), out(out) {}</span>
-<span class="lineNum"> 203 </span> :
-<span class="lineNum"> 204 </span><span class="lineCov"> 1 : PatchStringToInt&lt;OUT&gt;&amp; operator=(const tagcoll::Patch&lt;std::string, std::string&gt;&amp; patch)</span>
-<span class="lineNum"> 205 </span> : {
-<span class="lineNum"> 206 </span><span class="lineCov"> 1 : int id = pkgid.byName(patch.item);</span>
-<span class="lineNum"> 207 </span><span class="lineCov"> 1 : if (id == -1)</span>
-<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : return *this;</span>
-<span class="lineNum"> 209 </span> :
-<span class="lineNum"> 210 </span><span class="lineCov"> 1 : tagcoll::Patch&lt;int, int&gt; res(id);</span>
-<span class="lineNum"> 211 </span><span class="lineCov"> 2 : for (std::set&lt;std::string&gt;::const_iterator i = patch.added.begin();</span>
-<span class="lineNum"> 212 </span> : i != patch.added.end(); ++i)
-<span class="lineNum"> 213 </span> : {
-<span class="lineNum"> 214 </span><span class="lineCov"> 1 : Tag tag = voc.tagByName(*i);</span>
-<span class="lineNum"> 215 </span><span class="lineCov"> 1 : if (tag.valid())</span>
-<span class="lineNum"> 216 </span><span class="lineCov"> 1 : res.add(tag.id());</span>
-<span class="lineNum"> 217 </span> : }
-<span class="lineNum"> 218 </span><span class="lineCov"> 2 : for (std::set&lt;std::string&gt;::const_iterator i = patch.removed.begin();</span>
-<span class="lineNum"> 219 </span> : i != patch.removed.end(); ++i)
-<span class="lineNum"> 220 </span> : {
-<span class="lineNum"> 221 </span><span class="lineCov"> 1 : Tag tag = voc.tagByName(*i);</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 1 : if (tag.valid())</span>
-<span class="lineNum"> 223 </span><span class="lineCov"> 1 : res.remove(tag.id());</span>
-<span class="lineNum"> 224 </span> : }
-<span class="lineNum"> 225 </span><span class="lineCov"> 1 : *out = res;</span>
-<span class="lineNum"> 226 </span><span class="lineCov"> 1 : ++out;</span>
-<span class="lineNum"> 227 </span><span class="lineCov"> 1 : return *this;</span>
-<span class="lineNum"> 228 </span> : }
-<span class="lineNum"> 229 </span> : };
-<span class="lineNum"> 230 </span> :
-<span class="lineNum"> 231 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 232 </span><span class="lineCov"> 1 : PatchStringToInt&lt;OUT&gt; patchStringToInt(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 233 </span> : {
-<span class="lineNum"> 234 </span><span class="lineCov"> 1 : return PatchStringToInt&lt;OUT&gt;(pkgid, voc, out);</span>
-<span class="lineNum"> 235 </span> : }
-<span class="lineNum"> 236 </span> :
-<span class="lineNum"> 237 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 238 </span> : class PatchIntToString : public wibble::mixin::OutputIterator&lt; PatchIntToString&lt;OUT&gt; &gt;
-<span class="lineNum"> 239 </span> : {
-<span class="lineNum"> 240 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 241 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 242 </span> : OUT out;
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span> : public:
-<span class="lineNum"> 245 </span><span class="lineCov"> 2 : PatchIntToString(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 246 </span><span class="lineCov"> 2 : : pkgid(pkgid), voc(voc), out(out) {}</span>
-<span class="lineNum"> 247 </span> :
-<span class="lineNum"> 248 </span><span class="lineCov"> 2 : PatchIntToString&lt;OUT&gt;&amp; operator=(const tagcoll::Patch&lt;int, int&gt;&amp; patch)</span>
-<span class="lineNum"> 249 </span> : {
-<span class="lineNum"> 250 </span><span class="lineCov"> 2 : std::string name = pkgid.byID(patch.item);</span>
-<span class="lineNum"> 251 </span><span class="lineCov"> 2 : if (name.empty())</span>
-<span class="lineNum"> 252 </span><span class="lineNoCov"> 0 : return *this;</span>
-<span class="lineNum"> 253 </span> :
-<span class="lineNum"> 254 </span><span class="lineCov"> 2 : tagcoll::Patch&lt;std::string, std::string&gt; res(name);</span>
-<span class="lineNum"> 255 </span><span class="lineCov"> 4 : for (std::set&lt;int&gt;::const_iterator i = patch.added.begin();</span>
-<span class="lineNum"> 256 </span> : i != patch.added.end(); ++i)
-<span class="lineNum"> 257 </span> : {
-<span class="lineNum"> 258 </span><span class="lineCov"> 2 : Tag tag = voc.tagByID(*i);</span>
-<span class="lineNum"> 259 </span><span class="lineCov"> 2 : if (tag.valid())</span>
-<span class="lineNum"> 260 </span><span class="lineCov"> 2 : res.add(tag.fullname());</span>
-<span class="lineNum"> 261 </span> : }
-<span class="lineNum"> 262 </span><span class="lineCov"> 3 : for (std::set&lt;int&gt;::const_iterator i = patch.removed.begin();</span>
-<span class="lineNum"> 263 </span> : i != patch.removed.end(); ++i)
-<span class="lineNum"> 264 </span> : {
-<span class="lineNum"> 265 </span><span class="lineCov"> 1 : Tag tag = voc.tagByID(*i);</span>
-<span class="lineNum"> 266 </span><span class="lineCov"> 1 : if (tag.valid())</span>
-<span class="lineNum"> 267 </span><span class="lineCov"> 1 : res.remove(tag.fullname());</span>
-<span class="lineNum"> 268 </span> : }
-<span class="lineNum"> 269 </span><span class="lineCov"> 2 : *out = res;</span>
-<span class="lineNum"> 270 </span><span class="lineCov"> 2 : ++out;</span>
-<span class="lineNum"> 271 </span><span class="lineCov"> 2 : return *this;</span>
-<span class="lineNum"> 272 </span> : }
-<span class="lineNum"> 273 </span> : };
-<span class="lineNum"> 274 </span> :
-<span class="lineNum"> 275 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 276 </span><span class="lineCov"> 2 : PatchIntToString&lt;OUT&gt; patchIntToString(PkgId&amp; pkgid, Vocabulary&amp; voc, const OUT&amp; out)</span>
-<span class="lineNum"> 277 </span> : {
-<span class="lineNum"> 278 </span><span class="lineCov"> 2 : return PatchIntToString&lt;OUT&gt;(pkgid, voc, out);</span>
-<span class="lineNum"> 279 </span> : }
-<span class="lineNum"> 280 </span> :
-<span class="lineNum"> 281 </span> : #if 0
-<span class="lineNum"> 282 </span> : GOOD STUFF
-<span class="lineNum"> 283 </span> :
-<span class="lineNum"> 284 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 285 </span> : class ToInt : public wibble::mixin::OutputIterator&lt; ToInt&lt;OUT&gt; &gt;
-<span class="lineNum"> 286 </span> : {
-<span class="lineNum"> 287 </span> : OUT out;
-<span class="lineNum"> 288 </span> : public:
-<span class="lineNum"> 289 </span> : ToInt(const OUT&amp; out) : out(out) {}
-<span class="lineNum"> 290 </span> :
-<span class="lineNum"> 291 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 292 </span> : ToInt&lt;OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)
-<span class="lineNum"> 293 </span> : {
-<span class="lineNum"> 294 </span> : std::set&lt;int&gt; iitems;
-<span class="lineNum"> 295 </span> : std::set&lt;int&gt; itags;
-<span class="lineNum"> 296 </span> : for (typename ITEMS::const_iterator i = data.first.begin();
-<span class="lineNum"> 297 </span> : i != data.first.end(); ++i)
-<span class="lineNum"> 298 </span> : if (i-&gt;valid())
-<span class="lineNum"> 299 </span> : iitems.insert(i-&gt;ondiskId());
-<span class="lineNum"> 300 </span> : for (typename TAGS::const_iterator i = data.second.begin();
-<span class="lineNum"> 301 </span> : i != data.second.end(); ++i)
-<span class="lineNum"> 302 </span> : if (i-&gt;valid())
-<span class="lineNum"> 303 </span> : itags.insert(i-&gt;id());
-<span class="lineNum"> 304 </span> : *out = make_pair(iitems, itags);
-<span class="lineNum"> 305 </span> : ++out;
-<span class="lineNum"> 306 </span> : return *this;
-<span class="lineNum"> 307 </span> : }
-<span class="lineNum"> 308 </span> : };
-<span class="lineNum"> 309 </span> :
-<span class="lineNum"> 310 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 311 </span> : ToInt&lt;OUT&gt; toInt(const OUT&amp; out)
-<span class="lineNum"> 312 </span> : {
-<span class="lineNum"> 313 </span> : return ToInt&lt;OUT&gt;(out);
-<span class="lineNum"> 314 </span> : }
-<span class="lineNum"> 315 </span> :
-<span class="lineNum"> 316 </span> : template&lt;typename ITEMCONV, typename TAGCONV, typename OUT&gt;
-<span class="lineNum"> 317 </span> : class Converter : public wibble::mixin::OutputIterator&lt; Converter&lt;ITEMCONV, TAGCONV, OUT&gt; &gt;
-<span class="lineNum"> 318 </span> : {
-<span class="lineNum"> 319 </span> : ITEMCONV itemconv;
-<span class="lineNum"> 320 </span> : TAGCONV tagconv;
-<span class="lineNum"> 321 </span> : OUT out;
-<span class="lineNum"> 322 </span> :
-<span class="lineNum"> 323 </span> : public:
-<span class="lineNum"> 324 </span> : Converter(const ITEMCONV&amp; itemconv, const TAGCONV&amp; tagconv, const OUT&amp; out)
-<span class="lineNum"> 325 </span> : : itemconv(itemconv), tagconv(tagconv), out(out) {}
-<span class="lineNum"> 326 </span> :
-<span class="lineNum"> 327 </span> : template&lt;typename ITEMS, typename TAGS&gt;
-<span class="lineNum"> 328 </span> : Converter&lt;ITEMCONV, TAGCONV, OUT&gt;&amp; operator=(const std::pair&lt;ITEMS, TAGS&gt;&amp; data)
-<span class="lineNum"> 329 </span> : {
-<span class="lineNum"> 330 </span> : *out = make_pair(itemconv(data.first), tagconv(data.second));
-<span class="lineNum"> 331 </span> : ++out;
-<span class="lineNum"> 332 </span> : return *this;
-<span class="lineNum"> 333 </span> : }
-<span class="lineNum"> 334 </span> : };
-<span class="lineNum"> 335 </span> :
-<span class="lineNum"> 336 </span> : template&lt;typename ITEMCONV, typename TAGCONV, typename OUT&gt;
-<span class="lineNum"> 337 </span> : Converter&lt;ITEMCONV, TAGCONV, OUT&gt; converter(const ITEMCONV&amp; itemconv, const TAGCONV&amp; tagconv, const OUT&amp; out)
-<span class="lineNum"> 338 </span> : {
-<span class="lineNum"> 339 </span> : return Converter&lt;ITEMCONV, TAGCONV, OUT&gt;(itemconv, tagconv, out);
-<span class="lineNum"> 340 </span> : }
-<span class="lineNum"> 341 </span> :
-<span class="lineNum"> 342 </span> :
-<span class="lineNum"> 343 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 344 </span> : class PatchToString : public wibble::mixin::OutputIterator&lt; PatchToString&lt;OUT&gt; &gt;
-<span class="lineNum"> 345 </span> : {
-<span class="lineNum"> 346 </span> : OUT out;
-<span class="lineNum"> 347 </span> :
-<span class="lineNum"> 348 </span> : public:
-<span class="lineNum"> 349 </span> : PatchToString(const OUT&amp; out) : out(out) {}
-<span class="lineNum"> 350 </span> :
-<span class="lineNum"> 351 </span> : template&lt;typename PKG, typename TAG&gt;
-<span class="lineNum"> 352 </span> : PatchToString&lt;OUT&gt;&amp; operator=(const tagcoll::Patch&lt;PKG, TAG&gt;&amp; patch)
-<span class="lineNum"> 353 </span> : {
-<span class="lineNum"> 354 </span> : if (!patch.item.valid())
-<span class="lineNum"> 355 </span> : return *this;
-<span class="lineNum"> 356 </span> :
-<span class="lineNum"> 357 </span> : tagcoll::Patch&lt;std::string, std::string&gt; res(patch.item.name());
-<span class="lineNum"> 358 </span> : for (typename std::set&lt;TAG&gt;::const_iterator i = patch.added.begin();
-<span class="lineNum"> 359 </span> : i != patch.added.end(); ++i)
-<span class="lineNum"> 360 </span> : if (i-&gt;valid())
-<span class="lineNum"> 361 </span> : res.add(i-&gt;fullname());
-<span class="lineNum"> 362 </span> : for (typename std::set&lt;TAG&gt;::const_iterator i = patch.removed.begin();
-<span class="lineNum"> 363 </span> : i != patch.removed.end(); ++i)
-<span class="lineNum"> 364 </span> : if (i-&gt;valid())
-<span class="lineNum"> 365 </span> : res.remove(i-&gt;fullname());
-<span class="lineNum"> 366 </span> : *out = res;
-<span class="lineNum"> 367 </span> : ++out;
-<span class="lineNum"> 368 </span> : return *this;
-<span class="lineNum"> 369 </span> : }
-<span class="lineNum"> 370 </span> : };
-<span class="lineNum"> 371 </span> :
-<span class="lineNum"> 372 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 373 </span> : PatchToString&lt;OUT&gt; patchToString(const OUT&amp; out)
-<span class="lineNum"> 374 </span> : {
-<span class="lineNum"> 375 </span> : return PatchToString&lt;OUT&gt;(out);
-<span class="lineNum"> 376 </span> : }
-<span class="lineNum"> 377 </span> :
-<span class="lineNum"> 378 </span> : #endif
-<span class="lineNum"> 379 </span> :
-<span class="lineNum"> 380 </span> : }
-<span class="lineNum"> 381 </span> : }
-<span class="lineNum"> 382 </span> :
-<span class="lineNum"> 383 </span> : #if 0
-<span class="lineNum"> 384 </span> :
-<span class="lineNum"> 385 </span> : namespace tagcoll {
-<span class="lineNum"> 386 </span> : namespace coll {
-<span class="lineNum"> 387 </span> :
-<span class="lineNum"> 388 </span> : template&lt;&gt;
-<span class="lineNum"> 389 </span> : struct coll_traits&lt; ept::cache::debtags::DebtagsIndex &gt;
-<span class="lineNum"> 390 </span> : {
-<span class="lineNum"> 391 </span> : typedef ept::cache::Package&lt;&gt; item_type;
-<span class="lineNum"> 392 </span> : typedef ept::cache::debtags::Tag tag_type;
-<span class="lineNum"> 393 </span> : typedef std::set&lt; ept::cache::Package&lt;&gt; &gt; itemset_type;
-<span class="lineNum"> 394 </span> : typedef std::set&lt;ept::cache::debtags::Tag&gt; tagset_type;
-<span class="lineNum"> 395 </span> : };
-<span class="lineNum"> 396 </span> :
-<span class="lineNum"> 397 </span> : }
-<span class="lineNum"> 398 </span> : }
-<span class="lineNum"> 399 </span> :
-<span class="lineNum"> 400 </span> : namespace ept {
-<span class="lineNum"> 401 </span> : namespace cache {
-<span class="lineNum"> 402 </span> : namespace debtags {
-<span class="lineNum"> 403 </span> :
-<span class="lineNum"> 404 </span> : #if 0
-<span class="lineNum"> 405 </span> : /**
-<span class="lineNum"> 406 </span> : * Convert Facets to ints
-<span class="lineNum"> 407 </span> : */
-<span class="lineNum"> 408 </span> : class FacetIntConverter : public Implementation&lt;FacetIntConverter&gt;,
-<span class="lineNum"> 409 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Facet, int&gt;,
-<span class="lineNum"> 410 </span> : public Tagcoll::Converter&lt;int, aptFront::cache::entity::Facet&gt;
-<span class="lineNum"> 411 </span> : {
-<span class="lineNum"> 412 </span> : typedef aptFront::cache::entity::Facet Facet;
-<span class="lineNum"> 413 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Facet&gt; FacetSet;
-<span class="lineNum"> 414 </span> : typedef Tagcoll::OpSet&lt;int&gt; IntSet;
-<span class="lineNum"> 415 </span> : public:
-<span class="lineNum"> 416 </span> : virtual int operator()(const aptFront::cache::entity::Facet&amp; item) const;
-<span class="lineNum"> 417 </span> : virtual aptFront::cache::entity::Facet operator()(const int&amp; item) const;
-<span class="lineNum"> 418 </span> :
-<span class="lineNum"> 419 </span> : virtual IntSet operator()(const FacetSet&amp; item) const
-<span class="lineNum"> 420 </span> : { return Tagcoll::Converter&lt;Facet, int&gt;::operator()(item); }
-<span class="lineNum"> 421 </span> : virtual FacetSet operator()(const IntSet&amp; item) const
-<span class="lineNum"> 422 </span> : { return Tagcoll::Converter&lt;int, Facet&gt;::operator()(item); }
-<span class="lineNum"> 423 </span> :
-<span class="lineNum"> 424 </span> : static std::string componentName();
-<span class="lineNum"> 425 </span> : };
-<span class="lineNum"> 426 </span> :
-<span class="lineNum"> 427 </span> : /**
-<span class="lineNum"> 428 </span> : * Convert Facets to strings
-<span class="lineNum"> 429 </span> : */
-<span class="lineNum"> 430 </span> : class FacetStringConverter : public Implementation&lt;FacetStringConverter&gt;,
-<span class="lineNum"> 431 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Facet, std::string&gt;,
-<span class="lineNum"> 432 </span> : public Tagcoll::Converter&lt;std::string, aptFront::cache::entity::Facet&gt;
-<span class="lineNum"> 433 </span> : {
-<span class="lineNum"> 434 </span> : typedef aptFront::cache::entity::Facet Facet;
-<span class="lineNum"> 435 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Facet&gt; FacetSet;
-<span class="lineNum"> 436 </span> : typedef Tagcoll::OpSet&lt;std::string&gt; StringSet;
-<span class="lineNum"> 437 </span> : public:
-<span class="lineNum"> 438 </span> : virtual std::string operator()(const aptFront::cache::entity::Facet&amp; item) const;
-<span class="lineNum"> 439 </span> : virtual aptFront::cache::entity::Facet operator()(const std::string&amp; item) const;
-<span class="lineNum"> 440 </span> :
-<span class="lineNum"> 441 </span> : virtual StringSet operator()(const FacetSet&amp; item) const
-<span class="lineNum"> 442 </span> : { return Tagcoll::Converter&lt;Facet, std::string&gt;::operator()(item); }
-<span class="lineNum"> 443 </span> : virtual FacetSet operator()(const StringSet&amp; item) const
-<span class="lineNum"> 444 </span> : { return Tagcoll::Converter&lt;std::string, Facet&gt;::operator()(item); }
-<span class="lineNum"> 445 </span> :
-<span class="lineNum"> 446 </span> : static std::string componentName();
-<span class="lineNum"> 447 </span> : };
-<span class="lineNum"> 448 </span> :
-<span class="lineNum"> 449 </span> : /**
-<span class="lineNum"> 450 </span> : * Convert Vocabulary to ints
-<span class="lineNum"> 451 </span> : */
-<span class="lineNum"> 452 </span> : class TagIntConverter : public Implementation&lt;TagIntConverter&gt;,
-<span class="lineNum"> 453 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Tag, int&gt;,
-<span class="lineNum"> 454 </span> : public Tagcoll::Converter&lt;int, aptFront::cache::entity::Tag&gt;
-<span class="lineNum"> 455 </span> : {
-<span class="lineNum"> 456 </span> : typedef aptFront::cache::entity::Tag Tag;
-<span class="lineNum"> 457 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Tag&gt; TagSet;
-<span class="lineNum"> 458 </span> : typedef Tagcoll::OpSet&lt;int&gt; IntSet;
-<span class="lineNum"> 459 </span> : public:
-<span class="lineNum"> 460 </span> : virtual int operator()(const aptFront::cache::entity::Tag&amp; item) const;
-<span class="lineNum"> 461 </span> : virtual aptFront::cache::entity::Tag operator()(const int&amp; item) const;
-<span class="lineNum"> 462 </span> :
-<span class="lineNum"> 463 </span> : virtual IntSet operator()(const TagSet&amp; item) const
-<span class="lineNum"> 464 </span> : { return Tagcoll::Converter&lt;Tag, int&gt;::operator()(item); }
-<span class="lineNum"> 465 </span> : virtual TagSet operator()(const IntSet&amp; item) const
-<span class="lineNum"> 466 </span> : { return Tagcoll::Converter&lt;int, Tag&gt;::operator()(item); }
-<span class="lineNum"> 467 </span> :
-<span class="lineNum"> 468 </span> : static std::string componentName();
-<span class="lineNum"> 469 </span> : };
-<span class="lineNum"> 470 </span> :
-<span class="lineNum"> 471 </span> : /**
-<span class="lineNum"> 472 </span> : * Convert Vocabulary to strings
-<span class="lineNum"> 473 </span> : */
-<span class="lineNum"> 474 </span> : class TagStringConverter : public Implementation&lt;TagStringConverter&gt;,
-<span class="lineNum"> 475 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Tag, std::string&gt;,
-<span class="lineNum"> 476 </span> : public Tagcoll::Converter&lt;std::string, aptFront::cache::entity::Tag&gt;
-<span class="lineNum"> 477 </span> : {
-<span class="lineNum"> 478 </span> : typedef aptFront::cache::entity::Tag Tag;
-<span class="lineNum"> 479 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Tag&gt; TagSet;
-<span class="lineNum"> 480 </span> : typedef Tagcoll::OpSet&lt;std::string&gt; StringSet;
-<span class="lineNum"> 481 </span> : public:
-<span class="lineNum"> 482 </span> : virtual std::string operator()(const Tag&amp; item) const;
-<span class="lineNum"> 483 </span> : virtual Tag operator()(const std::string&amp; item) const;
-<span class="lineNum"> 484 </span> :
-<span class="lineNum"> 485 </span> : virtual StringSet operator()(const TagSet&amp; item) const
-<span class="lineNum"> 486 </span> : { return Tagcoll::Converter&lt;Tag, std::string&gt;::operator()(item); }
-<span class="lineNum"> 487 </span> : virtual TagSet operator()(const StringSet&amp; item) const
-<span class="lineNum"> 488 </span> : { return Tagcoll::Converter&lt;std::string, Tag&gt;::operator()(item); }
-<span class="lineNum"> 489 </span> :
-<span class="lineNum"> 490 </span> : TagSet parseTagList(const std::string&amp; str) const;
-<span class="lineNum"> 491 </span> :
-<span class="lineNum"> 492 </span> : static std::string componentName();
-<span class="lineNum"> 493 </span> : };
-<span class="lineNum"> 494 </span> :
-<span class="lineNum"> 495 </span> : /**
-<span class="lineNum"> 496 </span> : * Convert Aggregator to ints
-<span class="lineNum"> 497 </span> : */
-<span class="lineNum"> 498 </span> : class PackageIntConverter : public Implementation&lt;PackageIntConverter&gt;,
-<span class="lineNum"> 499 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Package, int&gt;,
-<span class="lineNum"> 500 </span> : public Tagcoll::Converter&lt;int, aptFront::cache::entity::Package&gt;
-<span class="lineNum"> 501 </span> : {
-<span class="lineNum"> 502 </span> : typedef aptFront::cache::entity::Package Package;
-<span class="lineNum"> 503 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Package&gt; PackageSet;
-<span class="lineNum"> 504 </span> : typedef Tagcoll::OpSet&lt;int&gt; IntSet;
-<span class="lineNum"> 505 </span> : public:
-<span class="lineNum"> 506 </span> : virtual int operator()(const Package&amp; item) const;
-<span class="lineNum"> 507 </span> : virtual Package operator()(const int&amp; item) const;
-<span class="lineNum"> 508 </span> :
-<span class="lineNum"> 509 </span> : virtual IntSet operator()(const PackageSet&amp; item) const
-<span class="lineNum"> 510 </span> : { return Tagcoll::Converter&lt;Package, int&gt;::operator()(item); }
-<span class="lineNum"> 511 </span> : virtual PackageSet operator()(const IntSet&amp; item) const
-<span class="lineNum"> 512 </span> : { return Tagcoll::Converter&lt;int, Package&gt;::operator()(item); }
-<span class="lineNum"> 513 </span> :
-<span class="lineNum"> 514 </span> : static std::string componentName();
-<span class="lineNum"> 515 </span> : };
-<span class="lineNum"> 516 </span> :
-<span class="lineNum"> 517 </span> : /**
-<span class="lineNum"> 518 </span> : * Convert Aggregator to strings
-<span class="lineNum"> 519 </span> : */
-<span class="lineNum"> 520 </span> : class PackageStringConverter : public Implementation&lt;PackageStringConverter&gt;,
-<span class="lineNum"> 521 </span> : public Tagcoll::Converter&lt;aptFront::cache::entity::Package, std::string&gt;,
-<span class="lineNum"> 522 </span> : public Tagcoll::Converter&lt;std::string, aptFront::cache::entity::Package&gt;
-<span class="lineNum"> 523 </span> : {
-<span class="lineNum"> 524 </span> : typedef aptFront::cache::entity::Package Package;
-<span class="lineNum"> 525 </span> : typedef Tagcoll::OpSet&lt;aptFront::cache::entity::Package&gt; PackageSet;
-<span class="lineNum"> 526 </span> : typedef Tagcoll::OpSet&lt;std::string&gt; StringSet;
-<span class="lineNum"> 527 </span> : public:
-<span class="lineNum"> 528 </span> : virtual std::string operator()(const Package&amp; item) const;
-<span class="lineNum"> 529 </span> : virtual Package operator()(const std::string&amp; item) const;
-<span class="lineNum"> 530 </span> :
-<span class="lineNum"> 531 </span> : virtual StringSet operator()(const PackageSet&amp; item) const
-<span class="lineNum"> 532 </span> : { return Tagcoll::Converter&lt;Package, std::string&gt;::operator()(item); }
-<span class="lineNum"> 533 </span> : virtual PackageSet operator()(const StringSet&amp; item) const
-<span class="lineNum"> 534 </span> : { return Tagcoll::Converter&lt;std::string, Package&gt;::operator()(item); }
-<span class="lineNum"> 535 </span> :
-<span class="lineNum"> 536 </span> : static std::string componentName();
-<span class="lineNum"> 537 </span> : };
-<span class="lineNum"> 538 </span> :
-<span class="lineNum"> 539 </span> : #endif
-<span class="lineNum"> 540 </span> :
-<span class="lineNum"> 541 </span> : }
-<span class="lineNum"> 542 </span> : }
-<span class="lineNum"> 543 </span> : }
-<span class="lineNum"> 544 </span> :
-<span class="lineNum"> 545 </span> : #endif
-<span class="lineNum"> 546 </span> :
-<span class="lineNum"> 547 </span> : #endif
-<span class="lineNum"> 548 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 549 </span> :
-<span class="lineNum"> 550 </span> : #if 0
-<span class="lineNum"> 551 </span> : /**
-<span class="lineNum"> 552 </span> : * @file cache/debtags/serializer.h
-<span class="lineNum"> 553 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 554 </span> : */
-<span class="lineNum"> 555 </span> :
-<span class="lineNum"> 556 </span> : #ifndef EPT_CACHE_DEBTAGS_SERIALIZER_TCC
-<span class="lineNum"> 557 </span> : #define EPT_CACHE_DEBTAGS_SERIALIZER_TCC
-<span class="lineNum"> 558 </span> :
-<span class="lineNum"> 559 </span> : #include &lt;ept/cache/debtags/serializer.h&gt;
-<span class="lineNum"> 560 </span> : #if 0
-<span class="lineNum"> 561 </span> : #include &lt;ept/cache/debtags/pkgidx.h&gt;
-<span class="lineNum"> 562 </span> : #include &lt;ept/cache/debtags/vocabulary.h&gt;
-<span class="lineNum"> 563 </span> : #include &lt;ept/cache/package.h&gt;
-<span class="lineNum"> 564 </span> : //#include &lt;ept/cache/cache.h&gt;
-<span class="lineNum"> 565 </span> : #endif
-<span class="lineNum"> 566 </span> :
-<span class="lineNum"> 567 </span> : namespace ept {
-<span class="lineNum"> 568 </span> : namespace t {
-<span class="lineNum"> 569 </span> : namespace cache {
-<span class="lineNum"> 570 </span> : namespace debtags {
-<span class="lineNum"> 571 </span> :
-<span class="lineNum"> 572 </span> :
-<span class="lineNum"> 573 </span> :
-<span class="lineNum"> 574 </span> : #if 0
-<span class="lineNum"> 575 </span> : string FacetIntConverter::componentName() { return &quot;FacetIntConverter&quot;; }
-<span class="lineNum"> 576 </span> :
-<span class="lineNum"> 577 </span> : int FacetIntConverter::operator()(const aptFront::cache::entity::Facet&amp; item) const
-<span class="lineNum"> 578 </span> : {
-<span class="lineNum"> 579 </span> : if (!item.valid()) return -1;
-<span class="lineNum"> 580 </span> : return item.id();
-<span class="lineNum"> 581 </span> : }
-<span class="lineNum"> 582 </span> : aptFront::cache::entity::Facet FacetIntConverter::operator()(const int&amp; item) const
-<span class="lineNum"> 583 </span> : {
-<span class="lineNum"> 584 </span> : return cache().tags().facetByID(item);
-<span class="lineNum"> 585 </span> : }
-<span class="lineNum"> 586 </span> :
-<span class="lineNum"> 587 </span> : string FacetStringConverter::componentName() { return &quot;FacetStringConverter&quot;; }
-<span class="lineNum"> 588 </span> :
-<span class="lineNum"> 589 </span> : std::string FacetStringConverter::operator()(const aptFront::cache::entity::Facet&amp; item) const
-<span class="lineNum"> 590 </span> : {
-<span class="lineNum"> 591 </span> : if (!item.valid()) return string();
-<span class="lineNum"> 592 </span> : return item.name();
-<span class="lineNum"> 593 </span> : }
-<span class="lineNum"> 594 </span> : aptFront::cache::entity::Facet FacetStringConverter::operator()(const std::string&amp; item) const
-<span class="lineNum"> 595 </span> : {
-<span class="lineNum"> 596 </span> : return cache().tags().facetByName(item);
-<span class="lineNum"> 597 </span> : }
-<span class="lineNum"> 598 </span> :
-<span class="lineNum"> 599 </span> : string TagIntConverter::componentName() { return &quot;TagIntConverter&quot;; }
-<span class="lineNum"> 600 </span> :
-<span class="lineNum"> 601 </span> : int TagIntConverter::operator()(const aptFront::cache::entity::Tag&amp; item) const
-<span class="lineNum"> 602 </span> : {
-<span class="lineNum"> 603 </span> : if (!item.valid()) return -1;
-<span class="lineNum"> 604 </span> : return item.id();
-<span class="lineNum"> 605 </span> : }
-<span class="lineNum"> 606 </span> : aptFront::cache::entity::Tag TagIntConverter::operator()(const int&amp; item) const
-<span class="lineNum"> 607 </span> : {
-<span class="lineNum"> 608 </span> : return cache().tags().tagByID(item);
-<span class="lineNum"> 609 </span> : }
-<span class="lineNum"> 610 </span> :
-<span class="lineNum"> 611 </span> : string TagStringConverter::componentName() { return &quot;TagStringConverter&quot;; }
-<span class="lineNum"> 612 </span> :
-<span class="lineNum"> 613 </span> : std::string TagStringConverter::operator()(const aptFront::cache::entity::Tag&amp; item) const
-<span class="lineNum"> 614 </span> : {
-<span class="lineNum"> 615 </span> : if (!item.valid()) return string();
-<span class="lineNum"> 616 </span> : return item.fullname();
-<span class="lineNum"> 617 </span> : }
-<span class="lineNum"> 618 </span> : aptFront::cache::entity::Tag TagStringConverter::operator()(const std::string&amp; item) const
-<span class="lineNum"> 619 </span> : {
-<span class="lineNum"> 620 </span> : return cache().tags().tagByName(item);
-<span class="lineNum"> 621 </span> : }
-<span class="lineNum"> 622 </span> :
-<span class="lineNum"> 623 </span> : Tagcoll::OpSet&lt;entity::Tag&gt; TagStringConverter::parseTagList(const std::string&amp; str) const
-<span class="lineNum"> 624 </span> : {
-<span class="lineNum"> 625 </span> : if (str.empty())
-<span class="lineNum"> 626 </span> : return Tagcoll::OpSet&lt;entity::Tag&gt;();
-<span class="lineNum"> 627 </span> :
-<span class="lineNum"> 628 </span> : size_t i = str.find(&quot;, &quot;);
-<span class="lineNum"> 629 </span> : if (i == string::npos)
-<span class="lineNum"> 630 </span> : {
-<span class="lineNum"> 631 </span> : // Check if we need curly brace expansion
-<span class="lineNum"> 632 </span> : if (str[str.size() - 1] == '}')
-<span class="lineNum"> 633 </span> : {
-<span class="lineNum"> 634 </span> : using namespace std;
-<span class="lineNum"> 635 </span> : Tagcoll::OpSet&lt;entity::Tag&gt; res;
-<span class="lineNum"> 636 </span> : size_t begin = str.find('{');
-<span class="lineNum"> 637 </span> : if (begin == string::npos)
-<span class="lineNum"> 638 </span> : return res;
-<span class="lineNum"> 639 </span> : string prefix(str, 0, begin);
-<span class="lineNum"> 640 </span> : ++begin;
-<span class="lineNum"> 641 </span> : size_t end;
-<span class="lineNum"> 642 </span> : while ((end = str.find(',', begin)) != string::npos)
-<span class="lineNum"> 643 </span> : {
-<span class="lineNum"> 644 </span> : res += (*this)(prefix + str.substr(begin, end-begin));
-<span class="lineNum"> 645 </span> : begin = end + 1;
-<span class="lineNum"> 646 </span> : }
-<span class="lineNum"> 647 </span> : res += (*this)(prefix + str.substr(begin, str.size() - 1 - begin));
-<span class="lineNum"> 648 </span> : return res;
-<span class="lineNum"> 649 </span> : } else {
-<span class="lineNum"> 650 </span> : entity::Tag t = (*this)(str);
-<span class="lineNum"> 651 </span> : if (t.valid())
-<span class="lineNum"> 652 </span> : return Tagcoll::OpSet&lt;entity::Tag&gt;() + t;
-<span class="lineNum"> 653 </span> : else
-<span class="lineNum"> 654 </span> : return Tagcoll::OpSet&lt;entity::Tag&gt;();
-<span class="lineNum"> 655 </span> : }
-<span class="lineNum"> 656 </span> : } else {
-<span class="lineNum"> 657 </span> : return parseTagList(string(str, 0, i)) + parseTagList(string(str, i+2));
-<span class="lineNum"> 658 </span> : }
-<span class="lineNum"> 659 </span> : }
-<span class="lineNum"> 660 </span> :
-<span class="lineNum"> 661 </span> : string PackageIntConverter::componentName() { return &quot;PackageIntConverter&quot;; }
-<span class="lineNum"> 662 </span> :
-<span class="lineNum"> 663 </span> : int PackageIntConverter::operator()(const aptFront::cache::entity::Package&amp; item) const
-<span class="lineNum"> 664 </span> : {
-<span class="lineNum"> 665 </span> : if (!item.valid()) return -1;
-<span class="lineNum"> 666 </span> : return item.id();
-<span class="lineNum"> 667 </span> : }
-<span class="lineNum"> 668 </span> : aptFront::cache::entity::Package PackageIntConverter::operator()(const int&amp; item) const
-<span class="lineNum"> 669 </span> : {
-<span class="lineNum"> 670 </span> : PkgIdx&amp; p = cache().pkgidx();
-<span class="lineNum"> 671 </span> : return cache().packages().packageByName(string(p.name(item), p.size(item)));
-<span class="lineNum"> 672 </span> : }
-<span class="lineNum"> 673 </span> :
-<span class="lineNum"> 674 </span> : string PackageStringConverter::componentName() { return &quot;PackageStringConverter&quot;; }
-<span class="lineNum"> 675 </span> :
-<span class="lineNum"> 676 </span> : std::string PackageStringConverter::operator()(const aptFront::cache::entity::Package&amp; item) const
-<span class="lineNum"> 677 </span> : {
-<span class="lineNum"> 678 </span> : if (!item.valid()) return string();
-<span class="lineNum"> 679 </span> : return item.name();
-<span class="lineNum"> 680 </span> : }
-<span class="lineNum"> 681 </span> : aptFront::cache::entity::Package PackageStringConverter::operator()(const std::string&amp; item) const
-<span class="lineNum"> 682 </span> : {
-<span class="lineNum"> 683 </span> : return cache().packages().packageByName(item);
-<span class="lineNum"> 684 </span> : }
-<span class="lineNum"> 685 </span> : #endif
-<span class="lineNum"> 686 </span> :
-<span class="lineNum"> 687 </span> : }
-<span class="lineNum"> 688 </span> : }
-<span class="lineNum"> 689 </span> :
-<span class="lineNum"> 690 </span> : #endif
-<span class="lineNum"> 691 </span> :
-<span class="lineNum"> 692 </span> : #if 0
-<span class="lineNum"> 693 </span> : #ifdef COMPILE_TESTSUITE
-<span class="lineNum"> 694 </span> : //#include &lt;apt-front/cache/component/debtags/update.h&gt;
-<span class="lineNum"> 695 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 696 </span> : #include &quot;test-utils.h&quot;
-<span class="lineNum"> 697 </span> :
-<span class="lineNum"> 698 </span> : namespace tut {
-<span class="lineNum"> 699 </span> : using namespace aptFront::cache;
-<span class="lineNum"> 700 </span> : using namespace component;
-<span class="lineNum"> 701 </span> : using namespace debtags;
-<span class="lineNum"> 702 </span> : using namespace std;
-<span class="lineNum"> 703 </span> :
-<span class="lineNum"> 704 </span> : struct cache_component_debtags_serializer_shar {
-<span class="lineNum"> 705 </span> : cache_component_debtags_serializer_shar () {
-<span class="lineNum"> 706 </span> : aptInit ();
-<span class="lineNum"> 707 </span> : ok = true;
-<span class="lineNum"> 708 </span> : debtags::fetchNewData();
-<span class="lineNum"> 709 </span> : c.open( Cache::OpenDefault |
-<span class="lineNum"> 710 </span> : Cache::OpenReadOnly | Cache::OpenDebtags );
-<span class="lineNum"> 711 </span> : }
-<span class="lineNum"> 712 </span> : void check() {
-<span class="lineNum"> 713 </span> : if (ok) return;
-<span class="lineNum"> 714 </span> : ok = true;
-<span class="lineNum"> 715 </span> : throw warning( &quot;debtags init failed, cancelling&quot; );
-<span class="lineNum"> 716 </span> : }
-<span class="lineNum"> 717 </span> : ~cache_component_debtags_serializer_shar() {
-<span class="lineNum"> 718 </span> : check();
-<span class="lineNum"> 719 </span> : }
-<span class="lineNum"> 720 </span> : Cache c;
-<span class="lineNum"> 721 </span> : bool ok;
-<span class="lineNum"> 722 </span> : };
-<span class="lineNum"> 723 </span> :
-<span class="lineNum"> 724 </span> : TESTGRP( cache_component_debtags_serializer );
-<span class="lineNum"> 725 </span> :
-<span class="lineNum"> 726 </span> : using namespace Tagcoll;
-<span class="lineNum"> 727 </span> :
-<span class="lineNum"> 728 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 729 </span> : void to::test&lt;1&gt; ()
-<span class="lineNum"> 730 </span> : {
-<span class="lineNum"> 731 </span> : check();
-<span class="lineNum"> 732 </span> :
-<span class="lineNum"> 733 </span> : PackageStringConverter&amp; psc = c.packagestringconverter();
-<span class="lineNum"> 734 </span> :
-<span class="lineNum"> 735 </span> : ensure(psc(&quot;Slartibartsfart&quot;) == entity::Package());
-<span class="lineNum"> 736 </span> :
-<span class="lineNum"> 737 </span> : /* Get the 'debtags' package */
-<span class="lineNum"> 738 </span> : entity::Package p = c.packages().packageByName( &quot;debtags&quot; );
-<span class="lineNum"> 739 </span> : ensure(p.valid());
-<span class="lineNum"> 740 </span> :
-<span class="lineNum"> 741 </span> : /* Get the 'debtags' package using the serializer */
-<span class="lineNum"> 742 </span> : entity::Package p1 = psc(&quot;debtags&quot;);
-<span class="lineNum"> 743 </span> : ensure(p1.valid());
-<span class="lineNum"> 744 </span> :
-<span class="lineNum"> 745 </span> : /* They must be the same */
-<span class="lineNum"> 746 </span> : ensure(p == p1);
-<span class="lineNum"> 747 </span> :
-<span class="lineNum"> 748 </span> : ensure_equals(psc(p), &quot;debtags&quot;);
-<span class="lineNum"> 749 </span> : ensure_equals(psc(p1), &quot;debtags&quot;);
-<span class="lineNum"> 750 </span> : ensure_equals(psc(p), psc(p1));
-<span class="lineNum"> 751 </span> :
-<span class="lineNum"> 752 </span> : /* If there is an invalid package to serialize, it should be discarded */
-<span class="lineNum"> 753 </span> : {
-<span class="lineNum"> 754 </span> : Tagcoll::OpSet&lt;entity::Package&gt; pkgs;
-<span class="lineNum"> 755 </span> : pkgs += c.packages().packageByName( &quot;debtags&quot; );
-<span class="lineNum"> 756 </span> : pkgs += c.packages().packageByName( &quot;tagcoll&quot; );
-<span class="lineNum"> 757 </span> : pkgs += entity::Package();
-<span class="lineNum"> 758 </span> :
-<span class="lineNum"> 759 </span> : ensure_equals (pkgs.size(), 3u);
-<span class="lineNum"> 760 </span> : ensure_equals (psc(pkgs).size(), 2u);
-<span class="lineNum"> 761 </span> : ensure (psc(pkgs).contains(&quot;debtags&quot;));
-<span class="lineNum"> 762 </span> : ensure (psc(pkgs).contains(&quot;tagcoll&quot;));
-<span class="lineNum"> 763 </span> : }
-<span class="lineNum"> 764 </span> :
-<span class="lineNum"> 765 </span> : /* If there is an invalid package to serialize, it should be discarded */
-<span class="lineNum"> 766 </span> : {
-<span class="lineNum"> 767 </span> : Tagcoll::OpSet&lt;std::string&gt; pkgs;
-<span class="lineNum"> 768 </span> : pkgs += &quot;debtags&quot;;
-<span class="lineNum"> 769 </span> : pkgs += &quot;tagcoll&quot;;
-<span class="lineNum"> 770 </span> : pkgs += &quot;Slartibartsfart&quot;;
-<span class="lineNum"> 771 </span> :
-<span class="lineNum"> 772 </span> : ensure_equals (pkgs.size(), 3u);
-<span class="lineNum"> 773 </span> : ensure_equals (psc(pkgs).size(), 2u);
-<span class="lineNum"> 774 </span> : ensure (psc(pkgs).contains(psc(&quot;debtags&quot;)));
-<span class="lineNum"> 775 </span> : ensure (psc(pkgs).contains(psc(&quot;tagcoll&quot;)));
-<span class="lineNum"> 776 </span> : ensure (!psc(pkgs).contains(entity::Package()));
-<span class="lineNum"> 777 </span> : }
-<span class="lineNum"> 778 </span> : }
-<span class="lineNum"> 779 </span> :
-<span class="lineNum"> 780 </span> : ostream&amp; operator&lt;&lt;(ostream&amp; out, const entity::Package&amp; pkg)
-<span class="lineNum"> 781 </span> : {
-<span class="lineNum"> 782 </span> : if (pkg.valid())
-<span class="lineNum"> 783 </span> : return out &lt;&lt; pkg.name();
-<span class="lineNum"> 784 </span> : else
-<span class="lineNum"> 785 </span> : return out &lt;&lt; &quot;(invalid package)&quot;;
-<span class="lineNum"> 786 </span> : }
-<span class="lineNum"> 787 </span> :
-<span class="lineNum"> 788 </span> : // Check that package conversions work two-way
-<span class="lineNum"> 789 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 790 </span> : void to::test&lt;2&gt; ()
-<span class="lineNum"> 791 </span> : {
-<span class="lineNum"> 792 </span> : PackageStringConverter&amp; psc = c.packagestringconverter();
-<span class="lineNum"> 793 </span> : for (component::Aggregator::iterator i = c.packages().packagesBegin();
-<span class="lineNum"> 794 </span> : i != c.packages().packagesEnd(); ++i)
-<span class="lineNum"> 795 </span> : {
-<span class="lineNum"> 796 </span> : try {
-<span class="lineNum"> 797 </span> : ensure_equals(*i, psc(psc(*i)));
-<span class="lineNum"> 798 </span> : } catch (...) {
-<span class="lineNum"> 799 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[string] of package &quot; &lt;&lt; i-&gt;name(string(&quot;(invalid package)&quot;)) &lt;&lt; endl;
-<span class="lineNum"> 800 </span> : throw;
-<span class="lineNum"> 801 </span> : }
-<span class="lineNum"> 802 </span> : }
-<span class="lineNum"> 803 </span> :
-<span class="lineNum"> 804 </span> : PackageIntConverter&amp; pic = c.packageintconverter();
-<span class="lineNum"> 805 </span> : for (component::Aggregator::iterator i = c.packages().packagesBegin();
-<span class="lineNum"> 806 </span> : i != c.packages().packagesEnd(); ++i)
-<span class="lineNum"> 807 </span> : {
-<span class="lineNum"> 808 </span> : try {
-<span class="lineNum"> 809 </span> : ensure_equals(*i, pic(pic(*i)));
-<span class="lineNum"> 810 </span> : } catch (...) {
-<span class="lineNum"> 811 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[int] of package &quot; &lt;&lt; i-&gt;name(string(&quot;(invalid package)&quot;)) &lt;&lt; endl;
-<span class="lineNum"> 812 </span> : throw;
-<span class="lineNum"> 813 </span> : }
-<span class="lineNum"> 814 </span> : }
-<span class="lineNum"> 815 </span> : }
-<span class="lineNum"> 816 </span> :
-<span class="lineNum"> 817 </span> : // Check that facet conversions work two-way
-<span class="lineNum"> 818 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 819 </span> : void to::test&lt;3&gt; ()
-<span class="lineNum"> 820 </span> : {
-<span class="lineNum"> 821 </span> : typedef Tagcoll::OpSet&lt;entity::Facet&gt; FacetSet;
-<span class="lineNum"> 822 </span> :
-<span class="lineNum"> 823 </span> : FacetStringConverter&amp; fsc = c.facetstringconverter();
-<span class="lineNum"> 824 </span> : FacetSet allFacets(c.tags().facets());
-<span class="lineNum"> 825 </span> : for (FacetSet::const_iterator i = allFacets.begin(); i != allFacets.end(); i++)
-<span class="lineNum"> 826 </span> : {
-<span class="lineNum"> 827 </span> : try {
-<span class="lineNum"> 828 </span> : ensure_equals(*i, fsc(fsc(*i)));
-<span class="lineNum"> 829 </span> : } catch (...) {
-<span class="lineNum"> 830 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[string] of facet &quot; &lt;&lt; i-&gt;name() &lt;&lt; endl;
-<span class="lineNum"> 831 </span> : throw;
-<span class="lineNum"> 832 </span> : }
-<span class="lineNum"> 833 </span> : }
-<span class="lineNum"> 834 </span> :
-<span class="lineNum"> 835 </span> : FacetIntConverter&amp; fic = c.facetintconverter();
-<span class="lineNum"> 836 </span> : for (FacetSet::const_iterator i = allFacets.begin(); i != allFacets.end(); i++)
-<span class="lineNum"> 837 </span> : {
-<span class="lineNum"> 838 </span> : try {
-<span class="lineNum"> 839 </span> : ensure_equals(*i, fic(fic(*i)));
-<span class="lineNum"> 840 </span> : } catch (...) {
-<span class="lineNum"> 841 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[int] of facet &quot; &lt;&lt; i-&gt;name() &lt;&lt; endl;
-<span class="lineNum"> 842 </span> : throw;
-<span class="lineNum"> 843 </span> : }
-<span class="lineNum"> 844 </span> : }
-<span class="lineNum"> 845 </span> : }
-<span class="lineNum"> 846 </span> :
-<span class="lineNum"> 847 </span> : // Check that tag conversions work two-way
-<span class="lineNum"> 848 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 849 </span> : void to::test&lt;4&gt; ()
-<span class="lineNum"> 850 </span> : {
-<span class="lineNum"> 851 </span> : typedef Tagcoll::OpSet&lt;entity::Tag&gt; TagSet;
-<span class="lineNum"> 852 </span> :
-<span class="lineNum"> 853 </span> : TagStringConverter&amp; tsc = c.tagstringconverter();
-<span class="lineNum"> 854 </span> : TagSet allTags(c.tags().tags());
-<span class="lineNum"> 855 </span> : for (TagSet::const_iterator i = allTags.begin(); i != allTags.end(); i++)
-<span class="lineNum"> 856 </span> : {
-<span class="lineNum"> 857 </span> : try {
-<span class="lineNum"> 858 </span> : ensure_equals(*i, tsc(tsc(*i)));
-<span class="lineNum"> 859 </span> : } catch (...) {
-<span class="lineNum"> 860 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[string] of tag &quot; &lt;&lt; i-&gt;fullname() &lt;&lt; endl;
-<span class="lineNum"> 861 </span> : throw;
-<span class="lineNum"> 862 </span> : }
-<span class="lineNum"> 863 </span> : }
-<span class="lineNum"> 864 </span> :
-<span class="lineNum"> 865 </span> : TagIntConverter&amp; tic = c.tagintconverter();
-<span class="lineNum"> 866 </span> : for (TagSet::const_iterator i = allTags.begin(); i != allTags.end(); i++)
-<span class="lineNum"> 867 </span> : {
-<span class="lineNum"> 868 </span> : try {
-<span class="lineNum"> 869 </span> : ensure_equals(*i, tic(tic(*i)));
-<span class="lineNum"> 870 </span> : } catch (...) {
-<span class="lineNum"> 871 </span> : cerr &lt;&lt; &quot;Note: exception thrown during processing[int] of tag &quot; &lt;&lt; i-&gt;fullname() &lt;&lt; endl;
-<span class="lineNum"> 872 </span> : throw;
-<span class="lineNum"> 873 </span> : }
-<span class="lineNum"> 874 </span> : }
-<span class="lineNum"> 875 </span> : }
-<span class="lineNum"> 876 </span> :
-<span class="lineNum"> 877 </span> : // Check TagStringConverter::parseTagList
-<span class="lineNum"> 878 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 879 </span> : void to::test&lt;5&gt; ()
-<span class="lineNum"> 880 </span> : {
-<span class="lineNum"> 881 </span> : TagStringConverter&amp; tsc = c.tagstringconverter();
-<span class="lineNum"> 882 </span> : OpSet&lt;entity::Tag&gt; ts;
-<span class="lineNum"> 883 </span> :
-<span class="lineNum"> 884 </span> : // First ensure that we're using existing tags as samples
-<span class="lineNum"> 885 </span> : ensure(tsc(&quot;accessibility::TODO&quot;) != entity::Tag());
-<span class="lineNum"> 886 </span> : ensure(tsc(&quot;role::sw:devel-lib&quot;) != entity::Tag());
-<span class="lineNum"> 887 </span> : ensure(tsc(&quot;x11::xserver&quot;) != entity::Tag());
-<span class="lineNum"> 888 </span> : ensure(tsc(&quot;antani&quot;) == entity::Tag());
-<span class="lineNum"> 889 </span> : ensure(tsc(&quot;blinda&quot;) == entity::Tag());
-<span class="lineNum"> 890 </span> : ensure(tsc(&quot;supercazzola&quot;) == entity::Tag());
-<span class="lineNum"> 891 </span> :
-<span class="lineNum"> 892 </span> : ts = tsc.parseTagList(&quot;role::sw:devel-lib&quot;);
-<span class="lineNum"> 893 </span> : ensure_equals(ts.size(), 1u);
-<span class="lineNum"> 894 </span> : ensure(ts.contains(tsc(&quot;role::sw:devel-lib&quot;)));
-<span class="lineNum"> 895 </span> :
-<span class="lineNum"> 896 </span> : ts = tsc.parseTagList(&quot;accessibility::TODO, x11::xserver, role::sw:devel-lib&quot;);
-<span class="lineNum"> 897 </span> : ensure_equals(ts.size(), 3u);
-<span class="lineNum"> 898 </span> : ensure(ts.contains(tsc(&quot;accessibility::TODO&quot;)));
-<span class="lineNum"> 899 </span> : ensure(ts.contains(tsc(&quot;role::sw:devel-lib&quot;)));
-<span class="lineNum"> 900 </span> : ensure(ts.contains(tsc(&quot;x11::xserver&quot;)));
-<span class="lineNum"> 901 </span> :
-<span class="lineNum"> 902 </span> : ts = tsc.parseTagList(&quot;antani&quot;);
-<span class="lineNum"> 903 </span> : ensure_equals(ts.size(), 0u);
-<span class="lineNum"> 904 </span> :
-<span class="lineNum"> 905 </span> : ts = tsc.parseTagList(&quot;antani, blinda, supercazzola&quot;);
-<span class="lineNum"> 906 </span> : ensure_equals(ts.size(), 0u);
-<span class="lineNum"> 907 </span> :
-<span class="lineNum"> 908 </span> : ts = tsc.parseTagList(&quot;antani, x11::xserver, blinda&quot;);
-<span class="lineNum"> 909 </span> : ensure_equals(ts.size(), 1u);
-<span class="lineNum"> 910 </span> : ensure(ts.contains(tsc(&quot;x11::xserver&quot;)));
-<span class="lineNum"> 911 </span> : }
-<span class="lineNum"> 912 </span> :
-<span class="lineNum"> 913 </span> : // Check TagStringConverter::parseTagList's handling of curly brace expansion
-<span class="lineNum"> 914 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 915 </span> : void to::test&lt;6&gt; ()
-<span class="lineNum"> 916 </span> : {
-<span class="lineNum"> 917 </span> : TagStringConverter&amp; tsc = c.tagstringconverter();
-<span class="lineNum"> 918 </span> : OpSet&lt;entity::Tag&gt; ts;
-<span class="lineNum"> 919 </span> :
-<span class="lineNum"> 920 </span> : // First ensure that we're using existing tags as samples
-<span class="lineNum"> 921 </span> : ensure(tsc(&quot;role::TODO&quot;) != entity::Tag());
-<span class="lineNum"> 922 </span> : ensure(tsc(&quot;role::sw:server&quot;) != entity::Tag());
-<span class="lineNum"> 923 </span> : ensure(tsc(&quot;role::aux:dummy&quot;) != entity::Tag());
-<span class="lineNum"> 924 </span> : ensure(tsc(&quot;role::sw:amusement&quot;) != entity::Tag());
-<span class="lineNum"> 925 </span> : ensure(tsc(&quot;role::sw:server{}&quot;) == entity::Tag());
-<span class="lineNum"> 926 </span> : ensure(tsc(&quot;role::{}&quot;) == entity::Tag());
-<span class="lineNum"> 927 </span> : ensure(tsc(&quot;role::{&quot;) == entity::Tag());
-<span class="lineNum"> 928 </span> : ensure(tsc(&quot;role::}&quot;) == entity::Tag());
-<span class="lineNum"> 929 </span> :
-<span class="lineNum"> 930 </span> : ts = tsc.parseTagList(&quot;role::{TODO,sw:server,aux:dummy,sw:amusement}&quot;);
-<span class="lineNum"> 931 </span> : ensure_equals(ts.size(), 4u);
-<span class="lineNum"> 932 </span> : ensure(ts.contains(tsc(&quot;role::TODO&quot;)));
-<span class="lineNum"> 933 </span> : ensure(ts.contains(tsc(&quot;role::sw:server&quot;)));
-<span class="lineNum"> 934 </span> : ensure(ts.contains(tsc(&quot;role::aux:dummy&quot;)));
-<span class="lineNum"> 935 </span> : ensure(ts.contains(tsc(&quot;role::sw:amusement&quot;)));
-<span class="lineNum"> 936 </span> :
-<span class="lineNum"> 937 </span> : ts = tsc.parseTagList(&quot;role::{TODO,aux:dummy}, role::sw:{server,amusement}&quot;);
-<span class="lineNum"> 938 </span> : ensure_equals(ts.size(), 4u);
-<span class="lineNum"> 939 </span> : ensure(ts.contains(tsc(&quot;role::TODO&quot;)));
-<span class="lineNum"> 940 </span> : ensure(ts.contains(tsc(&quot;role::sw:server&quot;)));
-<span class="lineNum"> 941 </span> : ensure(ts.contains(tsc(&quot;role::aux:dummy&quot;)));
-<span class="lineNum"> 942 </span> : ensure(ts.contains(tsc(&quot;role::sw:amusement&quot;)));
-<span class="lineNum"> 943 </span> : }
-<span class="lineNum"> 944 </span> :
-<span class="lineNum"> 945 </span> : }
-<span class="lineNum"> 946 </span> : #endif
-<span class="lineNum"> 947 </span> : #endif
-<span class="lineNum"> 948 </span> : #endif
-<span class="lineNum"> 949 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/serializer.test.h.gcov.html b/rep/ept/debtags/maint/serializer.test.h.gcov.html
deleted file mode 100644
index 4980e32..0000000
--- a/rep/ept/debtags/maint/serializer.test.h.gcov.html
+++ /dev/null
@@ -1,200 +0,0 @@
-<!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/debtags/maint/serializer.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - serializer.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">48</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">48</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /**
-<span class="lineNum"> 3 </span> : * @file
-<span class="lineNum"> 4 </span> : * @author Enrico Zini (enrico) &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Tests for Debtags serialization filters
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This library is free software; you can redistribute it and/or
-<span class="lineNum"> 13 </span> : * modify it under the terms of the GNU Lesser General Public
-<span class="lineNum"> 14 </span> : * License as published by the Free Software Foundation; either
-<span class="lineNum"> 15 </span> : * version 2.1 of the License, or (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This library is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-<span class="lineNum"> 20 </span> : * Lesser General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU Lesser General Public
-<span class="lineNum"> 23 </span> : * License along with this library; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/maint/serializer.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;ept/debtags/maint/pkgid.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 30 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 31 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : #include &lt;tagcoll/coll/simple.h&gt;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : #include &lt;wibble/singleton.h&gt;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : using namespace std;
-<span class="lineNum"> 40 </span> : using namespace tagcoll;
-<span class="lineNum"> 41 </span> : using namespace ept;
-<span class="lineNum"> 42 </span> : using namespace ept::debtags;
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span> : struct TestSerializer : DebtagsTestEnvironment
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : {</span>
-<span class="lineNum"> 46 </span> : Debtags debtags;
-<span class="lineNum"> 47 </span> : Vocabulary&amp; voc;
-<span class="lineNum"> 48 </span> : PkgId&amp; pkgid;
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span><span class="lineCov"> 2 : TestSerializer()</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 2 : : voc(debtags.vocabulary()), pkgid(debtags.pkgid()) {}</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : /* Test going from a stream of tag data &lt;string, string&gt; to a stream of tag
-<span class="lineNum"> 54 </span> : * data &lt;int, int&gt; to a stream of tag data &lt;Package, Tag&gt; and finally back to a
-<span class="lineNum"> 55 </span> : * stream of tag data &lt;string, string&gt;
-<span class="lineNum"> 56 </span> : */
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : Test _1()</span>
-<span class="lineNum"> 58 </span> : {
-<span class="lineNum"> 59 </span> : // Source data &lt;string, string&gt;
-<span class="lineNum"> 60 </span><span class="lineCov"> 1 : coll::Simple&lt;string, string&gt; source;</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : source.insert(wibble::singleton(string(&quot;debtags&quot;)), wibble::singleton(string(&quot;use::editing&quot;)));</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 2 : source.insert(wibble::singleton(string(&quot;debtags&quot;)), wibble::singleton(string(&quot;role::program&quot;)));</span>
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span> : // &lt;string, string&gt; -&gt; &lt;int, int&gt;
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : coll::Simple&lt;int, int&gt; dest;</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : source.output(stringToInt(pkgid, voc, inserter(dest)));</span>
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : assert_eq(dest.itemCount(), 1u);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert_eq(dest.tagCount(), 2u);</span>
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : // &lt;int, int&gt; -&gt; &lt;Package, Tag&gt;
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : coll::Simple&lt;string, Tag&gt; dest1;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 1 : dest.output(intToPkg(pkgid, voc, inserter(dest1)));</span>
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : assert_eq(dest1.itemCount(), 1u);</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 2 : assert_eq(dest1.tagCount(), 2u);</span>
-<span class="lineNum"> 77 </span> :
-<span class="lineNum"> 78 </span><span class="lineCov"> 2 : std::set&lt;Tag&gt; tags = dest1.getTagsOfItem(&quot;debtags&quot;);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 2 : assert_eq(tags.size(), 2u);</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 2 : Tag useEditing = voc.tagByName(&quot;use::editing&quot;);</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 2 : Tag roleProgram = voc.tagByName(&quot;role::program&quot;);</span>
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span><span class="lineCov"> 2 : assert(tags.find(useEditing) != tags.end());</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 2 : assert(tags.find(roleProgram) != tags.end());</span>
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : // &lt;Package, Tag&gt; -&gt; &lt;string, string&gt;
-<span class="lineNum"> 88 </span><span class="lineCov"> 1 : coll::Simple&lt;string, string&gt; dest2;</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 1 : dest1.output(pkgToString(inserter(dest2)));</span>
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span><span class="lineCov"> 1 : assert_eq(dest2.itemCount(), 1u);</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert_eq(dest2.tagCount(), 2u);</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 2 : std::set&lt;std::string&gt; tags1 = dest2.getTagsOfItem(&quot;debtags&quot;);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 2 : assert_eq(tags1.size(), 2u);</span>
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span><span class="lineCov"> 2 : assert(tags1.find(&quot;use::editing&quot;) != tags1.end());</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert(tags1.find(&quot;role::program&quot;) != tags1.end());</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : /* Test going from patch with strings to patch with ints and vice versa */
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : Test _2()</span>
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span><span class="lineCov"> 1 : PatchList&lt;string, string&gt; change;</span>
-<span class="lineNum"> 105 </span> : change.addPatch(Patch&lt;string, string&gt;(&quot;debtags&quot;,
-<span class="lineNum"> 106 </span> : wibble::singleton(string(&quot;use::gameplaying&quot;)),
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : wibble::singleton(string(&quot;use::editing&quot;))));</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : // Deserialise to ints
-<span class="lineNum"> 110 </span><span class="lineCov"> 1 : PatchList&lt;int, int&gt; intChange;</span>
-<span class="lineNum"> 111 </span><span class="lineCov"> 1 : change.output(patchStringToInt(pkgid, voc, tagcoll::inserter(intChange)));</span>
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : assert_eq(intChange.size(), 1u);</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 2 : assert_eq(intChange.begin()-&gt;second.added.size(), 1u);</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 2 : assert_eq(intChange.begin()-&gt;second.removed.size(), 1u);</span>
-<span class="lineNum"> 115 </span> :
-<span class="lineNum"> 116 </span> : // Serialise back to strings
-<span class="lineNum"> 117 </span><span class="lineCov"> 1 : PatchList&lt;string, string&gt; change1;</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : intChange.output(patchIntToString(pkgid, voc, tagcoll::inserter(change1)));</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 1 : assert_eq(change1.size(), 1u);</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : assert_eq(change1.begin()-&gt;first, string(&quot;debtags&quot;));</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 2 : assert_eq(change1.begin()-&gt;second.item, string(&quot;debtags&quot;));</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 2 : assert_eq(change1.begin()-&gt;second.added.size(), 1u);</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 2 : assert_eq(*change1.begin()-&gt;second.added.begin(), string(&quot;use::gameplaying&quot;));</span>
-<span class="lineNum"> 124 </span><span class="lineCov"> 2 : assert_eq(change1.begin()-&gt;second.removed.size(), 1u);</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 2 : assert_eq(*change1.begin()-&gt;second.removed.begin(), string(&quot;use::editing&quot;));</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 127 </span> :
-<span class="lineNum"> 128 </span> : };
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span> : #include &lt;tagcoll/coll/simple.tcc&gt;
-<span class="lineNum"> 131 </span> : #include &lt;tagcoll/patch.tcc&gt;
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/sourcedir.cc.gcov.html b/rep/ept/debtags/maint/sourcedir.cc.gcov.html
deleted file mode 100644
index 8f0db9e..0000000
--- a/rep/ept/debtags/maint/sourcedir.cc.gcov.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!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/debtags/maint/sourcedir.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - sourcedir.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">57</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">75.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">43</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> : #include &lt;ept/debtags/maint/sourcedir.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/debtags/maint/vocabularymerger.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : #include &lt;tagcoll/input/zlib.h&gt;
-<span class="lineNum"> 8 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : using namespace wibble;
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : namespace ept {
-<span class="lineNum"> 13 </span> : namespace debtags {
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span><span class="lineCov"> 802 : SourceDir::FileType SourceDir::fileType(const std::string&amp; name)</span>
-<span class="lineNum"> 16 </span> : {
-<span class="lineNum"> 17 </span><span class="lineCov"> 802 : if (name[0] == '.') return SKIP;</span>
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : // Filenames need to be at least 5 characters long (one char plus
-<span class="lineNum"> 20 </span> : // extension)
-<span class="lineNum"> 21 </span><span class="lineCov"> 622 : if (name.size() &lt;= 4) return SKIP;</span>
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : // Only look at .voc and .tag files
-<span class="lineNum"> 24 </span><span class="lineCov"> 542 : std::string ext(name, name.size() - 4);</span>
-<span class="lineNum"> 25 </span><span class="lineCov"> 542 : if (ext == &quot;.voc&quot;)</span>
-<span class="lineNum"> 26 </span><span class="lineCov"> 80 : return VOC;</span>
-<span class="lineNum"> 27 </span><span class="lineCov"> 462 : if (ext == &quot;.tag&quot;)</span>
-<span class="lineNum"> 28 </span><span class="lineCov"> 80 : return TAG;</span>
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : // Now look for compressed files, which must have the 4 character extension
-<span class="lineNum"> 31 </span> : // plus the 3 chars of '.gz'
-<span class="lineNum"> 32 </span><span class="lineCov"> 382 : if (name.size() &lt;= 7) return SKIP;</span>
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span><span class="lineCov"> 302 : ext = name.substr(name.size() - 7);</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 302 : if (ext == &quot;.voc.gz&quot;)</span>
-<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : return VOCGZ;</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 302 : if (ext == &quot;.tag.gz&quot;)</span>
-<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : return TAGGZ;</span>
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span><span class="lineCov"> 302 : return SKIP;</span>
-<span class="lineNum"> 41 </span> : }
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span><span class="lineCov"> 20 : time_t SourceDir::timestamp()</span>
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span><span class="lineCov"> 20 : if (!valid()) return 0;</span>
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 20 : time_t max = 0;</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 200 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 49 </span> : {
-<span class="lineNum"> 50 </span><span class="lineCov"> 180 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 180 : if (type == SKIP) continue;</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineCov"> 36 : time_t ts = Path::timestamp(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 54 : if (ts &gt; max) max = ts;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 20 : }</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 20 : return max;</span>
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 62 : time_t SourceDir::vocTimestamp()</span>
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span><span class="lineCov"> 62 : if (!valid()) return 0;</span>
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span><span class="lineCov"> 60 : time_t max = 0;</span>
-<span class="lineNum"> 65 </span><span class="lineCov"> 632 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 66 </span> : {
-<span class="lineNum"> 67 </span><span class="lineCov"> 572 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1086 : if (type != VOC and type != VOCGZ) continue;</span>
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span><span class="lineCov"> 58 : time_t ts = Path::timestamp(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 116 : if (ts &gt; max) max = ts;</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 60 : }</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 60 : return max;</span>
-<span class="lineNum"> 75 </span> : }
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : time_t SourceDir::tagTimestamp()</span>
-<span class="lineNum"> 78 </span> : {
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : if (!valid()) return 0;</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : time_t max = 0;</span>
-<span class="lineNum"> 82 </span><span class="lineNoCov"> 0 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 83 </span> : {
-<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : if (type != TAG and type != TAGGZ) continue;</span>
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span><span class="lineNoCov"> 0 : time_t ts = Path::timestamp(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : if (ts &gt; max) max = ts;</span>
-<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return max;</span>
-<span class="lineNum"> 92 </span> : }
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 6 : void SourceDir::readVocabularies(VocabularyMerger&amp; out)</span>
-<span class="lineNum"> 95 </span> : {
-<span class="lineNum"> 96 </span><span class="lineCov"> 6 : if (!valid()) return;</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineCov"> 32 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 99 </span> : {
-<span class="lineNum"> 100 </span><span class="lineCov"> 26 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 101 </span><span class="lineCov"> 26 : if (type == VOC)</span>
-<span class="lineNum"> 102 </span> : {
-<span class="lineNum"> 103 </span> : // Read uncompressed data
-<span class="lineNum"> 104 </span><span class="lineCov"> 2 : tagcoll::input::Stdio in(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : // Read the vocabulary
-<span class="lineNum"> 107 </span><span class="lineCov"> 4 : out.read(in);</span>
-<span class="lineNum"> 108 </span> : }
-<span class="lineNum"> 109 </span><span class="lineCov"> 24 : else if (type == VOCGZ)</span>
-<span class="lineNum"> 110 </span> : {
-<span class="lineNum"> 111 </span> : // Read compressed data
-<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : tagcoll::input::Zlib in(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 113 </span> :
-<span class="lineNum"> 114 </span> : // Read the vocabulary
-<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : out.read(in);</span>
-<span class="lineNum"> 116 </span> : }
-<span class="lineNum"> 117 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 118 </span> : }
-<span class="lineNum"> 119 </span> :
-<span class="lineNum"> 120 </span> : }
-<span class="lineNum"> 121 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/sourcedir.h.gcov.html b/rep/ept/debtags/maint/sourcedir.h.gcov.html
deleted file mode 100644
index 64aa522..0000000
--- a/rep/ept/debtags/maint/sourcedir.h.gcov.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!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/debtags/maint/sourcedir.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - sourcedir.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">3</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">3</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> : #ifndef EPT_DEBTAGS_SOURCEDIR_H
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_SOURCEDIR_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Debtags data source directory access
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;string&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace debtags {
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : class VocabularyMerger;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : /**
-<span class="lineNum"> 36 </span> : * Access a directory containing Debtags data files
-<span class="lineNum"> 37 </span> : */
-<span class="lineNum"> 38 </span> : class SourceDir : public wibble::sys::fs::Directory
-<span class="lineNum"> 39 </span><span class="lineCov"> 82 : {</span>
-<span class="lineNum"> 40 </span> : protected:
-<span class="lineNum"> 41 </span> : enum FileType { SKIP, TAG, VOC, TAGGZ, VOCGZ };
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : // Check if a file name is a tag file, a vocabulary file or a file to skip.
-<span class="lineNum"> 44 </span> : // Please notice that it works on file names, not paths.
-<span class="lineNum"> 45 </span> : FileType fileType(const std::string&amp; name);
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : public:
-<span class="lineNum"> 48 </span><span class="lineCov"> 82 : SourceDir(const std::string&amp; path) : Directory(path) {}</span>
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : /// Return the time of the newest file in the source directory
-<span class="lineNum"> 51 </span> : time_t timestamp();
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : /// Return the time of the newest vocabulary file in the source directory
-<span class="lineNum"> 54 </span> : time_t vocTimestamp();
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : /// Return the time of the newest tag file in the source directory
-<span class="lineNum"> 57 </span> : time_t tagTimestamp();
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : /// Read the tag files in the directory and output their content to out
-<span class="lineNum"> 60 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 61 </span><span class="lineCov"> 4 : void readTags(OUT out);</span>
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /**
-<span class="lineNum"> 64 </span> : * Read the vocabulary files in the directory and output their content to
-<span class="lineNum"> 65 </span> : * out
-<span class="lineNum"> 66 </span> : */
-<span class="lineNum"> 67 </span> : void readVocabularies(VocabularyMerger&amp; out);
-<span class="lineNum"> 68 </span> : };
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> : }
-<span class="lineNum"> 72 </span> :
-<span class="lineNum"> 73 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 74 </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>
diff --git a/rep/ept/debtags/maint/sourcedir.tcc.gcov.html b/rep/ept/debtags/maint/sourcedir.tcc.gcov.html
deleted file mode 100644
index 429ec73..0000000
--- a/rep/ept/debtags/maint/sourcedir.tcc.gcov.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!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/debtags/maint/sourcedir.tcc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - sourcedir.tcc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">9</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">88.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">8</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> : #ifndef EPT_DEBTAGS_SOURCEDIR_TCC
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_SOURCEDIR_TCC
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Debtags data source directory access
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> : #include &lt;ept/debtags/maint/sourcedir.h&gt;
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : #include &lt;tagcoll/input/zlib.h&gt;
-<span class="lineNum"> 11 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 12 </span> :
-<span class="lineNum"> 13 </span> : namespace ept {
-<span class="lineNum"> 14 </span> : namespace debtags {
-<span class="lineNum"> 15 </span> :
-<span class="lineNum"> 16 </span> : template&lt;typename OUT&gt;
-<span class="lineNum"> 17 </span> : void SourceDir::readTags(OUT out)
-<span class="lineNum"> 18 </span> : {
-<span class="lineNum"> 19 </span><span class="lineCov"> 4 : if (!valid()) return;</span>
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span><span class="lineCov"> 28 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 22 </span> : {
-<span class="lineNum"> 23 </span><span class="lineCov"> 24 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 24 </span><span class="lineCov"> 24 : if (type == TAG)</span>
-<span class="lineNum"> 25 </span> : {
-<span class="lineNum"> 26 </span> : // Read uncompressed data
-<span class="lineNum"> 27 </span><span class="lineCov"> 2 : tagcoll::input::Stdio in(path() + &quot;/&quot; + d-&gt;d_name);</span>
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : // Read the collection
-<span class="lineNum"> 30 </span><span class="lineCov"> 2 : tagcoll::textformat::parse(in, out);</span>
-<span class="lineNum"> 31 </span> : }
-<span class="lineNum"> 32 </span><span class="lineCov"> 22 : else if (type == TAGGZ)</span>
-<span class="lineNum"> 33 </span> : {
-<span class="lineNum"> 34 </span> : // Read compressed data
-<span class="lineNum"> 35 </span><span class="lineNoCov"> 0 : tagcoll::input::Zlib in(path() + &quot;/&quot; + d-&gt;d_name);</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : // Read the collection
-<span class="lineNum"> 38 </span><span class="lineCov"> 4 : tagcoll::textformat::parse(in, out);</span>
-<span class="lineNum"> 39 </span> : }
-<span class="lineNum"> 40 </span> : }
-<span class="lineNum"> 41 </span> : }
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : }
-<span class="lineNum"> 44 </span> : }
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : #include &lt;tagcoll/TextFormat.tcc&gt;
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : #endif
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // -*- C++ -*-
-<span class="lineNum"> 51 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/vocabularyindexer.cc.gcov.html b/rep/ept/debtags/maint/vocabularyindexer.cc.gcov.html
deleted file mode 100644
index bf21509..0000000
--- a/rep/ept/debtags/maint/vocabularyindexer.cc.gcov.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!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/debtags/maint/vocabularyindexer.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - vocabularyindexer.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">94</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">69.1 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">65</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> : #include &lt;ept/debtags/maint/vocabularyindexer.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/debtags/maint/vocabularymerger.h&gt;
-<span class="lineNum"> 4 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : namespace ept {
-<span class="lineNum"> 7 </span> : namespace debtags {
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span><span class="lineCov"> 31 : VocabularyIndexer::VocabularyIndexer()</span>
-<span class="lineNum"> 10 </span><span class="lineCov"> 31 : : mainSource(Path::debtagsSourceDir()), userSource(Path::debtagsUserSourceDir())</span>
-<span class="lineNum"> 11 </span> : {
-<span class="lineNum"> 12 </span><span class="lineCov"> 31 : rescan();</span>
-<span class="lineNum"> 13 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span><span class="lineCov"> 31 : void VocabularyIndexer::rescan()</span>
-<span class="lineNum"> 16 </span> : {
-<span class="lineNum"> 17 </span><span class="lineCov"> 31 : ts_main_src = mainSource.vocTimestamp();</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 31 : ts_user_src = userSource.vocTimestamp();</span>
-<span class="lineNum"> 19 </span><span class="lineCov"> 31 : ts_main_voc = Path::timestamp(Path::vocabulary());</span>
-<span class="lineNum"> 20 </span><span class="lineCov"> 62 : ts_main_idx = Path::timestamp(Path::vocabularyIndex());</span>
-<span class="lineNum"> 21 </span><span class="lineCov"> 62 : ts_user_voc = Path::timestamp(Path::userVocabulary());</span>
-<span class="lineNum"> 22 </span><span class="lineCov"> 62 : ts_user_idx = Path::timestamp(Path::userVocabularyIndex());</span>
-<span class="lineNum"> 23 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span><span class="lineCov"> 31 : bool VocabularyIndexer::needsRebuild() const</span>
-<span class="lineNum"> 26 </span> : {
-<span class="lineNum"> 27 </span> : // If there are no indexes of any kind, then we need rebuilding
-<span class="lineNum"> 28 </span><span class="lineCov"> 31 : if (ts_user_voc == 0 &amp;&amp; ts_user_idx == 0 &amp;&amp; ts_main_voc == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 29 </span><span class="lineCov"> 3 : return true;</span>
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : // If the user index is ok, then we are fine
-<span class="lineNum"> 32 </span><span class="lineCov"> 28 : if (ts_user_voc &gt;= sourceTimestamp() &amp;&amp; ts_user_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 33 </span><span class="lineCov"> 28 : return false;</span>
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : // If there are user sources, then we cannot use the system index
-<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : if (ts_user_src &gt; 0)</span>
-<span class="lineNum"> 37 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : // If there are no user sources, then we can fallback on the system
-<span class="lineNum"> 40 </span> : // indexes in case the user indexes are not up to date
-<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : if (ts_main_voc &gt;= sourceTimestamp() &amp;&amp; ts_main_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 45 </span> : }
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 31 : bool VocabularyIndexer::userIndexIsRedundant() const</span>
-<span class="lineNum"> 48 </span> : {
-<span class="lineNum"> 49 </span> : // If there is no user index, then it is not redundant
-<span class="lineNum"> 50 </span><span class="lineCov"> 31 : if (ts_user_voc == 0 &amp;&amp; ts_user_idx == 0)</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 2 : return false;</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : // If we have user sources, then the user index is never redundant
-<span class="lineNum"> 54 </span><span class="lineCov"> 29 : if (ts_user_src &gt; 0)</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 29 : return false;</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : // If the system index is not up to date, then the user index is not
-<span class="lineNum"> 58 </span> : // redundant
-<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : if (ts_main_voc &lt; sourceTimestamp() || ts_main_idx &lt; sourceTimestamp())</span>
-<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 63 </span> : }
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span><span class="lineCov"> 3 : bool VocabularyIndexer::rebuild(const std::string&amp; vocfname, const std::string&amp; idxfname)</span>
-<span class="lineNum"> 66 </span> : {
-<span class="lineNum"> 67 </span> : using namespace tagcoll;
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : // Create the master MMap index
-<span class="lineNum"> 70 </span><span class="lineCov"> 3 : diskindex::MasterMMapIndexer master(idxfname);</span>
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : // Read and merge vocabulary data
-<span class="lineNum"> 73 </span><span class="lineCov"> 3 : VocabularyMerger voc;</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 3 : mainSource.readVocabularies(voc);</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 3 : userSource.readVocabularies(voc);</span>
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineCov"> 3 : if (voc.empty())</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 2 : return false;</span>
-<span class="lineNum"> 79 </span> : //throw wibble::exception::Consistency(&quot;Reading debtags sources from &quot; + mainSource.path() + &quot; and &quot; + userSource.path(), &quot;Unable to find any vocabulary data&quot;);
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span> : // Write the merged vocabulary, and generate tag and facet IDs as a side
-<span class="lineNum"> 82 </span> : // effect
-<span class="lineNum"> 83 </span><span class="lineCov"> 1 : std::string tmpvocfname = vocfname + &quot;.tmp&quot;;</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : voc.write(tmpvocfname);</span>
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span> : // Add the indexed vocabulary data to the master index
-<span class="lineNum"> 87 </span> : // 0: facets
-<span class="lineNum"> 88 </span><span class="lineCov"> 1 : master.append(voc.facetIndexer());</span>
-<span class="lineNum"> 89 </span> : // 1: tags
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : master.append(voc.tagIndexer());</span>
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : if (rename(tmpvocfname.c_str(), vocfname.c_str()) == -1)</span>
-<span class="lineNum"> 93 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(&quot;renaming &quot; + tmpvocfname + &quot; to &quot; + vocfname);</span>
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span><span class="lineCov"> 1 : master.commit();</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 97 </span> : }
-<span class="lineNum"> 98 </span> :
-<span class="lineNum"> 99 </span><span class="lineCov"> 31 : bool VocabularyIndexer::rebuildIfNeeded()</span>
-<span class="lineNum"> 100 </span> : {
-<span class="lineNum"> 101 </span><span class="lineCov"> 31 : if (needsRebuild())</span>
-<span class="lineNum"> 102 </span> : {
-<span class="lineNum"> 103 </span> : // Decide if we rebuild the user index or the system index
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span><span class="lineCov"> 3 : if (ts_user_src == 0 &amp;&amp; Path::access(Path::debtagsIndexDir(), W_OK) == 0)</span>
-<span class="lineNum"> 106 </span> : {
-<span class="lineNum"> 107 </span> : // There are no user sources and we can write to the system index
-<span class="lineNum"> 108 </span> : // directory: rebuild the system index
-<span class="lineNum"> 109 </span><span class="lineCov"> 1 : if (!rebuild(Path::vocabulary(), Path::vocabularyIndex()))</span>
-<span class="lineNum"> 110 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 111 </span><span class="lineNoCov"> 0 : ts_main_voc = Path::timestamp(Path::vocabulary());</span>
-<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : ts_main_idx = Path::timestamp(Path::vocabularyIndex());</span>
-<span class="lineNum"> 113 </span><span class="lineNoCov"> 0 : if (Path::vocabulary() == Path::userVocabulary())</span>
-<span class="lineNum"> 114 </span><span class="lineNoCov"> 0 : ts_user_voc = ts_main_voc;</span>
-<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : if (Path::vocabularyIndex() == Path::userVocabularyIndex())</span>
-<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : ts_user_idx = ts_main_idx;</span>
-<span class="lineNum"> 117 </span> : } else {
-<span class="lineNum"> 118 </span><span class="lineCov"> 2 : wibble::sys::fs::mkFilePath(Path::userVocabulary());</span>
-<span class="lineNum"> 119 </span><span class="lineCov"> 4 : wibble::sys::fs::mkFilePath(Path::userVocabularyIndex());</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 4 : if (!rebuild(Path::userVocabulary(), Path::userVocabularyIndex()))</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 1 : ts_user_voc = Path::timestamp(Path::userVocabulary());</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 2 : ts_user_idx = Path::timestamp(Path::userVocabularyIndex());</span>
-<span class="lineNum"> 124 </span> : }
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 126 </span> : }
-<span class="lineNum"> 127 </span><span class="lineCov"> 28 : return false;</span>
-<span class="lineNum"> 128 </span> : }
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span><span class="lineCov"> 31 : bool VocabularyIndexer::deleteRedundantUserIndex()</span>
-<span class="lineNum"> 131 </span> : {
-<span class="lineNum"> 132 </span><span class="lineCov"> 31 : if (userIndexIsRedundant())</span>
-<span class="lineNum"> 133 </span> : {
-<span class="lineNum"> 134 </span> : // Delete the user indexes if they exist
-<span class="lineNum"> 135 </span><span class="lineNoCov"> 0 : if (Path::vocabulary() != Path::userVocabulary())</span>
-<span class="lineNum"> 136 </span> : {
-<span class="lineNum"> 137 </span><span class="lineNoCov"> 0 : unlink(Path::userVocabulary().c_str());</span>
-<span class="lineNum"> 138 </span><span class="lineNoCov"> 0 : ts_user_voc = 0;</span>
-<span class="lineNum"> 139 </span> : }
-<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : if (Path::vocabularyIndex() != Path::userVocabularyIndex())</span>
-<span class="lineNum"> 141 </span> : {
-<span class="lineNum"> 142 </span><span class="lineNoCov"> 0 : unlink(Path::userVocabularyIndex().c_str());</span>
-<span class="lineNum"> 143 </span><span class="lineNoCov"> 0 : ts_user_idx = 0;</span>
-<span class="lineNum"> 144 </span> : }
-<span class="lineNum"> 145 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 146 </span> : }
-<span class="lineNum"> 147 </span><span class="lineCov"> 31 : return false;</span>
-<span class="lineNum"> 148 </span> : }
-<span class="lineNum"> 149 </span> :
-<span class="lineNum"> 150 </span><span class="lineCov"> 31 : bool VocabularyIndexer::getUpToDateVocabulary(std::string&amp; vocfname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 151 </span> : {
-<span class="lineNum"> 152 </span> : // If there are no indexes of any kind, then we have nothing to return
-<span class="lineNum"> 153 </span><span class="lineCov"> 31 : if (ts_user_voc == 0 &amp;&amp; ts_user_idx == 0 &amp;&amp; ts_main_voc == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 154 </span><span class="lineCov"> 2 : return false;</span>
-<span class="lineNum"> 155 </span> :
-<span class="lineNum"> 156 </span> : // If the user index is up to date, use it
-<span class="lineNum"> 157 </span><span class="lineCov"> 29 : if (ts_user_voc &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 158 </span> : ts_user_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 159 </span> : {
-<span class="lineNum"> 160 </span><span class="lineCov"> 29 : vocfname = Path::userVocabulary();</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 58 : idxfname = Path::userVocabularyIndex();</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 29 : return true;</span>
-<span class="lineNum"> 163 </span> : }
-<span class="lineNum"> 164 </span> :
-<span class="lineNum"> 165 </span> : // If the user index is not up to date and we have user sources, we cannot
-<span class="lineNum"> 166 </span> : // fall back to the system index
-<span class="lineNum"> 167 </span><span class="lineNoCov"> 0 : if (ts_user_src != 0)</span>
-<span class="lineNum"> 168 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 169 </span> :
-<span class="lineNum"> 170 </span> : // Fallback to the system index
-<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : if (ts_main_voc &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 172 </span> : ts_main_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 173 </span> : {
-<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : vocfname = Path::vocabulary();</span>
-<span class="lineNum"> 175 </span><span class="lineNoCov"> 0 : idxfname = Path::vocabularyIndex();</span>
-<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 177 </span> : }
-<span class="lineNum"> 178 </span> :
-<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 180 </span> : }
-<span class="lineNum"> 181 </span> :
-<span class="lineNum"> 182 </span> :
-<span class="lineNum"> 183 </span><span class="lineCov"> 31 : bool VocabularyIndexer::obtainWorkingVocabulary(std::string&amp; vocfname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 184 </span> : {
-<span class="lineNum"> 185 </span><span class="lineCov"> 31 : VocabularyIndexer v;</span>
-<span class="lineNum"> 186 </span> :
-<span class="lineNum"> 187 </span><span class="lineCov"> 31 : v.rebuildIfNeeded();</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 31 : v.deleteRedundantUserIndex();</span>
-<span class="lineNum"> 189 </span><span class="lineCov"> 31 : return v.getUpToDateVocabulary(vocfname, idxfname);</span>
-<span class="lineNum"> 190 </span> : }
-<span class="lineNum"> 191 </span> :
-<span class="lineNum"> 192 </span> : }
-<span class="lineNum"> 193 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/vocabularyindexer.h.gcov.html b/rep/ept/debtags/maint/vocabularyindexer.h.gcov.html
deleted file mode 100644
index 5e8b99f..0000000
--- a/rep/ept/debtags/maint/vocabularyindexer.h.gcov.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!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/debtags/maint/vocabularyindexer.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - vocabularyindexer.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">2</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">2</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> : #ifndef EPT_DEBTAGS_VOCABULARYINDEXER_H
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_VOCABULARYINDEXER_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Debtags vocabulary indexer
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/maint/sourcedir.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;string&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace debtags {
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : /**
-<span class="lineNum"> 34 </span> : * Infrastructure used to rebuild the vocabulary index when needed
-<span class="lineNum"> 35 </span> : */
-<span class="lineNum"> 36 </span> : struct VocabularyIndexer
-<span class="lineNum"> 37 </span><span class="lineCov"> 31 : {</span>
-<span class="lineNum"> 38 </span> : SourceDir mainSource;
-<span class="lineNum"> 39 </span> : SourceDir userSource;
-<span class="lineNum"> 40 </span> : time_t ts_main_src;
-<span class="lineNum"> 41 </span> : time_t ts_user_src;
-<span class="lineNum"> 42 </span> : time_t ts_main_voc;
-<span class="lineNum"> 43 </span> : time_t ts_main_idx;
-<span class="lineNum"> 44 </span> : time_t ts_user_voc;
-<span class="lineNum"> 45 </span> : time_t ts_user_idx;
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : /**
-<span class="lineNum"> 48 </span> : * Get the timestamp of the newest vocabulary data source
-<span class="lineNum"> 49 </span> : */
-<span class="lineNum"> 50 </span><span class="lineCov"> 114 : time_t sourceTimestamp() const { return ts_main_src &lt; ts_user_src ? ts_user_src : ts_main_src; }</span>
-<span class="lineNum"> 51 </span> : /**
-<span class="lineNum"> 52 </span> : * Return true if the vocabulary index needs rebuilding
-<span class="lineNum"> 53 </span> : */
-<span class="lineNum"> 54 </span> : bool needsRebuild() const;
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : /**
-<span class="lineNum"> 57 </span> : * Rebuild the vocabulary index
-<span class="lineNum"> 58 </span> : * @param vocfname
-<span class="lineNum"> 59 </span> : * Full pathname of the merged vocabulary to create
-<span class="lineNum"> 60 </span> : * @param idxfname
-<span class="lineNum"> 61 </span> : * Full pathname of the vocabulary index to create
-<span class="lineNum"> 62 </span> : */
-<span class="lineNum"> 63 </span> : bool rebuild(const std::string&amp; vocfname, const std::string&amp; idxfname);
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : /**
-<span class="lineNum"> 66 </span> : * Rebuild the vocabulary if needed
-<span class="lineNum"> 67 </span> : */
-<span class="lineNum"> 68 </span> : bool rebuildIfNeeded();
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span> : /**
-<span class="lineNum"> 71 </span> : * Get the names of the merged vocabulary and vocabulary index that can be
-<span class="lineNum"> 72 </span> : * used to access Debtags vocabulary data.
-<span class="lineNum"> 73 </span> : *
-<span class="lineNum"> 74 </span> : * The system or the user index will be returned according to which one is
-<span class="lineNum"> 75 </span> : * up to date.
-<span class="lineNum"> 76 </span> : */
-<span class="lineNum"> 77 </span> : bool getUpToDateVocabulary(std::string&amp; vocfname, std::string&amp; idxfname);
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : /**
-<span class="lineNum"> 80 </span> : * Returns true if the index in the user home directory is redundant and
-<span class="lineNum"> 81 </span> : * can be deleted.
-<span class="lineNum"> 82 </span> : *
-<span class="lineNum"> 83 </span> : * The user index is redundant if the system index is up to date.
-<span class="lineNum"> 84 </span> : */
-<span class="lineNum"> 85 </span> : bool userIndexIsRedundant() const;
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span> : /**
-<span class="lineNum"> 88 </span> : * Deletes the user index if it is redundant
-<span class="lineNum"> 89 </span> : */
-<span class="lineNum"> 90 </span> : bool deleteRedundantUserIndex();
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span> : /**
-<span class="lineNum"> 93 </span> : * Rescan the various timestamps
-<span class="lineNum"> 94 </span> : */
-<span class="lineNum"> 95 </span> : void rescan();
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span> : VocabularyIndexer();
-<span class="lineNum"> 98 </span> :
-<span class="lineNum"> 99 </span> : /**
-<span class="lineNum"> 100 </span> : * Get the names of the merged vocabulary and vocabulary index that can be
-<span class="lineNum"> 101 </span> : * used to access Debtags vocabulary data.
-<span class="lineNum"> 102 </span> : *
-<span class="lineNum"> 103 </span> : * The system or the user index will be returned according to which one is
-<span class="lineNum"> 104 </span> : * up to date.
-<span class="lineNum"> 105 </span> : *
-<span class="lineNum"> 106 </span> : * The files will be built or rebuilt if they are missing or outdated.
-<span class="lineNum"> 107 </span> : */
-<span class="lineNum"> 108 </span> : static bool obtainWorkingVocabulary(std::string&amp; vocfname, std::string&amp; idxfname);
-<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> :
-<span class="lineNum"> 115 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 116 </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>
diff --git a/rep/ept/debtags/maint/vocabularymerger.cc.gcov.html b/rep/ept/debtags/maint/vocabularymerger.cc.gcov.html
deleted file mode 100644
index 71763e0..0000000
--- a/rep/ept/debtags/maint/vocabularymerger.cc.gcov.html
+++ /dev/null
@@ -1,453 +0,0 @@
-<!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/debtags/maint/vocabularymerger.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - vocabularymerger.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">181</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">81.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">147</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> : /*
-<span class="lineNum"> 2 </span> : * Merge different vocabularies together and create the tag and facet indexes
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003-2006 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/maint/vocabularymerger.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/maint/debdbparser.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;cassert&gt;
-<span class="lineNum"> 26 </span> : #include &lt;cstring&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : using namespace std;
-<span class="lineNum"> 29 </span> : using namespace tagcoll;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace debtags {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span><span class="lineCov"> 1432 : static void writeDebStyleField(FILE* out, const string&amp; name, const string&amp; val) throw ()</span>
-<span class="lineNum"> 35 </span> : {
-<span class="lineNum"> 36 </span><span class="lineCov"> 1432 : fprintf(out, &quot;%s: &quot;, name.c_str());</span>
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : // Properly escape newlines
-<span class="lineNum"> 39 </span><span class="lineCov"> 1432 : bool was_nl = false;</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 56225 : for (string::const_iterator s = val.begin(); s != val.end(); s++)</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 54793 : if (was_nl)</span>
-<span class="lineNum"> 42 </span> : // \n\n -&gt; \n .\n
-<span class="lineNum"> 43 </span><span class="lineCov"> 738 : if (*s == '\n')</span>
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span><span class="lineCov"> 120 : fputc(' ', out);</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 120 : fputc('.', out);</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 120 : fputc(*s, out);</span>
-<span class="lineNum"> 48 </span> : }
-<span class="lineNum"> 49 </span> : // \n([^ \t]) -&gt; \n \1
-<span class="lineNum"> 50 </span><span class="lineCov"> 618 : else if (*s != ' ' &amp;&amp; *s != '\t')</span>
-<span class="lineNum"> 51 </span> : {
-<span class="lineNum"> 52 </span><span class="lineCov"> 618 : fputc(' ', out);</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 618 : fputc(*s, out);</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 618 : was_nl = false;</span>
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> : // \n[ \t] goes unchanged
-<span class="lineNum"> 57 </span> : else
-<span class="lineNum"> 58 </span> : {
-<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : fputc(*s, out);</span>
-<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : was_nl = false;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> : else
-<span class="lineNum"> 63 </span><span class="lineCov"> 54055 : if (*s == '\n')</span>
-<span class="lineNum"> 64 </span> : {
-<span class="lineNum"> 65 </span><span class="lineCov"> 618 : fputc(*s, out);</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 618 : was_nl = true;</span>
-<span class="lineNum"> 67 </span> : }
-<span class="lineNum"> 68 </span> : else
-<span class="lineNum"> 69 </span><span class="lineCov"> 53437 : fputc(*s, out);</span>
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span><span class="lineCov"> 1432 : fputc('\n', out);</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 1432 : }</span>
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span><span class="lineCov"> 1865 : VocabularyMerger::TagData&amp; VocabularyMerger::FacetData::obtainTag(const std::string&amp; name)</span>
-<span class="lineNum"> 75 </span> : {
-<span class="lineNum"> 76 </span><span class="lineCov"> 1865 : std::map&lt;std::string, TagData&gt;::iterator i = tags.find(name);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1865 : if (i == tags.end())</span>
-<span class="lineNum"> 78 </span> : {
-<span class="lineNum"> 79 </span> : // Create the tag if it's missing
-<span class="lineNum"> 80 </span><span class="lineCov"> 1245 : pair&lt;std::map&lt;std::string, TagData&gt;::iterator, bool&gt; res = tags.insert(make_pair&lt;std::string, TagData&gt;(name, TagData()));</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 1245 : i = res.first;</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1245 : i-&gt;second.name = name;</span>
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span><span class="lineCov"> 1865 : return i-&gt;second;</span>
-<span class="lineNum"> 85 </span> : }
-<span class="lineNum"> 86 </span> :
-<span class="lineNum"> 87 </span><span class="lineCov"> 1953 : VocabularyMerger::FacetData&amp; VocabularyMerger::obtainFacet(const std::string&amp; name)</span>
-<span class="lineNum"> 88 </span> : {
-<span class="lineNum"> 89 </span><span class="lineCov"> 1953 : std::map&lt;std::string, FacetData&gt;::iterator i = facets.find(name);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1953 : if (i == facets.end())</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span> : // Create the facet if it's missing
-<span class="lineNum"> 93 </span><span class="lineCov"> 62 : pair&lt;std::map&lt;std::string, FacetData&gt;::iterator, bool&gt; res = facets.insert(make_pair&lt;std::string, FacetData&gt;(name, FacetData()));</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 62 : i = res.first;</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 62 : i-&gt;second.name = name;</span>
-<span class="lineNum"> 96 </span> : }
-<span class="lineNum"> 97 </span><span class="lineCov"> 1953 : return i-&gt;second;</span>
-<span class="lineNum"> 98 </span> : }
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span><span class="lineCov"> 1865 : VocabularyMerger::TagData&amp; VocabularyMerger::obtainTag(const std::string&amp; fullname)</span>
-<span class="lineNum"> 101 </span> : {
-<span class="lineNum"> 102 </span><span class="lineCov"> 1865 : size_t p = fullname.find(&quot;::&quot;);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 1865 : if (p == string::npos)</span>
-<span class="lineNum"> 104 </span> : {
-<span class="lineNum"> 105 </span><span class="lineCov"> 28 : FacetData&amp; facet = obtainFacet(&quot;legacy&quot;);</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 28 : return facet.obtainTag(fullname);</span>
-<span class="lineNum"> 107 </span> : } else {
-<span class="lineNum"> 108 </span><span class="lineCov"> 1837 : FacetData&amp; facet = obtainFacet(fullname.substr(0, p));</span>
-<span class="lineNum"> 109 </span><span class="lineCov"> 3674 : return facet.obtainTag(fullname.substr(p + 2));</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><span class="lineCov"> 7 : void VocabularyMerger::read(tagcoll::input::Input&amp; input)</span>
-<span class="lineNum"> 115 </span> : {
-<span class="lineNum"> 116 </span><span class="lineCov"> 7 : DebDBParser parser(input);</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 7 : DebDBParser::Record record;</span>
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span><span class="lineCov"> 1967 : while (parser.nextRecord(record))</span>
-<span class="lineNum"> 120 </span> : {
-<span class="lineNum"> 121 </span><span class="lineCov"> 1953 : DebDBParser::Record::const_iterator fi = record.find(&quot;Facet&quot;);</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 3906 : DebDBParser::Record::const_iterator ti = record.find(&quot;Tag&quot;);</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 3906 : if (fi != record.end())</span>
-<span class="lineNum"> 124 </span> : {
-<span class="lineNum"> 125 </span> : // Get the facet record
-<span class="lineNum"> 126 </span><span class="lineCov"> 88 : FacetData&amp; facet = obtainFacet(fi-&gt;second);</span>
-<span class="lineNum"> 127 </span> : //fprintf(stderr, &quot;Read facet@%d %.*s\n&quot;, parser.lineNumber(), PFSTR(facet.name));
-<span class="lineNum"> 128 </span><span class="lineCov"> 88 : assert(facet.name == fi-&gt;second);</span>
-<span class="lineNum"> 129 </span> :
-<span class="lineNum"> 130 </span> : // Merge the data
-<span class="lineNum"> 131 </span><span class="lineCov"> 416 : for (DebDBParser::Record::const_iterator i = record.begin();</span>
-<span class="lineNum"> 132 </span> : i != record.end(); i++)
-<span class="lineNum"> 133 </span><span class="lineCov"> 328 : if (i-&gt;first != &quot;Facet&quot;)</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 240 : facet[i-&gt;first] = i-&gt;second;</span>
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span><span class="lineCov"> 1865 : else if (ti != record.end())</span>
-<span class="lineNum"> 137 </span> : {
-<span class="lineNum"> 138 </span> : // Get the tag record
-<span class="lineNum"> 139 </span><span class="lineCov"> 1865 : TagData&amp; tag = obtainTag(ti-&gt;second);</span>
-<span class="lineNum"> 140 </span> : //fprintf(stderr, &quot;Read tag@%d %.*s\n&quot;, parser.lineNumber(), PFSTR(tag.name));
-<span class="lineNum"> 141 </span> : //assert(tag.name == ti-&gt;second);
-<span class="lineNum"> 142 </span> :
-<span class="lineNum"> 143 </span> : // Merge the data
-<span class="lineNum"> 144 </span><span class="lineCov"> 5796 : for (DebDBParser::Record::const_iterator i = record.begin();</span>
-<span class="lineNum"> 145 </span> : i != record.end(); i++)
-<span class="lineNum"> 146 </span><span class="lineCov"> 3931 : if (i-&gt;first != &quot;Tag&quot;)</span>
-<span class="lineNum"> 147 </span><span class="lineCov"> 2066 : tag[i-&gt;first] = i-&gt;second;</span>
-<span class="lineNum"> 148 </span> : }
-<span class="lineNum"> 149 </span> : else
-<span class="lineNum"> 150 </span> : {
-<span class="lineNum"> 151 </span> : fprintf(stderr, &quot;%s:%d: Skipping record without Tag or Facet field\n&quot;,
-<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : input.fileName().c_str(), input.lineNumber());</span>
-<span class="lineNum"> 153 </span> : }
-<span class="lineNum"> 154 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 155 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 156 </span> :
-<span class="lineNum"> 157 </span><span class="lineNoCov"> 0 : bool VocabularyMerger::hasTag(const std::string&amp; fullname) const</span>
-<span class="lineNum"> 158 </span> : {
-<span class="lineNum"> 159 </span><span class="lineNoCov"> 0 : size_t p = fullname.find(&quot;::&quot;);</span>
-<span class="lineNum"> 160 </span><span class="lineNoCov"> 0 : std::string facetName;</span>
-<span class="lineNum"> 161 </span><span class="lineNoCov"> 0 : std::string tagName;</span>
-<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : if (p == string::npos)</span>
-<span class="lineNum"> 163 </span> : {
-<span class="lineNum"> 164 </span><span class="lineNoCov"> 0 : facetName = &quot;legacy&quot;;</span>
-<span class="lineNum"> 165 </span><span class="lineNoCov"> 0 : tagName = fullname;</span>
-<span class="lineNum"> 166 </span> : } else {
-<span class="lineNum"> 167 </span><span class="lineNoCov"> 0 : facetName = fullname.substr(0, p);</span>
-<span class="lineNum"> 168 </span><span class="lineNoCov"> 0 : tagName = fullname.substr(p + 2);</span>
-<span class="lineNum"> 169 </span> : }
-<span class="lineNum"> 170 </span> :
-<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : std::map&lt;std::string, FacetData&gt;::const_iterator i = facets.find(facetName);</span>
-<span class="lineNum"> 172 </span><span class="lineNoCov"> 0 : if (i == facets.end())</span>
-<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : return i-&gt;second.tags.find(tagName) != i-&gt;second.tags.end();</span>
-<span class="lineNum"> 175 </span> : }
-<span class="lineNum"> 176 </span> :
-<span class="lineNum"> 177 </span><span class="lineNoCov"> 0 : int VocabularyMerger::tagID(const std::string&amp; fullname) const</span>
-<span class="lineNum"> 178 </span> : {
-<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : size_t p = fullname.find(&quot;::&quot;);</span>
-<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : std::string facetName;</span>
-<span class="lineNum"> 181 </span><span class="lineNoCov"> 0 : std::string tagName;</span>
-<span class="lineNum"> 182 </span><span class="lineNoCov"> 0 : if (p == string::npos)</span>
-<span class="lineNum"> 183 </span> : {
-<span class="lineNum"> 184 </span><span class="lineNoCov"> 0 : facetName = &quot;legacy&quot;;</span>
-<span class="lineNum"> 185 </span><span class="lineNoCov"> 0 : tagName = fullname;</span>
-<span class="lineNum"> 186 </span> : } else {
-<span class="lineNum"> 187 </span><span class="lineNoCov"> 0 : facetName = fullname.substr(0, p);</span>
-<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : tagName = fullname.substr(p + 2);</span>
-<span class="lineNum"> 189 </span> : }
-<span class="lineNum"> 190 </span> :
-<span class="lineNum"> 191 </span><span class="lineNoCov"> 0 : std::map&lt;std::string, FacetData&gt;::const_iterator i = facets.find(facetName);</span>
-<span class="lineNum"> 192 </span><span class="lineNoCov"> 0 : if (i == facets.end())</span>
-<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : return -1;</span>
-<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : std::map&lt;std::string, TagData&gt;::const_iterator j = i-&gt;second.tags.find(tagName);</span>
-<span class="lineNum"> 195 </span><span class="lineNoCov"> 0 : if (j == i-&gt;second.tags.end())</span>
-<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : return -1;</span>
-<span class="lineNum"> 197 </span><span class="lineNoCov"> 0 : return j-&gt;second.id;</span>
-<span class="lineNum"> 198 </span> : }
-<span class="lineNum"> 199 </span> :
-<span class="lineNum"> 200 </span><span class="lineCov"> 1 : std::set&lt;std::string&gt; VocabularyMerger::tagNames() const</span>
-<span class="lineNum"> 201 </span> : {
-<span class="lineNum"> 202 </span><span class="lineCov"> 1 : set&lt;string&gt; res;</span>
-<span class="lineNum"> 203 </span><span class="lineCov"> 30 : for (std::map&lt;std::string, FacetData&gt;::const_iterator f = facets.begin(); f != facets.end(); f++)</span>
-<span class="lineNum"> 204 </span><span class="lineCov"> 649 : for (std::map&lt;std::string, TagData&gt;::const_iterator t = f-&gt;second.tags.begin();</span>
-<span class="lineNum"> 205 </span> : t != f-&gt;second.tags.end(); t++)
-<span class="lineNum"> 206 </span><span class="lineCov"> 620 : res.insert(f-&gt;first + &quot;::&quot; + t-&gt;first);</span>
-<span class="lineNum"> 207 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 208 </span> : }
-<span class="lineNum"> 209 </span> :
-<span class="lineNum"> 210 </span><span class="lineCov"> 4 : void VocabularyMerger::write(const std::string&amp; fname)</span>
-<span class="lineNum"> 211 </span> : {
-<span class="lineNum"> 212 </span><span class="lineCov"> 4 : FILE* out = fopen(fname.c_str(), &quot;wt&quot;);</span>
-<span class="lineNum"> 213 </span><span class="lineCov"> 4 : if (!out)</span>
-<span class="lineNum"> 214 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(fname, &quot;cept_debtags_vocabularymerger:reating file &quot;);</span>
-<span class="lineNum"> 215 </span><span class="lineCov"> 4 : write(out);</span>
-<span class="lineNum"> 216 </span><span class="lineCov"> 4 : fclose(out);</span>
-<span class="lineNum"> 217 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 218 </span> :
-<span class="lineNum"> 219 </span><span class="lineCov"> 4 : void VocabularyMerger::write(FILE* out)</span>
-<span class="lineNum"> 220 </span> : {
-<span class="lineNum"> 221 </span><span class="lineCov"> 4 : long start_ofs = ftell(out);</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 4 : int facetid = 0;</span>
-<span class="lineNum"> 223 </span><span class="lineCov"> 4 : int tagid = 0;</span>
-<span class="lineNum"> 224 </span> :
-<span class="lineNum"> 225 </span> : //fprintf(stderr, &quot;Write\n&quot;);
-<span class="lineNum"> 226 </span><span class="lineCov"> 37 : for (std::map&lt;std::string, FacetData&gt;::iterator f = facets.begin(); f != facets.end(); f++)</span>
-<span class="lineNum"> 227 </span> : {
-<span class="lineNum"> 228 </span><span class="lineCov"> 33 : f-&gt;second.id = facetid++;</span>
-<span class="lineNum"> 229 </span> : //fprintf(stderr, &quot;Writing facet %.*s\n&quot;, PFSTR(f-&gt;first));
-<span class="lineNum"> 230 </span><span class="lineCov"> 33 : f-&gt;second.ofs = ftell(out) - start_ofs;</span>
-<span class="lineNum"> 231 </span><span class="lineCov"> 33 : writeDebStyleField(out, &quot;Facet&quot;, f-&gt;first);</span>
-<span class="lineNum"> 232 </span><span class="lineCov"> 115 : for (std::map&lt;std::string, std::string&gt;::const_iterator j = f-&gt;second.begin();</span>
-<span class="lineNum"> 233 </span> : j != f-&gt;second.end(); j++)
-<span class="lineNum"> 234 </span><span class="lineCov"> 82 : writeDebStyleField(out, j-&gt;first, j-&gt;second);</span>
-<span class="lineNum"> 235 </span><span class="lineCov"> 33 : fputc('\n', out);</span>
-<span class="lineNum"> 236 </span><span class="lineCov"> 33 : f-&gt;second.len = ftell(out) - f-&gt;second.ofs;</span>
-<span class="lineNum"> 237 </span> :
-<span class="lineNum"> 238 </span><span class="lineCov"> 658 : for (std::map&lt;std::string, TagData&gt;::iterator t = f-&gt;second.tags.begin();</span>
-<span class="lineNum"> 239 </span> : t != f-&gt;second.tags.end(); t++)
-<span class="lineNum"> 240 </span> : {
-<span class="lineNum"> 241 </span><span class="lineCov"> 625 : t-&gt;second.id = tagid++;</span>
-<span class="lineNum"> 242 </span> : //fprintf(stderr, &quot;Writing tag %.*s\n&quot;, PFSTR(t-&gt;first));
-<span class="lineNum"> 243 </span><span class="lineCov"> 625 : t-&gt;second.ofs = ftell(out) - start_ofs;</span>
-<span class="lineNum"> 244 </span><span class="lineCov"> 625 : writeDebStyleField(out, &quot;Tag&quot;, f-&gt;first + &quot;::&quot; + t-&gt;first);</span>
-<span class="lineNum"> 245 </span><span class="lineCov"> 1317 : for (std::map&lt;std::string, std::string&gt;::const_iterator j = t-&gt;second.begin();</span>
-<span class="lineNum"> 246 </span> : j != t-&gt;second.end(); j++)
-<span class="lineNum"> 247 </span><span class="lineCov"> 692 : writeDebStyleField(out, j-&gt;first, j-&gt;second);</span>
-<span class="lineNum"> 248 </span><span class="lineCov"> 625 : fputc('\n', out);</span>
-<span class="lineNum"> 249 </span><span class="lineCov"> 625 : t-&gt;second.len = ftell(out) - t-&gt;second.ofs;</span>
-<span class="lineNum"> 250 </span> : }
-<span class="lineNum"> 251 </span> : }
-<span class="lineNum"> 252 </span> :
-<span class="lineNum"> 253 </span><span class="lineCov"> 4 : tagCount = tagid;</span>
-<span class="lineNum"> 254 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 255 </span> :
-<span class="lineNum"> 256 </span> :
-<span class="lineNum"> 257 </span><span class="lineCov"> 4 : int VocabularyMerger::FacetIndexer::encodedSize() const </span>
-<span class="lineNum"> 258 </span> : {
-<span class="lineNum"> 259 </span> : // First the main offset table
-<span class="lineNum"> 260 </span><span class="lineCov"> 4 : int size = vm.facets.size() * sizeof(int);</span>
-<span class="lineNum"> 261 </span> :
-<span class="lineNum"> 262 </span><span class="lineCov"> 37 : for (std::map&lt;std::string, FacetData&gt;::const_iterator f = vm.facets.begin(); f != vm.facets.end(); f++)</span>
-<span class="lineNum"> 263 </span> : {
-<span class="lineNum"> 264 </span> : // offset of record in vocabulary
-<span class="lineNum"> 265 </span> : // size of record in vocabulary
-<span class="lineNum"> 266 </span> : // id of first tag
-<span class="lineNum"> 267 </span> : // id of last tag
-<span class="lineNum"> 268 </span> : // name (0-terminated)
-<span class="lineNum"> 269 </span><span class="lineCov"> 33 : size += 4 * sizeof(int) + f-&gt;first.size() + 1;</span>
-<span class="lineNum"> 270 </span> :
-<span class="lineNum"> 271 </span> : // Align to int boundaries
-<span class="lineNum"> 272 </span><span class="lineCov"> 33 : if ((size % sizeof(int)) != 0)</span>
-<span class="lineNum"> 273 </span><span class="lineCov"> 25 : size = (size + sizeof(int)) / sizeof(int) * sizeof(int);</span>
-<span class="lineNum"> 274 </span> : }
-<span class="lineNum"> 275 </span> :
-<span class="lineNum"> 276 </span><span class="lineCov"> 4 : return tagcoll::diskindex::MMap::align(size);</span>
-<span class="lineNum"> 277 </span> : }
-<span class="lineNum"> 278 </span> :
-<span class="lineNum"> 279 </span><span class="lineCov"> 4 : void VocabularyMerger::FacetIndexer::encode(char* buf) const </span>
-<span class="lineNum"> 280 </span> : {
-<span class="lineNum"> 281 </span><span class="lineCov"> 4 : int pos = vm.facets.size() * sizeof(int);</span>
-<span class="lineNum"> 282 </span> :
-<span class="lineNum"> 283 </span><span class="lineCov"> 37 : for (std::map&lt;std::string, FacetData&gt;::const_iterator f = vm.facets.begin(); f != vm.facets.end(); f++)</span>
-<span class="lineNum"> 284 </span> : {
-<span class="lineNum"> 285 </span><span class="lineCov"> 33 : ((int*)buf)[f-&gt;second.id] = pos;</span>
-<span class="lineNum"> 286 </span> :
-<span class="lineNum"> 287 </span> : // offset of record in vocabulary
-<span class="lineNum"> 288 </span><span class="lineCov"> 33 : *(int*)(buf+pos) = f-&gt;second.ofs;</span>
-<span class="lineNum"> 289 </span><span class="lineCov"> 33 : pos += sizeof(int);</span>
-<span class="lineNum"> 290 </span> :
-<span class="lineNum"> 291 </span> : // size of record in vocabulary
-<span class="lineNum"> 292 </span><span class="lineCov"> 33 : *(int*)(buf+pos) = f-&gt;second.len;</span>
-<span class="lineNum"> 293 </span><span class="lineCov"> 33 : pos += sizeof(int);</span>
-<span class="lineNum"> 294 </span> :
-<span class="lineNum"> 295 </span><span class="lineCov"> 33 : if (f-&gt;second.tags.empty())</span>
-<span class="lineNum"> 296 </span> : {
-<span class="lineNum"> 297 </span> : // id of first tag
-<span class="lineNum"> 298 </span><span class="lineCov"> 1 : *(int*)(buf+pos) = -1;</span>
-<span class="lineNum"> 299 </span><span class="lineCov"> 1 : pos += sizeof(int);</span>
-<span class="lineNum"> 300 </span> :
-<span class="lineNum"> 301 </span> : // id of last tag
-<span class="lineNum"> 302 </span><span class="lineCov"> 1 : *(int*)(buf+pos) = -1;</span>
-<span class="lineNum"> 303 </span><span class="lineCov"> 1 : pos += sizeof(int);</span>
-<span class="lineNum"> 304 </span> : } else {
-<span class="lineNum"> 305 </span> : // id of first tag
-<span class="lineNum"> 306 </span><span class="lineCov"> 32 : *(int*)(buf+pos) = f-&gt;second.tags.begin()-&gt;second.id;</span>
-<span class="lineNum"> 307 </span><span class="lineCov"> 32 : pos += sizeof(int);</span>
-<span class="lineNum"> 308 </span> :
-<span class="lineNum"> 309 </span> : // id of last tag
-<span class="lineNum"> 310 </span><span class="lineCov"> 32 : *(int*)(buf+pos) = f-&gt;second.tags.rbegin()-&gt;second.id;</span>
-<span class="lineNum"> 311 </span><span class="lineCov"> 32 : pos += sizeof(int);</span>
-<span class="lineNum"> 312 </span> : }
-<span class="lineNum"> 313 </span> :
-<span class="lineNum"> 314 </span> : // name (0-terminated)
-<span class="lineNum"> 315 </span><span class="lineCov"> 33 : memcpy(buf + pos, f-&gt;first.c_str(), f-&gt;first.size() + 1);</span>
-<span class="lineNum"> 316 </span><span class="lineCov"> 33 : pos += f-&gt;first.size() + 1;</span>
-<span class="lineNum"> 317 </span> :
-<span class="lineNum"> 318 </span> : // Align to int boundaries
-<span class="lineNum"> 319 </span><span class="lineCov"> 33 : if ((pos % sizeof(int)) != 0)</span>
-<span class="lineNum"> 320 </span><span class="lineCov"> 25 : pos = (pos + sizeof(int)) / sizeof(int) * sizeof(int);</span>
-<span class="lineNum"> 321 </span> : }
-<span class="lineNum"> 322 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 323 </span> :
-<span class="lineNum"> 324 </span><span class="lineCov"> 4 : int VocabularyMerger::TagIndexer::encodedSize() const </span>
-<span class="lineNum"> 325 </span> : {
-<span class="lineNum"> 326 </span> : // First the main offset table
-<span class="lineNum"> 327 </span><span class="lineCov"> 4 : int size = vm.tagCount * sizeof(int);</span>
-<span class="lineNum"> 328 </span> :
-<span class="lineNum"> 329 </span><span class="lineCov"> 37 : for (std::map&lt;std::string, FacetData&gt;::const_iterator f = vm.facets.begin(); f != vm.facets.end(); f++)</span>
-<span class="lineNum"> 330 </span> : {
-<span class="lineNum"> 331 </span><span class="lineCov"> 658 : for (std::map&lt;std::string, TagData&gt;::const_iterator t = f-&gt;second.tags.begin();</span>
-<span class="lineNum"> 332 </span> : t != f-&gt;second.tags.end(); t++)
-<span class="lineNum"> 333 </span> : {
-<span class="lineNum"> 334 </span> : // offset of record in vocabulary
-<span class="lineNum"> 335 </span> : // size of record in vocabulary
-<span class="lineNum"> 336 </span> : // id of facet
-<span class="lineNum"> 337 </span> : // name (0-terminated)
-<span class="lineNum"> 338 </span><span class="lineCov"> 625 : size += 3 * sizeof(int) + f-&gt;first.size() + t-&gt;first.size() + 3;</span>
-<span class="lineNum"> 339 </span> :
-<span class="lineNum"> 340 </span> : // Align to int boundaries
-<span class="lineNum"> 341 </span><span class="lineCov"> 625 : if ((size % sizeof(int)) != 0)</span>
-<span class="lineNum"> 342 </span><span class="lineCov"> 479 : size = (size + sizeof(int)) / sizeof(int) * sizeof(int);</span>
-<span class="lineNum"> 343 </span> : }
-<span class="lineNum"> 344 </span> : }
-<span class="lineNum"> 345 </span><span class="lineCov"> 4 : return tagcoll::diskindex::MMap::align(size);</span>
-<span class="lineNum"> 346 </span> : }
-<span class="lineNum"> 347 </span> :
-<span class="lineNum"> 348 </span><span class="lineCov"> 4 : void VocabularyMerger::TagIndexer::encode(char* buf) const </span>
-<span class="lineNum"> 349 </span> : {
-<span class="lineNum"> 350 </span><span class="lineCov"> 4 : int pos = vm.tagCount * sizeof(int);</span>
-<span class="lineNum"> 351 </span> :
-<span class="lineNum"> 352 </span><span class="lineCov"> 37 : for (std::map&lt;std::string, FacetData&gt;::const_iterator f = vm.facets.begin(); f != vm.facets.end(); f++)</span>
-<span class="lineNum"> 353 </span> : {
-<span class="lineNum"> 354 </span><span class="lineCov"> 658 : for (std::map&lt;std::string, TagData&gt;::const_iterator t = f-&gt;second.tags.begin();</span>
-<span class="lineNum"> 355 </span> : t != f-&gt;second.tags.end(); t++)
-<span class="lineNum"> 356 </span> : {
-<span class="lineNum"> 357 </span><span class="lineCov"> 625 : ((int*)buf)[t-&gt;second.id] = pos;</span>
-<span class="lineNum"> 358 </span> :
-<span class="lineNum"> 359 </span> : // offset of record in vocabulary
-<span class="lineNum"> 360 </span><span class="lineCov"> 625 : *(int*)(buf+pos) = t-&gt;second.ofs;</span>
-<span class="lineNum"> 361 </span><span class="lineCov"> 625 : pos += sizeof(int);</span>
-<span class="lineNum"> 362 </span> :
-<span class="lineNum"> 363 </span> : // size of record in vocabulary
-<span class="lineNum"> 364 </span><span class="lineCov"> 625 : *(int*)(buf+pos) = t-&gt;second.len;</span>
-<span class="lineNum"> 365 </span><span class="lineCov"> 625 : pos += sizeof(int);</span>
-<span class="lineNum"> 366 </span> :
-<span class="lineNum"> 367 </span> : // id of facet
-<span class="lineNum"> 368 </span><span class="lineCov"> 625 : *(int*)(buf+pos) = f-&gt;second.id;</span>
-<span class="lineNum"> 369 </span><span class="lineCov"> 625 : pos += sizeof(int);</span>
-<span class="lineNum"> 370 </span> :
-<span class="lineNum"> 371 </span> : // name (0-terminated)
-<span class="lineNum"> 372 </span><span class="lineCov"> 625 : string name = f-&gt;first + &quot;::&quot; + t-&gt;first;</span>
-<span class="lineNum"> 373 </span><span class="lineCov"> 625 : memcpy(buf + pos, name.c_str(), name.size() + 1);</span>
-<span class="lineNum"> 374 </span><span class="lineCov"> 625 : pos += name.size() + 1;</span>
-<span class="lineNum"> 375 </span> :
-<span class="lineNum"> 376 </span> : // Align to int boundaries
-<span class="lineNum"> 377 </span><span class="lineCov"> 625 : if ((pos % sizeof(int)) != 0)</span>
-<span class="lineNum"> 378 </span><span class="lineCov"> 479 : pos = (pos + sizeof(int)) / sizeof(int) * sizeof(int);</span>
-<span class="lineNum"> 379 </span> : }
-<span class="lineNum"> 380 </span> : }
-<span class="lineNum"> 381 </span><span class="lineCov"> 4 : }</span>
-<span class="lineNum"> 382 </span> :
-<span class="lineNum"> 383 </span> : }
-<span class="lineNum"> 384 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 385 </span> :
-<span class="lineNum"> 386 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/maint/vocabularymerger.h.gcov.html b/rep/ept/debtags/maint/vocabularymerger.h.gcov.html
deleted file mode 100644
index da02c28..0000000
--- a/rep/ept/debtags/maint/vocabularymerger.h.gcov.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!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/debtags/maint/vocabularymerger.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - vocabularymerger.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">13</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">13</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> : /*
-<span class="lineNum"> 2 </span> : * Merge different vocabularies together and create the tag and facet indexes
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;tagcoll/diskindex/mmap.h&gt;
-<span class="lineNum"> 22 </span> : #include &lt;tagcoll/input/base.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;string&gt;
-<span class="lineNum"> 24 </span> : #include &lt;map&gt;
-<span class="lineNum"> 25 </span> : #include &lt;set&gt;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #ifndef EPT_DEBTAGS_VOCABULARYMERGER_H
-<span class="lineNum"> 28 </span> : #define EPT_DEBTAGS_VOCABULARYMERGER_H
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace debtags {
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : class VocabularyMerger
-<span class="lineNum"> 34 </span><span class="lineCov"> 7 : {</span>
-<span class="lineNum"> 35 </span> : protected:
-<span class="lineNum"> 36 </span> : class FacetIndexer : public tagcoll::diskindex::MMapIndexer
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span> : protected:
-<span class="lineNum"> 39 </span> : VocabularyMerger&amp; vm;
-<span class="lineNum"> 40 </span> : public:
-<span class="lineNum"> 41 </span><span class="lineCov"> 7 : FacetIndexer(VocabularyMerger&amp; vm) : vm(vm) {}</span>
-<span class="lineNum"> 42 </span><span class="lineCov"> 7 : virtual ~FacetIndexer() {}</span>
-<span class="lineNum"> 43 </span> : virtual int encodedSize() const;
-<span class="lineNum"> 44 </span> : virtual void encode(char* buf) const;
-<span class="lineNum"> 45 </span> : };
-<span class="lineNum"> 46 </span> : class TagIndexer : public tagcoll::diskindex::MMapIndexer
-<span class="lineNum"> 47 </span> : {
-<span class="lineNum"> 48 </span> : protected:
-<span class="lineNum"> 49 </span> : VocabularyMerger&amp; vm;
-<span class="lineNum"> 50 </span> : public:
-<span class="lineNum"> 51 </span><span class="lineCov"> 7 : TagIndexer(VocabularyMerger&amp; vm) : vm(vm) {}</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 7 : virtual ~TagIndexer() {}</span>
-<span class="lineNum"> 53 </span> : virtual int encodedSize() const;
-<span class="lineNum"> 54 </span> : virtual void encode(char* buf) const;
-<span class="lineNum"> 55 </span> : };
-<span class="lineNum"> 56 </span> : class TagData : public std::map&lt;std::string, std::string&gt;
-<span class="lineNum"> 57 </span><span class="lineCov"> 8715 : {</span>
-<span class="lineNum"> 58 </span> : public:
-<span class="lineNum"> 59 </span> : std::string name;
-<span class="lineNum"> 60 </span> : // Offset in the last written file (used for indexing)
-<span class="lineNum"> 61 </span> : long ofs;
-<span class="lineNum"> 62 </span> : int len;
-<span class="lineNum"> 63 </span> : int id;
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span><span class="lineCov"> 1245 : TagData() : ofs(0), len(0) {}</span>
-<span class="lineNum"> 66 </span> : };
-<span class="lineNum"> 67 </span> : class FacetData : public std::map&lt;std::string, std::string&gt;
-<span class="lineNum"> 68 </span><span class="lineCov"> 434 : {</span>
-<span class="lineNum"> 69 </span> : public:
-<span class="lineNum"> 70 </span> : std::string name;
-<span class="lineNum"> 71 </span> : std::map&lt;std::string, TagData&gt; tags;
-<span class="lineNum"> 72 </span> : // Offset in the last written file (used for indexing)
-<span class="lineNum"> 73 </span> : long ofs;
-<span class="lineNum"> 74 </span> : int len;
-<span class="lineNum"> 75 </span> : int id;
-<span class="lineNum"> 76 </span> :
-<span class="lineNum"> 77 </span><span class="lineCov"> 62 : FacetData() : ofs(0), len(0) {}</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : TagData&amp; obtainTag(const std::string&amp; fullname);
-<span class="lineNum"> 80 </span> : };
-<span class="lineNum"> 81 </span> : std::map&lt;std::string, FacetData&gt; facets;
-<span class="lineNum"> 82 </span> : int tagCount;
-<span class="lineNum"> 83 </span> : FacetIndexer findexer;
-<span class="lineNum"> 84 </span> : TagIndexer tindexer;
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span> : FacetData&amp; obtainFacet(const std::string&amp; name);
-<span class="lineNum"> 87 </span> : TagData&amp; obtainTag(const std::string&amp; fullname);
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : public:
-<span class="lineNum"> 90 </span><span class="lineCov"> 7 : VocabularyMerger() : tagCount(0), findexer(*this), tindexer(*this) {}</span>
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span> : /**
-<span class="lineNum"> 93 </span> : * Check if there is any data in the merged vocabulary
-<span class="lineNum"> 94 </span> : */
-<span class="lineNum"> 95 </span><span class="lineCov"> 3 : bool empty() const { return facets.empty(); }</span>
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span> : /**
-<span class="lineNum"> 98 </span> : * Parse and import the vocabulary from `input', merging the data with the
-<span class="lineNum"> 99 </span> : * previously imported ones
-<span class="lineNum"> 100 </span> : */
-<span class="lineNum"> 101 </span> : void read(tagcoll::input::Input&amp; input);
-<span class="lineNum"> 102 </span> :
-<span class="lineNum"> 103 </span> : /**
-<span class="lineNum"> 104 </span> : * Write the vocabulary data to the given file
-<span class="lineNum"> 105 </span> : */
-<span class="lineNum"> 106 </span> : void write(const std::string&amp; fname);
-<span class="lineNum"> 107 </span> :
-<span class="lineNum"> 108 </span> : /**
-<span class="lineNum"> 109 </span> : * Write the vocabulary data to the given output stream
-<span class="lineNum"> 110 </span> : */
-<span class="lineNum"> 111 </span> : void write(FILE* out);
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : /**
-<span class="lineNum"> 114 </span> : * Get the facet indexer.
-<span class="lineNum"> 115 </span> : *
-<span class="lineNum"> 116 </span> : * Note: the indexers will only be functional after one of the write
-<span class="lineNum"> 117 </span> : * methods have been invoked
-<span class="lineNum"> 118 </span> : */
-<span class="lineNum"> 119 </span><span class="lineCov"> 7 : const tagcoll::diskindex::MMapIndexer&amp; facetIndexer() const { return findexer; }</span>
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span> : /**
-<span class="lineNum"> 122 </span> : * Get the tag indexer.
-<span class="lineNum"> 123 </span> : *
-<span class="lineNum"> 124 </span> : * Note: the indexers will only be functional after one of the write
-<span class="lineNum"> 125 </span> : * methods have been invoked
-<span class="lineNum"> 126 </span> : */
-<span class="lineNum"> 127 </span><span class="lineCov"> 7 : const tagcoll::diskindex::MMapIndexer&amp; tagIndexer() const { return tindexer; }</span>
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span> : /**
-<span class="lineNum"> 130 </span> : * Check if the vocabulary contains the facet `name'
-<span class="lineNum"> 131 </span> : */
-<span class="lineNum"> 132 </span> : bool hasFacet(const std::string&amp; name) const
-<span class="lineNum"> 133 </span> : {
-<span class="lineNum"> 134 </span> : return facets.find(name) != facets.end();
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : /**
-<span class="lineNum"> 138 </span> : * Check if the vocabulary contains the tag `fullname'
-<span class="lineNum"> 139 </span> : */
-<span class="lineNum"> 140 </span> : bool hasTag(const std::string&amp; fullname) const;
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span> : /**
-<span class="lineNum"> 143 </span> : * Return the ID for the given tag (or -1 if not found)
-<span class="lineNum"> 144 </span> : */
-<span class="lineNum"> 145 </span> : int tagID(const std::string&amp; fullname) const;
-<span class="lineNum"> 146 </span> :
-<span class="lineNum"> 147 </span> : /**
-<span class="lineNum"> 148 </span> : * Return a set with all tag names
-<span class="lineNum"> 149 </span> : */
-<span class="lineNum"> 150 </span> : std::set&lt;std::string&gt; tagNames() const;
-<span class="lineNum"> 151 </span> : };
-<span class="lineNum"> 152 </span> :
-<span class="lineNum"> 153 </span> : }
-<span class="lineNum"> 154 </span> : }
-<span class="lineNum"> 155 </span> :
-<span class="lineNum"> 156 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 157 </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>
diff --git a/rep/ept/debtags/maint/vocabularymerger.test.h.gcov.html b/rep/ept/debtags/maint/vocabularymerger.test.h.gcov.html
deleted file mode 100644
index c9315e6..0000000
--- a/rep/ept/debtags/maint/vocabularymerger.test.h.gcov.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!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/debtags/maint/vocabularymerger.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/debtags/maint</a> - vocabularymerger.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">52</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">52</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> : /*
-<span class="lineNum"> 2 </span> : * Merge different vocabularies together and create the tag and facet indexes
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;wibble/test.h&gt;
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/maint/vocabularymerger.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;tagcoll/input/string.h&gt;
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : using namespace std;
-<span class="lineNum"> 26 </span> : using namespace tagcoll;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : struct TestVocabularyMerger {
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span><span class="lineCov"> 14 : inline static const char* indexref(const char* index, int id)</span>
-<span class="lineNum"> 31 </span> : {
-<span class="lineNum"> 32 </span><span class="lineCov"> 14 : return index + ((int*)index)[id];</span>
-<span class="lineNum"> 33 </span> : }
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 1 : Test _1()</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span> : string voc1 =
-<span class="lineNum"> 39 </span> : &quot;Facet: taste\n&quot;
-<span class="lineNum"> 40 </span> : &quot;Description: Taste\n\n&quot;
-<span class="lineNum"> 41 </span> : &quot;Tag: taste::sweet\n&quot;
-<span class="lineNum"> 42 </span> : &quot;Description: Sweet\n\n&quot;
-<span class="lineNum"> 43 </span> : &quot;Tag: taste::salty\n&quot;
-<span class="lineNum"> 44 </span><span class="lineCov"> 1 : &quot;Description: Salty\n\n&quot;;</span>
-<span class="lineNum"> 45 </span> : string voc2 =
-<span class="lineNum"> 46 </span> : &quot;Facet: smell\n&quot;
-<span class="lineNum"> 47 </span> : &quot;Description: Smell\n\n&quot;
-<span class="lineNum"> 48 </span> : &quot;Tag: smell::fresh\n&quot;
-<span class="lineNum"> 49 </span> : &quot;Description: Fresh\n\n&quot;
-<span class="lineNum"> 50 </span> : &quot;Tag: smell::mold\n&quot;
-<span class="lineNum"> 51 </span><span class="lineCov"> 2 : &quot;Description: Mold\n\n&quot;;</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 1 : tagcoll::input::String in1(voc1);</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : tagcoll::input::String in2(voc2);</span>
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : ept::debtags::VocabularyMerger vm;</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : // Read and merge the two vocabulary samples
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : vm.read(in1);</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : vm.read(in2);</span>
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span> : // Write the merged vocabulary to /dev/null (but generate offsets and indexes in the meantime)
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : vm.write(&quot;/dev/null&quot;);</span>
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span> : // Create the facet index
-<span class="lineNum"> 65 </span><span class="lineCov"> 2 : char facetIndex[vm.facetIndexer().encodedSize()];</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 1 : vm.facetIndexer().encode(facetIndex);</span>
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : // Create the tag index
-<span class="lineNum"> 69 </span><span class="lineCov"> 1 : char tagIndex[vm.tagIndexer().encodedSize()];</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : vm.tagIndexer().encode(tagIndex);</span>
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span> : // Check that the facet names have been encoded correctly and in order
-<span class="lineNum"> 73 </span><span class="lineCov"> 1 : assert_eq(string(indexref(facetIndex, 0) + 4*sizeof(int)), &quot;smell&quot;);</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert_eq(string(indexref(facetIndex, 1) + 4*sizeof(int)), &quot;taste&quot;);</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span> : // Check the first and last tag indexes for the facets
-<span class="lineNum"> 77 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(facetIndex, 0))[2], 0);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(facetIndex, 0))[3], 1);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(facetIndex, 1))[2], 2);</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(facetIndex, 1))[3], 3);</span>
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span> : // Check that the tag names have been encoded correctly and in order
-<span class="lineNum"> 83 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 0) + 3*sizeof(int)), &quot;smell::fresh&quot;);</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 1) + 3*sizeof(int)), &quot;smell::mold&quot;);</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 2) + 3*sizeof(int)), &quot;taste::salty&quot;);</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 3) + 3*sizeof(int)), &quot;taste::sweet&quot;);</span>
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : // Check the facet indexes for the tags
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(tagIndex, 0))[2], 0);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(tagIndex, 1))[2], 0);</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(tagIndex, 2))[2], 1);</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert_eq(((int*)indexref(tagIndex, 3))[2], 1);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span> : // Test parsing a vocabulary with a tag without a defined facet
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Test _2()</span>
-<span class="lineNum"> 97 </span> : {
-<span class="lineNum"> 98 </span> : string voc =
-<span class="lineNum"> 99 </span> : &quot;Tag: foo::bar\n&quot;
-<span class="lineNum"> 100 </span> : &quot;Description: Tag without facet\n&quot;
-<span class="lineNum"> 101 </span><span class="lineCov"> 1 : &quot; VocabularyMerged should behave fine in this case.\n\n&quot;;</span>
-<span class="lineNum"> 102 </span><span class="lineCov"> 1 : tagcoll::input::String in(voc);</span>
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span><span class="lineCov"> 1 : ept::debtags::VocabularyMerger vm;</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : vm.read(in);</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : // Write the merged vocabulary to /dev/null (but generate offsets and indexes in the meantime)
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : vm.write(&quot;/dev/null&quot;);</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : // Create the facet index
-<span class="lineNum"> 111 </span><span class="lineCov"> 2 : char facetIndex[vm.facetIndexer().encodedSize()];</span>
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : vm.facetIndexer().encode(facetIndex);</span>
-<span class="lineNum"> 113 </span> :
-<span class="lineNum"> 114 </span> : // Create the tag index
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : char tagIndex[vm.tagIndexer().encodedSize()];</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 1 : vm.tagIndexer().encode(tagIndex);</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : // Test parsing a vocabulary with a facet without tags
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : Test _3()</span>
-<span class="lineNum"> 121 </span> : {
-<span class="lineNum"> 122 </span> : string voc =
-<span class="lineNum"> 123 </span> : &quot;Facet: empty\n&quot;
-<span class="lineNum"> 124 </span> : &quot;Description: Facet without tags\n&quot;
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : &quot; VocabularyMerged used to segfault in this case.\n\n&quot;;</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 1 : tagcoll::input::String in(voc);</span>
-<span class="lineNum"> 127 </span> :
-<span class="lineNum"> 128 </span><span class="lineCov"> 1 : ept::debtags::VocabularyMerger vm;</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : vm.read(in);</span>
-<span class="lineNum"> 130 </span> :
-<span class="lineNum"> 131 </span> : // Write the merged vocabulary to /dev/null (but generate offsets and indexes in the meantime)
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : vm.write(&quot;/dev/null&quot;);</span>
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> : // Create the facet index
-<span class="lineNum"> 135 </span><span class="lineCov"> 2 : char facetIndex[vm.facetIndexer().encodedSize()];</span>
-<span class="lineNum"> 136 </span><span class="lineCov"> 1 : vm.facetIndexer().encode(facetIndex);</span>
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </span> : // Create the tag index
-<span class="lineNum"> 139 </span><span class="lineCov"> 1 : char tagIndex[vm.tagIndexer().encodedSize()];</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : vm.tagIndexer().encode(tagIndex);</span>
-<span class="lineNum"> 141 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 142 </span> :
-<span class="lineNum"> 143 </span> : };
-<span class="lineNum"> 144 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/tag.cc.gcov.html b/rep/ept/debtags/tag.cc.gcov.html
deleted file mode 100644
index 180196e..0000000
--- a/rep/ept/debtags/tag.cc.gcov.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!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/debtags/tag.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - tag.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">59</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">74.6 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">44</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> : * Copyright (C) 2005,2006 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 5 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 6 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 7 </span> : * (at your option) any later version.
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 12 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 15 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 17 </span> : */
-<span class="lineNum"> 18 </span> :
-<span class="lineNum"> 19 </span> : #include &lt;ept/debtags/tag.h&gt;
-<span class="lineNum"> 20 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 21 </span> : #include &lt;stdexcept&gt;
-<span class="lineNum"> 22 </span> :
-<span class="lineNum"> 23 </span> : namespace ept {
-<span class="lineNum"> 24 </span> : namespace debtags {
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : static inline std::string constget(const std::map&lt;std::string, std::string&gt;&amp; m,
-<span class="lineNum"> 27 </span><span class="lineCov"> 3898 : const std::string&amp; key)</span>
-<span class="lineNum"> 28 </span> : {
-<span class="lineNum"> 29 </span><span class="lineCov"> 3898 : std::map&lt;std::string, std::string&gt;::const_iterator i = m.find(key);</span>
-<span class="lineNum"> 30 </span><span class="lineCov"> 3898 : if (i == m.end())</span>
-<span class="lineNum"> 31 </span><span class="lineCov"> 4 : return std::string();</span>
-<span class="lineNum"> 32 </span> : else
-<span class="lineNum"> 33 </span><span class="lineCov"> 3894 : return i-&gt;second;</span>
-<span class="lineNum"> 34 </span> : }
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 59 : std::string Facet::name() const</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span><span class="lineCov"> 59 : if (valid())</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 59 : return m_tags-&gt;facetName(m_id);</span>
-<span class="lineNum"> 40 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No name for this facet&quot; );</span>
-<span class="lineNum"> 41 </span> : }
-<span class="lineNum"> 42 </span><span class="lineCov"> 29 : std::string Facet::name(const std::string&amp; d) const</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span><span class="lineCov"> 29 : return valid() ? m_tags-&gt;facetName(m_id) : d;</span>
-<span class="lineNum"> 45 </span> : }
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 59 : std::string Facet::shortDescription() const</span>
-<span class="lineNum"> 48 </span> : {
-<span class="lineNum"> 49 </span><span class="lineCov"> 59 : if (valid())</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 59 : return constget(m_tags-&gt;facetData(m_id), &quot;_SD_&quot;);</span>
-<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No short description for this facet&quot; );</span>
-<span class="lineNum"> 52 </span> : }
-<span class="lineNum"> 53 </span><span class="lineCov"> 29 : std::string Facet::shortDescription(const std::string&amp; d) const</span>
-<span class="lineNum"> 54 </span> : {
-<span class="lineNum"> 55 </span><span class="lineCov"> 29 : return valid() ? constget(m_tags-&gt;facetData(m_id), &quot;_SD_&quot;) : d;</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span><span class="lineCov"> 59 : std::string Facet::longDescription() const</span>
-<span class="lineNum"> 59 </span> : {
-<span class="lineNum"> 60 </span><span class="lineCov"> 59 : if (valid())</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 59 : return constget(m_tags-&gt;facetData(m_id), &quot;Description&quot;);</span>
-<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No long description for this facet&quot; );</span>
-<span class="lineNum"> 63 </span> : }
-<span class="lineNum"> 64 </span><span class="lineCov"> 29 : std::string Facet::longDescription(const std::string&amp; d) const</span>
-<span class="lineNum"> 65 </span> : {
-<span class="lineNum"> 66 </span><span class="lineCov"> 29 : return valid() ? constget(m_tags-&gt;facetData(m_id), &quot;Description&quot;) : d;</span>
-<span class="lineNum"> 67 </span> : }
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : bool Facet::hasTag(const std::string&amp; name) const</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : if (!valid())</span>
-<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;hasTag() called on an invalid facet&quot; );</span>
-<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : return m_tags-&gt;hasTag(this-&gt;name() + &quot;::&quot; + name);</span>
-<span class="lineNum"> 74 </span> : }
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 89 : std::set&lt; Tag &gt; Facet::tags() const</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineCov"> 89 : if (!valid())</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 1 : throw std::out_of_range( &quot;tags() called on an invalid facet&quot; );</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 88 : return m_tags-&gt;tags(m_id);</span>
-<span class="lineNum"> 81 </span> : }
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : Facet Tag::facet() const</span>
-<span class="lineNum"> 85 </span> : {
-<span class="lineNum"> 86 </span><span class="lineNoCov"> 0 : if (valid())</span>
-<span class="lineNum"> 87 </span><span class="lineNoCov"> 0 : return m_tags-&gt;facetByTag(m_id);</span>
-<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No facet for this tag&quot; );</span>
-<span class="lineNum"> 89 </span> : }
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span><span class="lineCov"> 1243 : std::string Tag::name() const</span>
-<span class="lineNum"> 92 </span> : {
-<span class="lineNum"> 93 </span><span class="lineCov"> 1243 : if (valid())</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 1243 : return m_tags-&gt;tagShortName(m_id);</span>
-<span class="lineNum"> 95 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No name for this tag&quot; );</span>
-<span class="lineNum"> 96 </span> : }
-<span class="lineNum"> 97 </span><span class="lineCov"> 620 : std::string Tag::name(const std::string&amp; d) const</span>
-<span class="lineNum"> 98 </span> : {
-<span class="lineNum"> 99 </span><span class="lineCov"> 620 : return valid() ? m_tags-&gt;tagShortName(m_id) : d;</span>
-<span class="lineNum"> 100 </span> : }
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span><span class="lineCov"> 1284 : std::string Tag::fullname() const</span>
-<span class="lineNum"> 103 </span> : {
-<span class="lineNum"> 104 </span><span class="lineCov"> 1284 : if (valid())</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 1284 : return m_tags-&gt;tagName(m_id);</span>
-<span class="lineNum"> 106 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No full name for this tag&quot; );</span>
-<span class="lineNum"> 107 </span> : }
-<span class="lineNum"> 108 </span><span class="lineCov"> 620 : std::string Tag::fullname(const std::string&amp; d) const</span>
-<span class="lineNum"> 109 </span> : {
-<span class="lineNum"> 110 </span><span class="lineCov"> 620 : return valid() ? m_tags-&gt;tagName(m_id) : d;</span>
-<span class="lineNum"> 111 </span> : }
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span><span class="lineCov"> 1242 : std::string Tag::shortDescription() const</span>
-<span class="lineNum"> 114 </span> : {
-<span class="lineNum"> 115 </span><span class="lineCov"> 1242 : if (valid())</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 1242 : return constget(m_tags-&gt;tagData(m_id), &quot;_SD_&quot;);</span>
-<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No short description for this tag&quot; );</span>
-<span class="lineNum"> 118 </span> : }
-<span class="lineNum"> 119 </span><span class="lineCov"> 620 : std::string Tag::shortDescription(const std::string&amp; d) const</span>
-<span class="lineNum"> 120 </span> : {
-<span class="lineNum"> 121 </span><span class="lineCov"> 620 : return valid() ? constget(m_tags-&gt;tagData(m_id), &quot;_SD_&quot;) : d;</span>
-<span class="lineNum"> 122 </span> : }
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span><span class="lineCov"> 1240 : std::string Tag::longDescription() const</span>
-<span class="lineNum"> 125 </span> : {
-<span class="lineNum"> 126 </span><span class="lineCov"> 1240 : if (valid())</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 1240 : return constget(m_tags-&gt;tagData(m_id), &quot;Description&quot;);</span>
-<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : throw std::out_of_range( &quot;No long description for this tag&quot; );</span>
-<span class="lineNum"> 129 </span> : }
-<span class="lineNum"> 130 </span><span class="lineCov"> 620 : std::string Tag::longDescription(const std::string&amp; d) const</span>
-<span class="lineNum"> 131 </span> : {
-<span class="lineNum"> 132 </span><span class="lineCov"> 620 : return valid() ? constget(m_tags-&gt;tagData(m_id), &quot;Description&quot;) : d;</span>
-<span class="lineNum"> 133 </span> : }
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> : }
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </span> : // vim:set ts=3 sw=3:
-</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>
diff --git a/rep/ept/debtags/tag.h.gcov.html b/rep/ept/debtags/tag.h.gcov.html
deleted file mode 100644
index 0695c3c..0000000
--- a/rep/ept/debtags/tag.h.gcov.html
+++ /dev/null
@@ -1,318 +0,0 @@
-<!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/debtags/tag.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - tag.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">16</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">93.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">15</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> : #ifndef EPT_DEBTAGS_TAG_H
-<span class="lineNum"> 3 </span> : #define EPT_DEBTAGS_TAG_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /** \file
-<span class="lineNum"> 6 </span> : * Debtags facets and tags
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;set&gt;
-<span class="lineNum"> 28 </span> : #include &lt;string&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace debtags {
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : class Vocabulary;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : class Tag;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : /**
-<span class="lineNum"> 38 </span> : * Representation of a facet.
-<span class="lineNum"> 39 </span> : *
-<span class="lineNum"> 40 </span> : * ept::debtags::Facet represents a Facet with all its informations.
-<span class="lineNum"> 41 </span> : * It is guaranteed to have fast value-copy semantics, so it can be passed
-<span class="lineNum"> 42 </span> : * around freely and efficiently without worrying about memory management
-<span class="lineNum"> 43 </span> : * issues.
-<span class="lineNum"> 44 </span> : *
-<span class="lineNum"> 45 </span> : * The class is normally instantiated using a Vocabulary:
-<span class="lineNum"> 46 </span> : * \code
-<span class="lineNum"> 47 </span> : * Facet facet = vocabulary.faceByName(&quot;made-of&quot;);
-<span class="lineNum"> 48 </span> : * \endcode
-<span class="lineNum"> 49 </span> : *
-<span class="lineNum"> 50 </span> : * Facets can contain an &quot;invalid&quot; value, in which case using any of their
-<span class="lineNum"> 51 </span> : * methods will likely produce segfault. The &quot;invalid&quot; facets are useful as
-<span class="lineNum"> 52 </span> : * &quot;none&quot; return values:
-<span class="lineNum"> 53 </span> : *
-<span class="lineNum"> 54 </span> : * \code
-<span class="lineNum"> 55 </span> : * Facet facet = vocabulary.facetByName(&quot;made-of&quot;);
-<span class="lineNum"> 56 </span> : * if (!facet)
-<span class="lineNum"> 57 </span> : * throw SomeException(&quot;facet \&quot;made-of\&quot; has not been defined&quot;);
-<span class="lineNum"> 58 </span> : * \endcode
-<span class="lineNum"> 59 </span> : */
-<span class="lineNum"> 60 </span> : class Facet
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span> : protected:
-<span class="lineNum"> 63 </span> : const Vocabulary* m_tags;
-<span class="lineNum"> 64 </span> : int m_id;
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span><span class="lineCov"> 120 : Facet(const Vocabulary* tags, int id) : m_tags(tags), m_id(id) {}</span>
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : public:
-<span class="lineNum"> 69 </span> : Facet() : m_tags(0), m_id(-1) {}
-<span class="lineNum"> 70 </span><span class="lineCov"> 265 : ~Facet() {}</span>
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineCov"> 29 : bool operator==(const Facet&amp; f) const { return m_id == f.m_id; }</span>
-<span class="lineNum"> 73 </span> : bool operator!=(const Facet&amp; f) const { return m_id != f.m_id; }
-<span class="lineNum"> 74 </span><span class="lineCov"> 600 : bool operator&lt;(const Facet&amp; f) const { return m_id &lt; f.m_id; }</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span> : /**
-<span class="lineNum"> 77 </span> : * Return true if the facet is valid
-<span class="lineNum"> 78 </span> : */
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : operator bool() const { return m_id != -1; }</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 353 : bool valid() const { return m_id != -1; }</span>
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span> : /**
-<span class="lineNum"> 83 </span> : * Return the name of the facet
-<span class="lineNum"> 84 </span> : * @throws std::out_of_range if the facet is not valid
-<span class="lineNum"> 85 </span> : */
-<span class="lineNum"> 86 </span> : std::string name() const;
-<span class="lineNum"> 87 </span> : /**
-<span class="lineNum"> 88 </span> : * Return the name of the facet
-<span class="lineNum"> 89 </span> : *
-<span class="lineNum"> 90 </span> : * Returns d if the facet is not valid.
-<span class="lineNum"> 91 </span> : */
-<span class="lineNum"> 92 </span> : std::string name(const std::string&amp; d) const;
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : /**
-<span class="lineNum"> 95 </span> : * Return the short description of the facet
-<span class="lineNum"> 96 </span> : * @throws std::out_of_range if the facet is not valid
-<span class="lineNum"> 97 </span> : */
-<span class="lineNum"> 98 </span> : std::string shortDescription() const;
-<span class="lineNum"> 99 </span> : /**
-<span class="lineNum"> 100 </span> : * Return the short description of the facet
-<span class="lineNum"> 101 </span> : *
-<span class="lineNum"> 102 </span> : * Returns d if the facet is not valid.
-<span class="lineNum"> 103 </span> : */
-<span class="lineNum"> 104 </span> : std::string shortDescription(const std::string&amp; d) const;
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : /**
-<span class="lineNum"> 107 </span> : * Return the long description of the facet
-<span class="lineNum"> 108 </span> : * @throws std::out_of_range if the facet is not valid
-<span class="lineNum"> 109 </span> : */
-<span class="lineNum"> 110 </span> : std::string longDescription() const;
-<span class="lineNum"> 111 </span> : /**
-<span class="lineNum"> 112 </span> : * Return the long description of the facet
-<span class="lineNum"> 113 </span> : *
-<span class="lineNum"> 114 </span> : * Returns d if the facet is not valid.
-<span class="lineNum"> 115 </span> : */
-<span class="lineNum"> 116 </span> : std::string longDescription(const std::string&amp; d) const;
-<span class="lineNum"> 117 </span> :
-<span class="lineNum"> 118 </span> : /**
-<span class="lineNum"> 119 </span> : * Return true if the facet has a tag with the given name (name, not fullname)
-<span class="lineNum"> 120 </span> : */
-<span class="lineNum"> 121 </span> : bool hasTag(const std::string&amp; name) const;
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : /**
-<span class="lineNum"> 124 </span> : * Return the list of tags in this facet
-<span class="lineNum"> 125 </span> : */
-<span class="lineNum"> 126 </span> : std::set&lt;Tag&gt; tags() const;
-<span class="lineNum"> 127 </span> :
-<span class="lineNum"> 128 </span> : /**
-<span class="lineNum"> 129 </span> : * Return the ID of this facet
-<span class="lineNum"> 130 </span> : *
-<span class="lineNum"> 131 </span> : * @warning This method is exported to help in writing tests, but it is not
-<span class="lineNum"> 132 </span> : * part of the normal API: do not use it, because future implementations may
-<span class="lineNum"> 133 </span> : * not be based on IDs and therefore not have this method.
-<span class="lineNum"> 134 </span> : */
-<span class="lineNum"> 135 </span><span class="lineCov"> 58 : int id() const { return m_id; }</span>
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span> : friend class Vocabulary;
-<span class="lineNum"> 138 </span> : };
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span> : /**
-<span class="lineNum"> 141 </span> : * Representation of a tag.
-<span class="lineNum"> 142 </span> : *
-<span class="lineNum"> 143 </span> : * ept::debtags::Tag represents a Tag with all its informations.
-<span class="lineNum"> 144 </span> : * It is guaranteed to have fast value-copy semantics, so it can be passed
-<span class="lineNum"> 145 </span> : * around freely and efficiently without worrying about memory management
-<span class="lineNum"> 146 </span> : * issues.
-<span class="lineNum"> 147 </span> : *
-<span class="lineNum"> 148 </span> : * The class is normally instantiated using a Vocabulary:
-<span class="lineNum"> 149 </span> : * \code
-<span class="lineNum"> 150 </span> : * Tag tag = vocabulary.tagByName(&quot;made-of::lang:c++&quot;);
-<span class="lineNum"> 151 </span> : * \endcode
-<span class="lineNum"> 152 </span> : *
-<span class="lineNum"> 153 </span> : * Tags can contain an &quot;invalid&quot; value, in which case using any of their
-<span class="lineNum"> 154 </span> : * methods will likely produce segfault. The &quot;invalid&quot; facets are useful as
-<span class="lineNum"> 155 </span> : * &quot;none&quot; return values:
-<span class="lineNum"> 156 </span> : *
-<span class="lineNum"> 157 </span> : * \code
-<span class="lineNum"> 158 </span> : * Tag tag = vocabulary.tagByName(&quot;made-of&quot;);
-<span class="lineNum"> 159 </span> : * if (!tag)
-<span class="lineNum"> 160 </span> : * throw SomeException(&quot;tag \&quot;mytag\&quot; has not been defined&quot;);
-<span class="lineNum"> 161 </span> : * \endcode
-<span class="lineNum"> 162 </span> : */
-<span class="lineNum"> 163 </span> : class Tag
-<span class="lineNum"> 164 </span> : {
-<span class="lineNum"> 165 </span> : protected:
-<span class="lineNum"> 166 </span> : const Vocabulary* m_tags;
-<span class="lineNum"> 167 </span> : int m_id;
-<span class="lineNum"> 168 </span> :
-<span class="lineNum"> 169 </span><span class="lineCov"> 745056 : Tag(const Vocabulary* tags, int id) : m_tags(tags), m_id(id) {}</span>
-<span class="lineNum"> 170 </span> :
-<span class="lineNum"> 171 </span> : public:
-<span class="lineNum"> 172 </span> : typedef std::set&lt; Tag &gt; Set;
-<span class="lineNum"> 173 </span> :
-<span class="lineNum"> 174 </span><span class="lineCov"> 2 : Tag() : m_tags(0), m_id(-1) {}</span>
-<span class="lineNum"> 175 </span><span class="lineCov"> 2229812 : ~Tag() {}</span>
-<span class="lineNum"> 176 </span> :
-<span class="lineNum"> 177 </span><span class="lineCov"> 1228 : bool operator==(const Tag&amp; f) const { return m_id == f.m_id; }</span>
-<span class="lineNum"> 178 </span><span class="lineCov"> 5 : bool operator!=(const Tag&amp; f) const { return m_id != f.m_id; }</span>
-<span class="lineNum"> 179 </span><span class="lineCov"> 2300524 : bool operator&lt;(const Tag&amp; f) const { return m_id &lt; f.m_id; }</span>
-<span class="lineNum"> 180 </span> :
-<span class="lineNum"> 181 </span><span class="lineCov"> 1 : operator bool() const { return m_id != -1; }</span>
-<span class="lineNum"> 182 </span><span class="lineCov"> 324422 : bool valid() const { return m_id != -1; }</span>
-<span class="lineNum"> 183 </span> :
-<span class="lineNum"> 184 </span> : Facet facet() const;
-<span class="lineNum"> 185 </span> :
-<span class="lineNum"> 186 </span> : /**
-<span class="lineNum"> 187 </span> : * Return the name of the tag, without the facet:: prefix
-<span class="lineNum"> 188 </span> : * @throws std::out_of_range if the tag is not valid
-<span class="lineNum"> 189 </span> : */
-<span class="lineNum"> 190 </span> : std::string name() const;
-<span class="lineNum"> 191 </span> : /**
-<span class="lineNum"> 192 </span> : * Return the short description of the tag
-<span class="lineNum"> 193 </span> : *
-<span class="lineNum"> 194 </span> : * Returns d if the tag is not valid.
-<span class="lineNum"> 195 </span> : */
-<span class="lineNum"> 196 </span> : std::string name(const std::string&amp; d) const;
-<span class="lineNum"> 197 </span> :
-<span class="lineNum"> 198 </span> : /**
-<span class="lineNum"> 199 </span> : * Return the name of the tag, with the facet:: prefix
-<span class="lineNum"> 200 </span> : * @throws std::out_of_range if the tag is not valid
-<span class="lineNum"> 201 </span> : */
-<span class="lineNum"> 202 </span> : std::string fullname() const;
-<span class="lineNum"> 203 </span> : /**
-<span class="lineNum"> 204 </span> : * Return the short description of the tag
-<span class="lineNum"> 205 </span> : *
-<span class="lineNum"> 206 </span> : * Returns d if the tag is not valid.
-<span class="lineNum"> 207 </span> : */
-<span class="lineNum"> 208 </span> : std::string fullname(const std::string&amp; d) const;
-<span class="lineNum"> 209 </span> :
-<span class="lineNum"> 210 </span> : /**
-<span class="lineNum"> 211 </span> : * Return the short description of the tag
-<span class="lineNum"> 212 </span> : * @throws std::out_of_range if the tag is not valid
-<span class="lineNum"> 213 </span> : */
-<span class="lineNum"> 214 </span> : std::string shortDescription() const;
-<span class="lineNum"> 215 </span> : /**
-<span class="lineNum"> 216 </span> : * Return the short description of the tag
-<span class="lineNum"> 217 </span> : *
-<span class="lineNum"> 218 </span> : * Returns d if the tag is not valid.
-<span class="lineNum"> 219 </span> : */
-<span class="lineNum"> 220 </span> : std::string shortDescription(const std::string&amp; d) const;
-<span class="lineNum"> 221 </span> :
-<span class="lineNum"> 222 </span> : /**
-<span class="lineNum"> 223 </span> : * Return the long description of the tag
-<span class="lineNum"> 224 </span> : *
-<span class="lineNum"> 225 </span> : * @throws std::out_of_range if the tag is not valid
-<span class="lineNum"> 226 </span> : */
-<span class="lineNum"> 227 </span> : std::string longDescription() const;
-<span class="lineNum"> 228 </span> : /**
-<span class="lineNum"> 229 </span> : * Return the long description of the tag
-<span class="lineNum"> 230 </span> : *
-<span class="lineNum"> 231 </span> : * Returns d if the tag is not valid.
-<span class="lineNum"> 232 </span> : */
-<span class="lineNum"> 233 </span> : std::string longDescription(const std::string&amp; d) const;
-<span class="lineNum"> 234 </span> :
-<span class="lineNum"> 235 </span> : /**
-<span class="lineNum"> 236 </span> : * Return the ID of this tag
-<span class="lineNum"> 237 </span> : *
-<span class="lineNum"> 238 </span> : * @warning This method is exported to help in writing tests, but it is not
-<span class="lineNum"> 239 </span> : * part of the normal API: do not use it, because future implementations may
-<span class="lineNum"> 240 </span> : * not be based on IDs and therefore not have this method.
-<span class="lineNum"> 241 </span> : */
-<span class="lineNum"> 242 </span><span class="lineCov"> 106853 : int id() const { return m_id; }</span>
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span> : friend class Vocabulary;
-<span class="lineNum"> 245 </span> : };
-<span class="lineNum"> 246 </span> :
-<span class="lineNum"> 247 </span> : }
-<span class="lineNum"> 248 </span> : }
-<span class="lineNum"> 249 </span> :
-<span class="lineNum"> 250 </span> : // vim:set ts=3 sw=3:
-<span class="lineNum"> 251 </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>
diff --git a/rep/ept/debtags/vocabulary.cc.gcov.html b/rep/ept/debtags/vocabulary.cc.gcov.html
deleted file mode 100644
index 9ebdb82..0000000
--- a/rep/ept/debtags/vocabulary.cc.gcov.html
+++ /dev/null
@@ -1,297 +0,0 @@
-<!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/debtags/vocabulary.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">102</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">95.1 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">97</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> : * Tag vocabulary access
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003--2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/maint/vocabularyindexer.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/maint/debdbparser.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;tagcoll/input/memory.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;cstring&gt;
-<span class="lineNum"> 29 </span> : #include &lt;sstream&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;sys/types.h&gt;
-<span class="lineNum"> 32 </span> : #include &lt;sys/stat.h&gt;
-<span class="lineNum"> 33 </span> : #include &lt;fcntl.h&gt;
-<span class="lineNum"> 34 </span> : #include &lt;sys/mman.h&gt;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : using namespace tagcoll;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : namespace ept {
-<span class="lineNum"> 39 </span> : namespace debtags {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 9 : int Vocabulary::FacetIndex::id(const char* name) const</span>
-<span class="lineNum"> 42 </span> : {
-<span class="lineNum"> 43 </span><span class="lineCov"> 9 : if (size() == 0) return -1;</span>
-<span class="lineNum"> 44 </span> : int begin, end;
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : /* Binary search */
-<span class="lineNum"> 47 </span><span class="lineCov"> 9 : begin = -1, end = size();</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 62 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 49 </span> : {
-<span class="lineNum"> 50 </span><span class="lineCov"> 44 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 44 : if (strcmp(item(cur)-&gt;name, name) &gt; 0)</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 16 : end = cur;</span>
-<span class="lineNum"> 53 </span> : else
-<span class="lineNum"> 54 </span><span class="lineCov"> 28 : begin = cur;</span>
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 9 : if (begin == -1 || strcmp(item(begin)-&gt;name, name) != 0)</span>
-<span class="lineNum"> 58 </span> : //throw NotFoundException(string(&quot;looking for the ID of string &quot;) + str);
-<span class="lineNum"> 59 </span><span class="lineCov"> 3 : return -1;</span>
-<span class="lineNum"> 60 </span> : else
-<span class="lineNum"> 61 </span><span class="lineCov"> 6 : return begin;</span>
-<span class="lineNum"> 62 </span> : }
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span><span class="lineCov"> 1105769 : int tagcmp(const char* tag1, const char* tag2)</span>
-<span class="lineNum"> 65 </span> : {
-<span class="lineNum"> 66 </span><span class="lineCov"> 1105769 : const char* tsep1 = strstr(tag1, &quot;::&quot;);</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 1105769 : if (tsep1 == NULL) return strcmp(tag1, tag2);</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 1105766 : const char* tsep2 = strstr(tag2, &quot;::&quot;);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 1105766 : if (tsep2 == NULL) return strcmp(tag1, tag2);</span>
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : // See what is the length of the shortest facet
-<span class="lineNum"> 72 </span><span class="lineCov"> 1105766 : int len1 = tsep1 - tag1;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 1105766 : int len2 = tsep2 - tag2;</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 1105766 : int minlen = len1 &lt; len2 ? len1 : len2;</span>
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 1105766 : int res = strncmp(tag1, tag2, minlen);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1105766 : if (res != 0)</span>
-<span class="lineNum"> 78 </span> : // Different facets
-<span class="lineNum"> 79 </span><span class="lineCov"> 454813 : return res;</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 650953 : if (len1 == len2)</span>
-<span class="lineNum"> 82 </span> : // If the facet is the same, compare the tags
-<span class="lineNum"> 83 </span><span class="lineCov"> 639402 : return strcmp(tsep1 + 2, tsep2 + 2);</span>
-<span class="lineNum"> 84 </span> : else
-<span class="lineNum"> 85 </span> : // Two facets with similar prefixes
-<span class="lineNum"> 86 </span><span class="lineCov"> 11551 : return len1 &lt; len2 ? -1 : 1;</span>
-<span class="lineNum"> 87 </span> : }
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 106377 : int Vocabulary::TagIndex::id(const char* name) const</span>
-<span class="lineNum"> 90 </span> : {
-<span class="lineNum"> 91 </span><span class="lineCov"> 106377 : if (size() == 0) return -1;</span>
-<span class="lineNum"> 92 </span> : int begin, end;
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span> : /* Binary search */
-<span class="lineNum"> 95 </span><span class="lineCov"> 106377 : begin = -1, end = size();</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 1212130 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 97 </span> : {
-<span class="lineNum"> 98 </span><span class="lineCov"> 999376 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 999376 : if (tagcmp(item(cur)-&gt;name, name) &gt; 0)</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 432389 : end = cur;</span>
-<span class="lineNum"> 101 </span> : else
-<span class="lineNum"> 102 </span><span class="lineCov"> 566987 : begin = cur;</span>
-<span class="lineNum"> 103 </span> : }
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span><span class="lineCov"> 106377 : if (begin == -1 || tagcmp(item(begin)-&gt;name, name) != 0)</span>
-<span class="lineNum"> 106 </span> : //throw NotFoundException(string(&quot;looking for the ID of string &quot;) + str);
-<span class="lineNum"> 107 </span><span class="lineCov"> 132 : return -1;</span>
-<span class="lineNum"> 108 </span> : else
-<span class="lineNum"> 109 </span><span class="lineCov"> 106245 : return begin;</span>
-<span class="lineNum"> 110 </span> : }
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 31 : Vocabulary::Vocabulary()</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 31 : : voc_fd(-1), voc_size(0), voc_buf(0)</span>
-<span class="lineNum"> 114 </span> : {
-<span class="lineNum"> 115 </span><span class="lineCov"> 31 : std::string vocfname;</span>
-<span class="lineNum"> 116 </span><span class="lineCov"> 31 : std::string idxfname;</span>
-<span class="lineNum"> 117 </span> :
-<span class="lineNum"> 118 </span><span class="lineCov"> 31 : if (!VocabularyIndexer::obtainWorkingVocabulary(vocfname, idxfname))</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : m_timestamp = 0;</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 2 : return;</span>
-<span class="lineNum"> 122 </span> : }
-<span class="lineNum"> 123 </span> :
-<span class="lineNum"> 124 </span><span class="lineCov"> 29 : m_timestamp = Path::timestamp(idxfname);</span>
-<span class="lineNum"> 125 </span> :
-<span class="lineNum"> 126 </span><span class="lineCov"> 29 : mastermmap.init(idxfname);</span>
-<span class="lineNum"> 127 </span> :
-<span class="lineNum"> 128 </span> : // Initialize the facet and tag indexes
-<span class="lineNum"> 129 </span><span class="lineCov"> 29 : findex.init(mastermmap, 0);</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 29 : tindex.init(mastermmap, 1);</span>
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span> : // MMap the vocabulary
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> : // Open the file
-<span class="lineNum"> 135 </span><span class="lineCov"> 29 : voc_fname = vocfname;</span>
-<span class="lineNum"> 136 </span><span class="lineCov"> 29 : if ((voc_fd = open(voc_fname.c_str(), O_RDONLY)) == -1)</span>
-<span class="lineNum"> 137 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, &quot;opening vocabulary file&quot;);</span>
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span><span class="lineCov"> 29 : off_t size = lseek(voc_fd, 0, SEEK_END);</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 29 : if (size == (off_t)-1)</span>
-<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, &quot;reading the size of vocabulary file&quot;);</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 29 : voc_size = size;</span>
-<span class="lineNum"> 143 </span> :
-<span class="lineNum"> 144 </span> : // Map the file into memory
-<span class="lineNum"> 145 </span><span class="lineCov"> 29 : if ((voc_buf = (const char*)mmap(0, voc_size, PROT_READ, MAP_PRIVATE, voc_fd, 0)) == MAP_FAILED)</span>
-<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, &quot;mmapping vocabulary file&quot;);</span>
-<span class="lineNum"> 147 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 148 </span> :
-<span class="lineNum"> 149 </span><span class="lineCov"> 31 : Vocabulary::~Vocabulary()</span>
-<span class="lineNum"> 150 </span> : {
-<span class="lineNum"> 151 </span> : // Unmap and close the file
-<span class="lineNum"> 152 </span><span class="lineCov"> 31 : if (voc_buf)</span>
-<span class="lineNum"> 153 </span><span class="lineCov"> 29 : munmap((void*)voc_buf, voc_size);</span>
-<span class="lineNum"> 154 </span><span class="lineCov"> 31 : if (voc_fd != -1)</span>
-<span class="lineNum"> 155 </span><span class="lineCov"> 29 : close(voc_fd);</span>
-<span class="lineNum"> 156 </span><span class="lineCov"> 31 : }</span>
-<span class="lineNum"> 157 </span> :
-<span class="lineNum"> 158 </span><span class="lineCov"> 120 : Facet Vocabulary::facetByID(int id) const</span>
-<span class="lineNum"> 159 </span> : {
-<span class="lineNum"> 160 </span><span class="lineCov"> 120 : return Facet(this, id);</span>
-<span class="lineNum"> 161 </span> : }
-<span class="lineNum"> 162 </span> :
-<span class="lineNum"> 163 </span><span class="lineCov"> 745056 : Tag Vocabulary::tagByID(int id) const</span>
-<span class="lineNum"> 164 </span> : {
-<span class="lineNum"> 165 </span><span class="lineCov"> 745056 : return Tag(this, id);</span>
-<span class="lineNum"> 166 </span> : }
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span><span class="lineCov"> 1301 : void Vocabulary::parseVocBuf(std::map&lt;std::string, std::string&gt;&amp; res, size_t ofs, size_t len) const</span>
-<span class="lineNum"> 169 </span> : {
-<span class="lineNum"> 170 </span> : // Access the right part of the mmapped buffer
-<span class="lineNum"> 171 </span><span class="lineCov"> 1301 : std::stringstream name;</span>
-<span class="lineNum"> 172 </span><span class="lineCov"> 1301 : name &lt;&lt; voc_fname &lt;&lt; '+' &lt;&lt; ofs &lt;&lt; '-' &lt;&lt; len;</span>
-<span class="lineNum"> 173 </span><span class="lineCov"> 1301 : input::Memory in(name.str(), voc_buf + ofs, len);</span>
-<span class="lineNum"> 174 </span><span class="lineCov"> 1301 : DebDBParser parser(in);</span>
-<span class="lineNum"> 175 </span> : // Parse the raw string data and store it in the cache vector
-<span class="lineNum"> 176 </span><span class="lineCov"> 1301 : parser.nextRecord(res);</span>
-<span class="lineNum"> 177 </span> :
-<span class="lineNum"> 178 </span><span class="lineCov"> 1301 : std::string desc = res[&quot;Description&quot;];</span>
-<span class="lineNum"> 179 </span><span class="lineCov"> 2602 : if (!desc.empty())</span>
-<span class="lineNum"> 180 </span> : {
-<span class="lineNum"> 181 </span><span class="lineCov"> 1298 : size_t pos = desc.find('\n');</span>
-<span class="lineNum"> 182 </span><span class="lineCov"> 1298 : if (pos == std::string::npos)</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 849 : res[&quot;_SD_&quot;] = desc;</span>
-<span class="lineNum"> 184 </span> : else
-<span class="lineNum"> 185 </span><span class="lineCov"> 449 : res[&quot;_SD_&quot;] = desc.substr(0, pos);</span>
-<span class="lineNum"> 186 </span><span class="lineCov"> 1301 : }</span>
-<span class="lineNum"> 187 </span><span class="lineCov"> 1301 : }</span>
-<span class="lineNum"> 188 </span> :
-<span class="lineNum"> 189 </span><span class="lineCov"> 1863 : std::string Vocabulary::tagShortName(int id) const</span>
-<span class="lineNum"> 190 </span> : {
-<span class="lineNum"> 191 </span><span class="lineCov"> 1863 : const char* fullname = tindex.name(id);</span>
-<span class="lineNum"> 192 </span><span class="lineCov"> 1863 : char* sub = strstr(fullname, &quot;::&quot;);</span>
-<span class="lineNum"> 193 </span><span class="lineCov"> 1863 : if (sub != NULL)</span>
-<span class="lineNum"> 194 </span><span class="lineCov"> 1863 : return sub + 2;</span>
-<span class="lineNum"> 195 </span> : else
-<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : return fullname;</span>
-<span class="lineNum"> 197 </span> : }
-<span class="lineNum"> 198 </span> :
-<span class="lineNum"> 199 </span><span class="lineCov"> 176 : const std::map&lt;std::string, std::string&gt;&amp; Vocabulary::facetData(int id) const</span>
-<span class="lineNum"> 200 </span> : {
-<span class="lineNum"> 201 </span><span class="lineCov"> 176 : if (id &lt; 0) return emptyData;</span>
-<span class="lineNum"> 202 </span> :
-<span class="lineNum"> 203 </span> : // Enlarge the cache vector if needed
-<span class="lineNum"> 204 </span><span class="lineCov"> 176 : if ((unsigned)id &gt;= m_facetData.size())</span>
-<span class="lineNum"> 205 </span><span class="lineCov"> 59 : m_facetData.resize(id + 1);</span>
-<span class="lineNum"> 206 </span> :
-<span class="lineNum"> 207 </span><span class="lineCov"> 176 : if (m_facetData[id].empty())</span>
-<span class="lineNum"> 208 </span><span class="lineCov"> 59 : parseVocBuf(m_facetData[id], findex.offset(id), findex.size(id));</span>
-<span class="lineNum"> 209 </span> :
-<span class="lineNum"> 210 </span><span class="lineCov"> 176 : return m_facetData[id];</span>
-<span class="lineNum"> 211 </span> : }
-<span class="lineNum"> 212 </span> :
-<span class="lineNum"> 213 </span><span class="lineCov"> 3722 : const std::map&lt;std::string, std::string&gt;&amp; Vocabulary::tagData(int id) const</span>
-<span class="lineNum"> 214 </span> : {
-<span class="lineNum"> 215 </span><span class="lineCov"> 3722 : if (id &lt; 0) return emptyData;</span>
-<span class="lineNum"> 216 </span> :
-<span class="lineNum"> 217 </span> : // Enlarge the cache vector if needed
-<span class="lineNum"> 218 </span><span class="lineCov"> 3722 : if ((unsigned)id &gt;= m_tagData.size())</span>
-<span class="lineNum"> 219 </span><span class="lineCov"> 1242 : m_tagData.resize(id + 1);</span>
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span><span class="lineCov"> 3722 : if (m_tagData[id].empty())</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 1242 : parseVocBuf(m_tagData[id], tindex.offset(id), tindex.size(id));</span>
-<span class="lineNum"> 223 </span> :
-<span class="lineNum"> 224 </span><span class="lineCov"> 3722 : return m_tagData[id];</span>
-<span class="lineNum"> 225 </span> : }
-<span class="lineNum"> 226 </span> :
-<span class="lineNum"> 227 </span> : }
-<span class="lineNum"> 228 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/debtags/vocabulary.h.gcov.html b/rep/ept/debtags/vocabulary.h.gcov.html
deleted file mode 100644
index b110f8c..0000000
--- a/rep/ept/debtags/vocabulary.h.gcov.html
+++ /dev/null
@@ -1,349 +0,0 @@
-<!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/debtags/vocabulary.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">55</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">87.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">48</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> : #ifndef EPT_DEBTAGS_VOCABULARY_H
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_VOCABULARY_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Debtags vocabulary access
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/tag.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;tagcoll/diskindex/mmap.h&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : #include &lt;string&gt;
-<span class="lineNum"> 31 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 32 </span> : #include &lt;map&gt;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : namespace ept {
-<span class="lineNum"> 35 </span> : namespace debtags {
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : class Vocabulary
-<span class="lineNum"> 38 </span> : {
-<span class="lineNum"> 39 </span> : public:
-<span class="lineNum"> 40 </span> : class FacetIndex : public tagcoll::diskindex::MMap
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span> : protected:
-<span class="lineNum"> 43 </span> : // Layout of the data in the index
-<span class="lineNum"> 44 </span> : struct Item {
-<span class="lineNum"> 45 </span> : int offset;
-<span class="lineNum"> 46 </span> : int size;
-<span class="lineNum"> 47 </span> : int firsttag;
-<span class="lineNum"> 48 </span> : int lasttag;
-<span class="lineNum"> 49 </span> : const char name[];
-<span class="lineNum"> 50 </span> : };
-<span class="lineNum"> 51 </span><span class="lineCov"> 2393 : inline Item* item(int id) const</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 2393 : if (id &gt;= 0 &amp;&amp; (unsigned)id &lt; size())</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 2392 : return (Item*)(m_buf + ((int*)m_buf)[id]);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : return NULL;</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : public:
-<span class="lineNum"> 59 </span><span class="lineCov"> 31 : FacetIndex() : tagcoll::diskindex::MMap() {}</span>
-<span class="lineNum"> 60 </span> : FacetIndex(const tagcoll::diskindex::MasterMMap&amp; master, size_t idx)
-<span class="lineNum"> 61 </span> : : tagcoll::diskindex::MMap(master, idx) {}
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : /// Get the number of facets in the index
-<span class="lineNum"> 64 </span><span class="lineCov"> 2501 : size_t size() const { return m_size == 0 ? 0 : *(int*)m_buf / sizeof(int); }</span>
-<span class="lineNum"> 65 </span> : /// Get the offset of the facet data in the vocabulary for this facet
-<span class="lineNum"> 66 </span><span class="lineCov"> 59 : size_t offset(int id) const { Item* i = item(id); return i == NULL ? 0 : i-&gt;offset; }</span>
-<span class="lineNum"> 67 </span> : /// Get the size of the facet data in the vocabulary for this facet
-<span class="lineNum"> 68 </span><span class="lineCov"> 59 : size_t size(int id) const { Item* i = item(id); return i == NULL ? 0 : i-&gt;size; }</span>
-<span class="lineNum"> 69 </span> : /// Get the id of the first tag for this facet
-<span class="lineNum"> 70 </span><span class="lineCov"> 91 : int firsttag(int id) const { Item* i = item(id); return i == NULL ? -1 : i-&gt;firsttag; }</span>
-<span class="lineNum"> 71 </span> : /// Get the id of the last tag for this facet
-<span class="lineNum"> 72 </span><span class="lineCov"> 2043 : int lasttag(int id) const { Item* i = item(id); return i == NULL ? -1 : i-&gt;lasttag; }</span>
-<span class="lineNum"> 73 </span> : /// Get the name of this facet
-<span class="lineNum"> 74 </span><span class="lineCov"> 88 : const char* name(int id) const { Item* i = item(id); return i == NULL ? &quot;&quot; : i-&gt;name; }</span>
-<span class="lineNum"> 75 </span> : /// Get the ID of the facet with this name
-<span class="lineNum"> 76 </span> : int id(const char* name) const;
-<span class="lineNum"> 77 </span><span class="lineCov"> 7 : int id(const std::string&amp; name) const { return id(name.c_str()); }</span>
-<span class="lineNum"> 78 </span> : };
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span> : class TagIndex : public tagcoll::diskindex::MMap
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span> : protected:
-<span class="lineNum"> 83 </span> : // Layout of the data in the index
-<span class="lineNum"> 84 </span> : struct Item {
-<span class="lineNum"> 85 </span> : int offset;
-<span class="lineNum"> 86 </span> : int size;
-<span class="lineNum"> 87 </span> : int facet;
-<span class="lineNum"> 88 </span> : const char name[];
-<span class="lineNum"> 89 </span> : };
-<span class="lineNum"> 90 </span><span class="lineCov"> 1112004 : inline Item* item(int id) const</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span><span class="lineCov"> 1112004 : if (id &gt;= 0 &amp;&amp; (unsigned)id &lt; size())</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1112004 : return (Item*)(m_buf + ((int*)m_buf)[id]);</span>
-<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : return NULL;</span>
-<span class="lineNum"> 95 </span> : }
-<span class="lineNum"> 96 </span> :
-<span class="lineNum"> 97 </span> : public:
-<span class="lineNum"> 98 </span><span class="lineCov"> 31 : TagIndex() : tagcoll::diskindex::MMap() {}</span>
-<span class="lineNum"> 99 </span> : TagIndex(const tagcoll::diskindex::MasterMMap&amp; master, size_t idx)
-<span class="lineNum"> 100 </span> : : tagcoll::diskindex::MMap(master, idx) {}
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span> : /// Get the number of tags in the index
-<span class="lineNum"> 103 </span><span class="lineCov"> 1327864 : size_t size() const { return m_size == 0 ? 0 : *(int*)m_buf / sizeof(int); }</span>
-<span class="lineNum"> 104 </span> : /// Get the offset of the facet data in the vocabulary for this tag
-<span class="lineNum"> 105 </span><span class="lineCov"> 1242 : size_t offset(int id) const { Item* i = item(id); return i == NULL ? 0 : i-&gt;offset; }</span>
-<span class="lineNum"> 106 </span> : /// Get the size of the facet data in the vocabulary for this tag
-<span class="lineNum"> 107 </span><span class="lineCov"> 1242 : size_t size(int id) const { Item* i = item(id); return i == NULL ? 0 : i-&gt;size; }</span>
-<span class="lineNum"> 108 </span> : /// Get the id of the facet for this tag
-<span class="lineNum"> 109 </span><span class="lineNoCov"> 0 : int facet(int id) const { Item* i = item(id); return i == NULL ? -1 : i-&gt;facet; }</span>
-<span class="lineNum"> 110 </span> : /// Get the name of this tag
-<span class="lineNum"> 111 </span><span class="lineCov"> 3767 : const char* name(int id) const { Item* i = item(id); return i == NULL ? &quot;&quot; : i-&gt;name; }</span>
-<span class="lineNum"> 112 </span> : /// Get the ID of the tag with this name
-<span class="lineNum"> 113 </span> : int id(const char* name) const;
-<span class="lineNum"> 114 </span><span class="lineCov"> 105755 : int id(const std::string&amp; name) const { return id(name.c_str()); }</span>
-<span class="lineNum"> 115 </span> : };
-<span class="lineNum"> 116 </span> :
-<span class="lineNum"> 117 </span> : protected:
-<span class="lineNum"> 118 </span> : // Master MMap index container
-<span class="lineNum"> 119 </span> : tagcoll::diskindex::MasterMMap mastermmap;
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span> : time_t m_timestamp;
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : // Mmapped vocabulary file
-<span class="lineNum"> 124 </span> : std::string voc_fname;
-<span class="lineNum"> 125 </span> : int voc_fd;
-<span class="lineNum"> 126 </span> : size_t voc_size;
-<span class="lineNum"> 127 </span> : const char* voc_buf;
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span> : // Facet and tag indexes
-<span class="lineNum"> 130 </span> : FacetIndex findex;
-<span class="lineNum"> 131 </span> : TagIndex tindex;
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : // Cached parsed facet and tag records
-<span class="lineNum"> 134 </span> : mutable std::vector&lt; std::map&lt;std::string, std::string&gt; &gt; m_facetData;
-<span class="lineNum"> 135 </span> : mutable std::vector&lt; std::map&lt;std::string, std::string&gt; &gt; m_tagData;
-<span class="lineNum"> 136 </span> : // Empty parsed data to return when data is asked for IDs == -1
-<span class="lineNum"> 137 </span> : std::map&lt;std::string, std::string&gt; emptyData;
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : void parseVocBuf(std::map&lt;std::string, std::string&gt;&amp; res, size_t ofs, size_t len) const;
-<span class="lineNum"> 140 </span> :
-<span class="lineNum"> 141 </span> : public:
-<span class="lineNum"> 142 </span> : Vocabulary();
-<span class="lineNum"> 143 </span> : ~Vocabulary();
-<span class="lineNum"> 144 </span> :
-<span class="lineNum"> 145 </span> : /// Get the timestamp of when the index was last updated
-<span class="lineNum"> 146 </span> : time_t timestamp() const { return m_timestamp; }
-<span class="lineNum"> 147 </span> :
-<span class="lineNum"> 148 </span> : /// Return true if this data source has data, false if it's empty
-<span class="lineNum"> 149 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span>
-<span class="lineNum"> 150 </span> :
-<span class="lineNum"> 151 </span> : const FacetIndex&amp; facetIndex() const { return findex; }
-<span class="lineNum"> 152 </span> : const TagIndex&amp; tagIndex() const { return tindex; }
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : /**
-<span class="lineNum"> 155 </span> : * Check if the vocabulary contains the facet `name'
-<span class="lineNum"> 156 </span> : */
-<span class="lineNum"> 157 </span><span class="lineCov"> 2 : bool hasFacet(const std::string&amp; name) const</span>
-<span class="lineNum"> 158 </span> : {
-<span class="lineNum"> 159 </span><span class="lineCov"> 2 : return findex.id(name.c_str()) != -1;</span>
-<span class="lineNum"> 160 </span> : }
-<span class="lineNum"> 161 </span> :
-<span class="lineNum"> 162 </span> : /**
-<span class="lineNum"> 163 </span> : * Check if the vocabulary contains the tag `fullname'
-<span class="lineNum"> 164 </span> : */
-<span class="lineNum"> 165 </span><span class="lineCov"> 622 : bool hasTag(const std::string&amp; fullname) const</span>
-<span class="lineNum"> 166 </span> : {
-<span class="lineNum"> 167 </span><span class="lineCov"> 622 : return tindex.id(fullname.c_str()) != -1;</span>
-<span class="lineNum"> 168 </span> : }
-<span class="lineNum"> 169 </span> :
-<span class="lineNum"> 170 </span> : /**
-<span class="lineNum"> 171 </span> : * Return the facet with the given name
-<span class="lineNum"> 172 </span> : */
-<span class="lineNum"> 173 </span> : Facet facetByID(int id) const;
-<span class="lineNum"> 174 </span> :
-<span class="lineNum"> 175 </span> : /**
-<span class="lineNum"> 176 </span> : * Return the tag with the given full name
-<span class="lineNum"> 177 </span> : */
-<span class="lineNum"> 178 </span> : Tag tagByID(int id) const;
-<span class="lineNum"> 179 </span> :
-<span class="lineNum"> 180 </span> : template&lt;typename IDS&gt;
-<span class="lineNum"> 181 </span><span class="lineCov"> 84590 : std::set&lt;Tag&gt; tagsByID(const IDS&amp; ids) const</span>
-<span class="lineNum"> 182 </span> : {
-<span class="lineNum"> 183 </span><span class="lineCov"> 84590 : std::set&lt;Tag&gt; res;</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 507017 : for (typename IDS::const_iterator i = ids.begin();</span>
-<span class="lineNum"> 185 </span> : i != ids.end(); ++i)
-<span class="lineNum"> 186 </span><span class="lineCov"> 422427 : res.insert(tagByID(*i));</span>
-<span class="lineNum"> 187 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 188 </span> : }
-<span class="lineNum"> 189 </span> :
-<span class="lineNum"> 190 </span> : /**
-<span class="lineNum"> 191 </span> : * Return the facet for the tag with the given ID
-<span class="lineNum"> 192 </span> : */
-<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : Facet facetByTag(int id) const { return facetByID(tindex.facet(id)); }</span>
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span> : /**
-<span class="lineNum"> 196 </span> : * Return the facet with the given name
-<span class="lineNum"> 197 </span> : */
-<span class="lineNum"> 198 </span><span class="lineCov"> 4 : Facet facetByName(const std::string&amp; name) const { return facetByID(findex.id(name)); }</span>
-<span class="lineNum"> 199 </span> :
-<span class="lineNum"> 200 </span> : /**
-<span class="lineNum"> 201 </span> : * Return the tag with the given full name
-<span class="lineNum"> 202 </span> : */
-<span class="lineNum"> 203 </span><span class="lineCov"> 105755 : Tag tagByName(const std::string&amp; fullname) const { return tagByID(tindex.id(fullname)); }</span>
-<span class="lineNum"> 204 </span> :
-<span class="lineNum"> 205 </span> : /**
-<span class="lineNum"> 206 </span> : * Return all the facets in the vocabulary
-<span class="lineNum"> 207 </span> : */
-<span class="lineNum"> 208 </span><span class="lineCov"> 4 : std::set&lt; Facet &gt; facets() const</span>
-<span class="lineNum"> 209 </span> : {
-<span class="lineNum"> 210 </span><span class="lineCov"> 4 : std::set&lt; Facet &gt; res;</span>
-<span class="lineNum"> 211 </span><span class="lineCov"> 91 : for (size_t i = 0; i &lt; findex.size(); i++)</span>
-<span class="lineNum"> 212 </span><span class="lineCov"> 87 : res.insert(facetByID(i));</span>
-<span class="lineNum"> 213 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 214 </span> : }
-<span class="lineNum"> 215 </span> :
-<span class="lineNum"> 216 </span> : /**
-<span class="lineNum"> 217 </span> : * Return all the tags in the vocabulary
-<span class="lineNum"> 218 </span> : */
-<span class="lineNum"> 219 </span><span class="lineCov"> 6 : std::set&lt; Tag &gt; tags() const</span>
-<span class="lineNum"> 220 </span> : {
-<span class="lineNum"> 221 </span><span class="lineCov"> 6 : std::set&lt; Tag &gt; res;</span>
-<span class="lineNum"> 222 </span><span class="lineCov"> 3106 : for (size_t i = 0; i &lt; tindex.size(); i++)</span>
-<span class="lineNum"> 223 </span><span class="lineCov"> 3100 : res.insert(tagByID(i));</span>
-<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 225 </span> : }
-<span class="lineNum"> 226 </span> :
-<span class="lineNum"> 227 </span> : /**
-<span class="lineNum"> 228 </span> : * Return the tags in the given facet
-<span class="lineNum"> 229 </span> : */
-<span class="lineNum"> 230 </span><span class="lineCov"> 91 : std::set&lt; Tag &gt; tags(int facet) const</span>
-<span class="lineNum"> 231 </span> : {
-<span class="lineNum"> 232 </span><span class="lineCov"> 91 : std::set&lt; Tag &gt; res;</span>
-<span class="lineNum"> 233 </span><span class="lineCov"> 2044 : for (int i = findex.firsttag(facet); i != -1 &amp;&amp; i &lt;= findex.lasttag(facet); i++)</span>
-<span class="lineNum"> 234 </span><span class="lineCov"> 1953 : res.insert(tagByID(i));</span>
-<span class="lineNum"> 235 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 236 </span> : }
-<span class="lineNum"> 237 </span> :
-<span class="lineNum"> 238 </span><span class="lineCov"> 3 : std::set&lt; Tag &gt; tags(const std::string&amp; facetName) const</span>
-<span class="lineNum"> 239 </span> : {
-<span class="lineNum"> 240 </span><span class="lineCov"> 3 : return tags(findex.id(facetName));</span>
-<span class="lineNum"> 241 </span> : }
-<span class="lineNum"> 242 </span> :
-<span class="lineNum"> 243 </span> : std::set&lt; Tag &gt; tags(const Facet&amp; facet) const
-<span class="lineNum"> 244 </span> : {
-<span class="lineNum"> 245 </span> : return tags(facet.id());
-<span class="lineNum"> 246 </span> : }
-<span class="lineNum"> 247 </span> :
-<span class="lineNum"> 248 </span> : #if 0
-<span class="lineNum"> 249 </span> : /// Get the DerivedTagList with the Equates: expressions read from the vocabulary
-<span class="lineNum"> 250 </span> : const DerivedTagList&amp; getEquations() const throw () { return equations; }
-<span class="lineNum"> 251 </span> :
-<span class="lineNum"> 252 </span> : /// Get a set with all the facets present in the vocabulary that are matched by `filter'
-<span class="lineNum"> 253 </span> : FacetSet facets(const FacetMatcher&amp; filter) const throw () { return getFiltered(filter); }
-<span class="lineNum"> 254 </span> : #endif
-<span class="lineNum"> 255 </span> :
-<span class="lineNum"> 256 </span> : #if 0
-<span class="lineNum"> 257 </span> : // These functions are here just to be used by Facet and Tag. I'm not
-<span class="lineNum"> 258 </span> : // making them private because I don't want Facet and Tag to access other
-<span class="lineNum"> 259 </span> : // Vocabulary member, and other classes can't use these anyway as Facet::Data and
-<span class="lineNum"> 260 </span> : // Tag::Data are protected
-<span class="lineNum"> 261 </span> : const Facet::Data&amp; facetData(int idx) { return m_facets[idx]; }
-<span class="lineNum"> 262 </span> : const Tag::Data&amp; tagData(int idx) { return m_tags[idx]; }
-<span class="lineNum"> 263 </span> : #endif
-<span class="lineNum"> 264 </span> :
-<span class="lineNum"> 265 </span> : /// Get the facet name given the facet id
-<span class="lineNum"> 266 </span><span class="lineCov"> 88 : std::string facetName(int id) const { return findex.name(id); }</span>
-<span class="lineNum"> 267 </span> :
-<span class="lineNum"> 268 </span> : /// Get the tag name given the tag id
-<span class="lineNum"> 269 </span><span class="lineCov"> 1904 : std::string tagName(int id) const { return tindex.name(id); }</span>
-<span class="lineNum"> 270 </span> :
-<span class="lineNum"> 271 </span> : /// Get the tag name given the tag id
-<span class="lineNum"> 272 </span> : std::string tagShortName(int id) const;
-<span class="lineNum"> 273 </span> :
-<span class="lineNum"> 274 </span> : const std::map&lt;std::string, std::string&gt;&amp; facetData(int id) const;
-<span class="lineNum"> 275 </span> : const std::map&lt;std::string, std::string&gt;&amp; tagData(int id) const;
-<span class="lineNum"> 276 </span> : };
-<span class="lineNum"> 277 </span> :
-<span class="lineNum"> 278 </span> : }
-<span class="lineNum"> 279 </span> : }
-<span class="lineNum"> 280 </span> :
-<span class="lineNum"> 281 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 282 </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>
diff --git a/rep/ept/debtags/vocabulary.test.h.gcov.html b/rep/ept/debtags/vocabulary.test.h.gcov.html
deleted file mode 100644
index b5b697a..0000000
--- a/rep/ept/debtags/vocabulary.test.h.gcov.html
+++ /dev/null
@@ -1,385 +0,0 @@
-<!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/debtags/vocabulary.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">173</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">99.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">172</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> : /*
-<span class="lineNum"> 2 </span> : * Tag vocabulary access
-<span class="lineNum"> 3 </span> : *
-<span class="lineNum"> 4 </span> : * Copyright (C) 2003--2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 5 </span> : *
-<span class="lineNum"> 6 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 7 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 8 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 9 </span> : * (at your option) any later version.
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 12 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 13 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 14 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 17 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 18 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 19 </span> : */
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span> : #include &lt;wibble/test.h&gt;
-<span class="lineNum"> 22 </span> : #include &lt;ept/debtags/vocabulary.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/debtags/maint/vocabularymerger.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;tagcoll/utils/set.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &quot;debtags.test.h&quot;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : // This is not exported by default
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace debtags {
-<span class="lineNum"> 33 </span> : int tagcmp(const char* tag1, const char* tag2);
-<span class="lineNum"> 34 </span> : }
-<span class="lineNum"> 35 </span> : }
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : using namespace std;
-<span class="lineNum"> 38 </span> : using namespace tagcoll::utils;
-<span class="lineNum"> 39 </span> : using namespace ept::debtags;
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : struct TestVocabulary : DebtagsTestEnvironment
-<span class="lineNum"> 42 </span><span class="lineCov"> 38 : {</span>
-<span class="lineNum"> 43 </span> : Vocabulary m_tags;
-<span class="lineNum"> 44 </span><span class="lineCov"> 1298 : Vocabulary&amp; tags() { return m_tags; }</span>
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span><span class="lineCov"> 1 : Test _1()</span>
-<span class="lineNum"> 47 </span> : {
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : tags(); // this will throw if the open above didn't work</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test _2()</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert( tags().hasFacet( &quot;works-with&quot; ) );</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert( !tags().hasFacet( &quot;blah&quot; ) );</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : Test _3()</span>
-<span class="lineNum"> 58 </span> : {
-<span class="lineNum"> 59 </span><span class="lineCov"> 1 : assert( tags().hasTag( &quot;works-with::people&quot; ) );</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 2 : assert( !tags().hasTag( &quot;works-with::midgets&quot; ) );</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : Test _4()</span>
-<span class="lineNum"> 64 </span> : {
-<span class="lineNum"> 65 </span><span class="lineCov"> 1 : Tag people = tags().tagByName( &quot;works-with::people&quot; ),</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 2 : midgets = tags().tagByName( &quot;works-with::midgets&quot; ),</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 2 : blahg = tags().tagByName( &quot;works-with::blahg&quot; ),</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 2 : text = tags().tagByName( &quot;works-with::text&quot; ),</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 2 : people2 = tags().tagByName( &quot;works-with::people&quot; );</span>
-<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert( people != midgets );</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert( people != text );</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 2 : assert( people != blahg );</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 2 : assert( midgets == blahg );</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert( midgets == midgets );</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 2 : assert( people == people2 );</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 2 : assert( people == people );</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span><span class="lineCov"> 1 : Test _5()</span>
-<span class="lineNum"> 80 </span> : {
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : Tag a = tags().tagByName( &quot;works-with::people&quot; ),</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 2 : b = tags().tagByName( &quot;works-with::midgets&quot; );</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 2 : std::set&lt; Tag &gt; s = tags().tags(),</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : f = tags().tags( &quot;works-with&quot; ),</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 2 : n = tags().tags( &quot;nonsense&quot; );</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert( set_contains(s, a) );</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert( set_contains(f, a) );</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert( set_contains(s, f) );</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert( !set_contains(s, b) );</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert( !set_contains(f, b) );</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert( n.empty() );</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 1 : Test _6()</span>
-<span class="lineNum"> 95 </span> : {
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( &quot;works-with&quot; );</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 2 : Tag t = tags().tagByName( &quot;works-with::people&quot; );</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert_eq(f.name(), &quot;works-with&quot;);</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert_eq(t.name(), &quot;people&quot;);</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert_eq(t.fullname(), &quot;works-with::people&quot;);</span>
-<span class="lineNum"> 101 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 102 </span> :
-<span class="lineNum"> 103 </span><span class="lineCov"> 1 : Test _7()</span>
-<span class="lineNum"> 104 </span> : {
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( &quot;works-with&quot; );</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 2 : std::set&lt; Tag &gt; x = tags().tags( &quot;works-with&quot; );</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 2 : assert( x == f.tags() );</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span><span class="lineCov"> 1 : Test _8()</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( &quot;does-not-work-with&quot; );</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 1 : int x = 1;</span>
-<span class="lineNum"> 114 </span> : try {
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : f.tags();</span>
-<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : x = 2;</span>
-<span class="lineNum"> 117 </span><span class="lineCov"> 2 : } catch (...) {</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : x = 3;</span>
-<span class="lineNum"> 119 </span> : }
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : assert_eq( x, 3 );</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : Test _9()</span>
-<span class="lineNum"> 124 </span> : {
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( &quot;legacy&quot; );</span>
-<span class="lineNum"> 126 </span><span class="lineCov"> 2 : assert_eq(f.shortDescription(), &quot;&quot;);</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 1 : assert_eq(f.longDescription(), &quot;&quot;);</span>
-<span class="lineNum"> 128 </span> : //assert_eq(f.shortDescription( &quot;weehee&quot; ), &quot;weehee&quot;);
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 130 </span> :
-<span class="lineNum"> 131 </span> : Test _10()
-<span class="lineNum"> 132 </span> : {
-<span class="lineNum"> 133 </span> : // assert that one-character tag names are parsed correctly
-<span class="lineNum"> 134 </span> : assert( tags().hasTag( &quot;implemented-in::c&quot; ) );
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span> :
-<span class="lineNum"> 137 </span><span class="lineCov"> 1 : Test _11()</span>
-<span class="lineNum"> 138 </span> : {
-<span class="lineNum"> 139 </span> : // assert that all tags are somehow working
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : std::set&lt;Facet&gt; facets = tags().facets();</span>
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span><span class="lineCov"> 30 : for (std::set&lt;Facet&gt;::const_iterator i = facets.begin();</span>
-<span class="lineNum"> 143 </span> : i != facets.end(); i++)
-<span class="lineNum"> 144 </span> : {
-<span class="lineNum"> 145 </span><span class="lineCov"> 29 : i-&gt;name(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 146 </span><span class="lineCov"> 58 : i-&gt;shortDescription(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 147 </span><span class="lineCov"> 58 : i-&gt;longDescription(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 58 : i-&gt;tags();</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span><span class="lineCov"> 1 : Test _12()</span>
-<span class="lineNum"> 153 </span> : {
-<span class="lineNum"> 154 </span> : // assert that all tags are somehow working
-<span class="lineNum"> 155 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = this-&gt;tags().tags();</span>
-<span class="lineNum"> 156 </span> :
-<span class="lineNum"> 157 </span><span class="lineCov"> 1242 : for (std::set&lt;Tag&gt;::const_iterator i = tags.begin();</span>
-<span class="lineNum"> 158 </span> : i != tags.end(); i++)
-<span class="lineNum"> 159 </span> : {
-<span class="lineNum"> 160 </span><span class="lineCov"> 620 : i-&gt;name(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 1240 : i-&gt;fullname(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 1240 : i-&gt;shortDescription(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 163 </span><span class="lineCov"> 1240 : i-&gt;longDescription(string(&quot;foo&quot;));</span>
-<span class="lineNum"> 164 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 165 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 166 </span> :
-<span class="lineNum"> 167 </span> : // Check for correctness of the first and last tag in the vocabulary
-<span class="lineNum"> 168 </span><span class="lineCov"> 1 : Test _13()</span>
-<span class="lineNum"> 169 </span> : {
-<span class="lineNum"> 170 </span><span class="lineCov"> 1 : Vocabulary&amp; tags = this-&gt;tags();</span>
-<span class="lineNum"> 171 </span> :
-<span class="lineNum"> 172 </span><span class="lineCov"> 1 : Tag first = tags.tagByName(&quot;accessibility::TODO&quot;);</span>
-<span class="lineNum"> 173 </span><span class="lineCov"> 2 : assert(first != Tag());</span>
-<span class="lineNum"> 174 </span><span class="lineCov"> 1 : assert_eq(first.fullname(), string(&quot;accessibility::TODO&quot;));</span>
-<span class="lineNum"> 175 </span><span class="lineCov"> 2 : assert_eq(first.name(), string(&quot;TODO&quot;));</span>
-<span class="lineNum"> 176 </span><span class="lineCov"> 2 : assert_eq(first.shortDescription(), string(&quot;Need an extra tag&quot;));</span>
-<span class="lineNum"> 177 </span> :
-<span class="lineNum"> 178 </span><span class="lineCov"> 2 : Tag last = tags.tagByName(&quot;x11::xserver&quot;);</span>
-<span class="lineNum"> 179 </span><span class="lineCov"> 2 : assert(last != Tag());</span>
-<span class="lineNum"> 180 </span><span class="lineCov"> 1 : assert_eq(last.fullname(), string(&quot;x11::xserver&quot;));</span>
-<span class="lineNum"> 181 </span><span class="lineCov"> 2 : assert_eq(last.name(), string(&quot;xserver&quot;));</span>
-<span class="lineNum"> 182 </span><span class="lineCov"> 2 : assert_eq(last.shortDescription(), string(&quot;X Server&quot;));</span>
-<span class="lineNum"> 183 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 184 </span> :
-<span class="lineNum"> 185 </span><span class="lineCov"> 1 : Test _14()</span>
-<span class="lineNum"> 186 </span> : {
-<span class="lineNum"> 187 </span> : // assert that it's possible to go from facet to ID and back
-<span class="lineNum"> 188 </span><span class="lineCov"> 1 : std::set&lt;Facet&gt; facets = tags().facets();</span>
-<span class="lineNum"> 189 </span> :
-<span class="lineNum"> 190 </span><span class="lineCov"> 30 : for (std::set&lt;Facet&gt;::const_iterator i = facets.begin();</span>
-<span class="lineNum"> 191 </span> : i != facets.end(); i++)
-<span class="lineNum"> 192 </span> : {
-<span class="lineNum"> 193 </span><span class="lineCov"> 29 : Facet f = tags().facetByID(i-&gt;id());</span>
-<span class="lineNum"> 194 </span><span class="lineCov"> 29 : assert_eq(*i, f);</span>
-<span class="lineNum"> 195 </span><span class="lineCov"> 29 : assert_eq(i-&gt;name(), f.name());</span>
-<span class="lineNum"> 196 </span><span class="lineCov"> 29 : assert_eq(i-&gt;shortDescription(), f.shortDescription());</span>
-<span class="lineNum"> 197 </span><span class="lineCov"> 29 : assert_eq(i-&gt;longDescription(), f.longDescription());</span>
-<span class="lineNum"> 198 </span><span class="lineCov"> 29 : assert_eq(i-&gt;tags().size(), f.tags().size());</span>
-<span class="lineNum"> 199 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 200 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 201 </span> :
-<span class="lineNum"> 202 </span><span class="lineCov"> 1 : Test _15()</span>
-<span class="lineNum"> 203 </span> : {
-<span class="lineNum"> 204 </span> : // assert that it's possible to go from tag to ID and back
-<span class="lineNum"> 205 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = this-&gt;tags().tags();</span>
-<span class="lineNum"> 206 </span> :
-<span class="lineNum"> 207 </span><span class="lineCov"> 621 : for (std::set&lt;Tag&gt;::const_iterator i = tags.begin();</span>
-<span class="lineNum"> 208 </span> : i != tags.end(); i++)
-<span class="lineNum"> 209 </span> : {
-<span class="lineNum"> 210 </span><span class="lineCov"> 620 : Tag t = this-&gt;tags().tagByID(i-&gt;id());</span>
-<span class="lineNum"> 211 </span><span class="lineCov"> 620 : assert_eq(*i, t);</span>
-<span class="lineNum"> 212 </span><span class="lineCov"> 620 : assert_eq(i-&gt;name(), t.name());</span>
-<span class="lineNum"> 213 </span><span class="lineCov"> 620 : assert_eq(i-&gt;fullname(), t.fullname());</span>
-<span class="lineNum"> 214 </span><span class="lineCov"> 620 : assert_eq(i-&gt;shortDescription(), t.shortDescription());</span>
-<span class="lineNum"> 215 </span><span class="lineCov"> 620 : assert_eq(i-&gt;longDescription(), t.longDescription());</span>
-<span class="lineNum"> 216 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 217 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 218 </span> :
-<span class="lineNum"> 219 </span><span class="lineCov"> 1 : Test _16()</span>
-<span class="lineNum"> 220 </span> : {
-<span class="lineNum"> 221 </span> : // assert that facet IDs are distinct
-<span class="lineNum"> 222 </span><span class="lineCov"> 1 : std::set&lt;Facet&gt; facets = tags().facets();</span>
-<span class="lineNum"> 223 </span><span class="lineCov"> 1 : std::set&lt;int&gt; ids;</span>
-<span class="lineNum"> 224 </span><span class="lineCov"> 30 : for (std::set&lt;Facet&gt;::const_iterator i = facets.begin();</span>
-<span class="lineNum"> 225 </span> : i != facets.end(); i++)
-<span class="lineNum"> 226 </span><span class="lineCov"> 29 : ids.insert(i-&gt;id());</span>
-<span class="lineNum"> 227 </span> :
-<span class="lineNum"> 228 </span><span class="lineCov"> 1 : assert_eq(facets.size(), ids.size());</span>
-<span class="lineNum"> 229 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 230 </span> :
-<span class="lineNum"> 231 </span><span class="lineCov"> 1 : Test _17()</span>
-<span class="lineNum"> 232 </span> : {
-<span class="lineNum"> 233 </span> : // assert that tag IDs are distinct
-<span class="lineNum"> 234 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; tags = this-&gt;tags().tags();</span>
-<span class="lineNum"> 235 </span><span class="lineCov"> 1 : std::set&lt;int&gt; ids;</span>
-<span class="lineNum"> 236 </span><span class="lineCov"> 621 : for (std::set&lt;Tag&gt;::const_iterator i = tags.begin();</span>
-<span class="lineNum"> 237 </span> : i != tags.end(); i++)
-<span class="lineNum"> 238 </span><span class="lineCov"> 620 : ids.insert(i-&gt;id());</span>
-<span class="lineNum"> 239 </span> :
-<span class="lineNum"> 240 </span><span class="lineCov"> 1 : assert_eq(tags.size(), ids.size());</span>
-<span class="lineNum"> 241 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 242 </span> :
-<span class="lineNum"> 243 </span><span class="lineCov"> 1 : Test _18()</span>
-<span class="lineNum"> 244 </span> : {
-<span class="lineNum"> 245 </span> : // assert that all the tags are indexed
-<span class="lineNum"> 246 </span><span class="lineCov"> 1 : ept::debtags::VocabularyMerger voc;</span>
-<span class="lineNum"> 247 </span><span class="lineCov"> 1 : tagcoll::input::Stdio in(ept::debtags::Path::vocabulary());</span>
-<span class="lineNum"> 248 </span><span class="lineCov"> 1 : voc.read(in);</span>
-<span class="lineNum"> 249 </span><span class="lineCov"> 1 : std::set&lt;std::string&gt; all = voc.tagNames();</span>
-<span class="lineNum"> 250 </span><span class="lineCov"> 1242 : for (std::set&lt;std::string&gt;::const_iterator i = all.begin();</span>
-<span class="lineNum"> 251 </span> : i != all.end(); ++i)
-<span class="lineNum"> 252 </span><span class="lineCov"> 620 : assert(this-&gt;tags().hasTag(*i));</span>
-<span class="lineNum"> 253 </span> :
-<span class="lineNum"> 254 </span> : // There should be the same amount of tags in both
-<span class="lineNum"> 255 </span><span class="lineCov"> 1 : std::set&lt;Tag&gt; allTags = this-&gt;tags().tags();</span>
-<span class="lineNum"> 256 </span><span class="lineCov"> 1 : assert_eq(all.size(), allTags.size());</span>
-<span class="lineNum"> 257 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 258 </span> :
-<span class="lineNum"> 259 </span><span class="lineCov"> 1 : Test _19()</span>
-<span class="lineNum"> 260 </span> : {
-<span class="lineNum"> 261 </span> : // test the tagcmp function
-<span class="lineNum"> 262 </span> :
-<span class="lineNum"> 263 </span> : // If unfaceted, same as strcmp
-<span class="lineNum"> 264 </span><span class="lineCov"> 1 : assert(ept::debtags::tagcmp(&quot;antani&quot;, &quot;blinda&quot;) &lt; 0);</span>
-<span class="lineNum"> 265 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;blinda&quot;, &quot;antani&quot;) &gt; 0);</span>
-<span class="lineNum"> 266 </span><span class="lineCov"> 2 : assert_eq(ept::debtags::tagcmp(&quot;antani&quot;, &quot;antani&quot;), 0);</span>
-<span class="lineNum"> 267 </span> :
-<span class="lineNum"> 268 </span> : // If the same and faceted, should work
-<span class="lineNum"> 269 </span><span class="lineCov"> 2 : assert_eq(ept::debtags::tagcmp(&quot;antani::blinda&quot;, &quot;antani::blinda&quot;), 0);</span>
-<span class="lineNum"> 270 </span> :
-<span class="lineNum"> 271 </span> : // With different facet names, work just as strcmp
-<span class="lineNum"> 272 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;antani::blinda&quot;, &quot;blinda::blinda&quot;) &lt; 0);</span>
-<span class="lineNum"> 273 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;blinda::blinda&quot;, &quot;antani::blinda&quot;) &gt; 0);</span>
-<span class="lineNum"> 274 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;anta::blinda&quot;, &quot;antani::blinda&quot;) &lt; 0);</span>
-<span class="lineNum"> 275 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;antani::blinda&quot;, &quot;anta::blinda&quot;) &gt; 0);</span>
-<span class="lineNum"> 276 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;anta::blinda&quot;, &quot;anta-ni::blinda&quot;) &lt; 0);</span>
-<span class="lineNum"> 277 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;anta-ni::blinda&quot;, &quot;anta::blinda&quot;) &gt; 0);</span>
-<span class="lineNum"> 278 </span> :
-<span class="lineNum"> 279 </span> : // With same facet names, work just as strcmp on the tags
-<span class="lineNum"> 280 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::antani&quot;, &quot;a::blinda&quot;) &lt; 0);</span>
-<span class="lineNum"> 281 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::blinda&quot;, &quot;a::antani&quot;) &gt; 0);</span>
-<span class="lineNum"> 282 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::anta&quot;, &quot;a::antani&quot;) &lt; 0);</span>
-<span class="lineNum"> 283 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::antani&quot;, &quot;a::anta&quot;) &gt; 0);</span>
-<span class="lineNum"> 284 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::anta&quot;, &quot;a::anta-ni&quot;) &lt; 0);</span>
-<span class="lineNum"> 285 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp(&quot;a::anta-ni&quot;, &quot;a::anta&quot;) &gt; 0);</span>
-<span class="lineNum"> 286 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 287 </span> :
-<span class="lineNum"> 288 </span> : Test _20()
-<span class="lineNum"> 289 </span> : {
-<span class="lineNum"> 290 </span> : // check that we're seeing all the tags for a facet
-<span class="lineNum"> 291 </span> : std::set&lt;Tag&gt; t = tags().tags(&quot;accessibility&quot;);
-<span class="lineNum"> 292 </span> : assert_eq(t.size(), 10u);
-<span class="lineNum"> 293 </span> :
-<span class="lineNum"> 294 </span> : t = tags().tags(&quot;works-with-format&quot;);
-<span class="lineNum"> 295 </span> : assert_eq(t.size(), 33u);
-<span class="lineNum"> 296 </span> : }
-<span class="lineNum"> 297 </span> :
-<span class="lineNum"> 298 </span> : // If there is no data, Vocabulary should work as an empty vocabulary
-<span class="lineNum"> 299 </span><span class="lineCov"> 1 : Test _21()</span>
-<span class="lineNum"> 300 </span> : {
-<span class="lineNum"> 301 </span><span class="lineCov"> 1 : Path::OverrideDebtagsSourceDir odsd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 302 </span><span class="lineCov"> 2 : Path::OverrideDebtagsIndexDir odid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 303 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserSourceDir odusd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 304 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserIndexDir oduid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 305 </span><span class="lineCov"> 1 : Vocabulary empty;</span>
-<span class="lineNum"> 306 </span> :
-<span class="lineNum"> 307 </span><span class="lineCov"> 1 : assert(!empty.hasData());</span>
-<span class="lineNum"> 308 </span> :
-<span class="lineNum"> 309 </span><span class="lineCov"> 1 : set&lt;Facet&gt; facets = empty.facets();</span>
-<span class="lineNum"> 310 </span><span class="lineCov"> 1 : assert_eq(facets.size(), 0u);</span>
-<span class="lineNum"> 311 </span> :
-<span class="lineNum"> 312 </span><span class="lineCov"> 1 : set&lt;Tag&gt; tags = empty.tags();</span>
-<span class="lineNum"> 313 </span><span class="lineCov"> 1 : assert_eq(tags.size(), 0u);</span>
-<span class="lineNum"> 314 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 315 </span> :
-<span class="lineNum"> 316 </span> : };
-<span class="lineNum"> 317 </span> :
-<span class="lineNum"> 318 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/index.html b/rep/ept/index.html
deleted file mode 100644
index bbf0716..0000000
--- a/rep/ept/index.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!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</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - ept</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">38</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">73.7 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">28</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="progresscallback.cpp.gcov.html">progresscallback.cpp</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../snow.png" width=100 height=10 alt="0.0%"></td></tr></table>
- </td>
- <td class="coverPerLo">0.0&nbsp;%</td>
- <td class="coverNumLo">0&nbsp;/&nbsp;4&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="progresscallback.h.gcov.html">progresscallback.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../snow.png" width=100 height=10 alt="0.0%"></td></tr></table>
- </td>
- <td class="coverPerLo">0.0&nbsp;%</td>
- <td class="coverNumLo">0&nbsp;/&nbsp;3&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="test.h.gcov.html">test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">15&nbsp;/&nbsp;15&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="token.h.gcov.html">token.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=81 height=10 alt="81.2%"><img src="../snow.png" width=19 height=10 alt="81.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">81.2&nbsp;%</td>
- <td class="coverNumHi">13&nbsp;/&nbsp;16&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/popcon/index.html b/rep/ept/popcon/index.html
deleted file mode 100644
index d87cf3d..0000000
--- a/rep/ept/popcon/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!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/popcon</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/popcon</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">161</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">83.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">134</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="local.cc.gcov.html">local.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=62 height=10 alt="62.1%"><img src="../../snow.png" width=38 height=10 alt="62.1%"></td></tr></table>
- </td>
- <td class="coverPerHi">62.1&nbsp;%</td>
- <td class="coverNumHi">41&nbsp;/&nbsp;66&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="local.h.gcov.html">local.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">1&nbsp;/&nbsp;1&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="local.test.h.gcov.html">local.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">8&nbsp;/&nbsp;8&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="popcon.cc.gcov.html">popcon.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="95.7%"><img src="../../snow.png" width=4 height=10 alt="95.7%"></td></tr></table>
- </td>
- <td class="coverPerHi">95.7&nbsp;%</td>
- <td class="coverNumHi">22&nbsp;/&nbsp;23&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="popcon.h.gcov.html">popcon.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="96.0%"><img src="../../snow.png" width=4 height=10 alt="96.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">96.0&nbsp;%</td>
- <td class="coverNumHi">24&nbsp;/&nbsp;25&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="popcon.test.h.gcov.html">popcon.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">38&nbsp;/&nbsp;38&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/popcon/local.cc.gcov.html b/rep/ept/popcon/local.cc.gcov.html
deleted file mode 100644
index e6b44b8..0000000
--- a/rep/ept/popcon/local.cc.gcov.html
+++ /dev/null
@@ -1,235 +0,0 @@
-<!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/popcon/local.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">66</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">62.1 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">41</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> : /** @file
-<span class="lineNum"> 2 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 3 </span> : * Correlate popcon data with local popcon information
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 12 </span> : * (at your option) any later version.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 17 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 18 </span> : *
-<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 22 </span> : */
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : #include &lt;ept/popcon/local.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 31 </span> : #include &lt;fstream&gt;
-<span class="lineNum"> 32 </span> : #include &lt;cmath&gt;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : using namespace std;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : namespace ept {
-<span class="lineNum"> 39 </span> : namespace popcon {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : // Split a string where there are separators
-<span class="lineNum"> 42 </span><span class="lineCov"> 1903 : static vector&lt;string&gt; split(const std::string&amp; str, char sep = ' ')</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span><span class="lineCov"> 1903 : vector&lt;string&gt; res;</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 1903 : size_t start = 0;</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 10435 : while (start &lt; str.size())</span>
-<span class="lineNum"> 47 </span> : {
-<span class="lineNum"> 48 </span><span class="lineCov"> 8531 : size_t end = str.find(sep, start);</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 8531 : if (end == string::npos)</span>
-<span class="lineNum"> 50 </span> : {
-<span class="lineNum"> 51 </span><span class="lineCov"> 1902 : res.push_back(str.substr(start));</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 1902 : break;</span>
-<span class="lineNum"> 53 </span> : }
-<span class="lineNum"> 54 </span> : else
-<span class="lineNum"> 55 </span> : {
-<span class="lineNum"> 56 </span><span class="lineCov"> 6629 : res.push_back(str.substr(start, end-start));</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 6629 : start = end + 1;</span>
-<span class="lineNum"> 58 </span> : }
-<span class="lineNum"> 59 </span> : }
-<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : // Reverse sort pairs by comparing their second element
-<span class="lineNum"> 64 </span> : struct secondsort
-<span class="lineNum"> 65 </span> : {
-<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : bool operator()(const pair&lt;string, float&gt;&amp; a, const pair&lt;string, float&gt;&amp; b) const</span>
-<span class="lineNum"> 67 </span> : {
-<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : if (a.second == b.second)</span>
-<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return a.first &gt; b.first;</span>
-<span class="lineNum"> 70 </span> : else
-<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : return a.second &gt; b.second;</span>
-<span class="lineNum"> 72 </span> : }
-<span class="lineNum"> 73 </span> : };
-<span class="lineNum"> 74 </span> :
-<span class="lineNum"> 75 </span><span class="lineCov"> 1 : Local::Local(const std::string&amp; file)</span>
-<span class="lineNum"> 76 </span> : {
-<span class="lineNum"> 77 </span><span class="lineCov"> 1 : m_timestamp = Path::timestamp(file);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : if (m_timestamp == 0)</span>
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : return;</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : ifstream in;</span>
-<span class="lineNum"> 82 </span><span class="lineCov"> 1 : in.open(file.c_str());</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 1 : if (!in.good())</span>
-<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(file, &quot;opening file for reading&quot;);</span>
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span><span class="lineCov"> 1907 : while (!in.eof())</span>
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span><span class="lineCov"> 1905 : std::string line;</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 1905 : getline(in, line);</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 1905 : if (line.substr(0, 10) == &quot;POPULARITY&quot;)</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 3 : continue;</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1904 : if (line.substr(0, 14) == &quot;END-POPULARITY&quot;)</span>
-<span class="lineNum"> 93 </span> : continue;
-<span class="lineNum"> 94 </span><span class="lineCov"> 1903 : vector&lt;string&gt; data = split(line);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 1903 : if (data.size() &lt; 4)</span>
-<span class="lineNum"> 96 </span> : continue;
-<span class="lineNum"> 97 </span><span class="lineCov"> 1902 : if (data[3] == &quot;&lt;NOFILES&gt;&quot;)</span>
-<span class="lineNum"> 98 </span> : // This is an empty / virtual package
-<span class="lineNum"> 99 </span><span class="lineCov"> 979 : m_scores.insert(make_pair(data[2], 0.1));</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 923 : else if (data.size() == 4)</span>
-<span class="lineNum"> 101 </span> : // Package normally in use
-<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : m_scores.insert(make_pair(data[2], 1.0));</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 923 : else if (data[4] == &quot;&lt;OLD&gt;&quot;)</span>
-<span class="lineNum"> 104 </span> : // Unused packages
-<span class="lineNum"> 105 </span><span class="lineCov"> 745 : m_scores.insert(make_pair(data[2], 0.3));</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 178 : else if (data[4] == &quot;&lt;RECENT-CTIME&gt;&quot;)</span>
-<span class="lineNum"> 107 </span> : // Recently installed packages
-<span class="lineNum"> 108 </span><span class="lineCov"> 178 : m_scores.insert(make_pair(data[2], 0.5));</span>
-<span class="lineNum"> 109 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 2 : float Local::score(const std::string&amp; pkg) const</span>
-<span class="lineNum"> 113 </span> : {
-<span class="lineNum"> 114 </span><span class="lineCov"> 2 : std::map&lt;std::string, float&gt;::const_iterator i = m_scores.find(pkg);</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 2 : if (i == m_scores.end())</span>
-<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 117 </span> : else
-<span class="lineNum"> 118 </span><span class="lineCov"> 2 : return i-&gt;second;</span>
-<span class="lineNum"> 119 </span> : }
-<span class="lineNum"> 120 </span> :
-<span class="lineNum"> 121 </span> : /**
-<span class="lineNum"> 122 </span> : * Return the TFIDF score of the package computed against the popcon
-<span class="lineNum"> 123 </span> : * information.
-<span class="lineNum"> 124 </span> : */
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : float Local::tfidf(const Popcon&amp; popcon, const std::string&amp; pkg) const</span>
-<span class="lineNum"> 126 </span> : {
-<span class="lineNum"> 127 </span><span class="lineCov"> 1 : float popconScore = popcon.score(pkg);</span>
-<span class="lineNum"> 128 </span> : //cerr &lt;&lt; pkg &lt;&lt; &quot;: &quot; &lt;&lt; score(pkg) &lt;&lt; &quot; * log(&quot; &lt;&lt; (float)popcon.submissions() &lt;&lt; &quot; / &quot; &lt;&lt; popconScore &lt;&lt; &quot;) = &quot; &lt;&lt; score(pkg) * log((float)popcon.submissions() / popconScore) &lt;&lt; endl;
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : if (popconScore == 0)</span>
-<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 131 </span> : else
-<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return score(pkg) * log((float)popcon.submissions() / popconScore);</span>
-<span class="lineNum"> 133 </span> :
-<span class="lineNum"> 134 </span> : }
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span><span class="lineNoCov"> 0 : std::vector&lt; std::pair&lt;std::string, float&gt; &gt; Local::scores() const</span>
-<span class="lineNum"> 137 </span> : {
-<span class="lineNum"> 138 </span><span class="lineNoCov"> 0 : vector&lt; pair&lt;string, float&gt; &gt; res;</span>
-<span class="lineNum"> 139 </span> : // Copy the scores in res
-<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : copy(m_scores.begin(), m_scores.end(), back_inserter(res));</span>
-<span class="lineNum"> 141 </span> : // Sort res by score
-<span class="lineNum"> 142 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span>
-<span class="lineNum"> 143 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 144 </span> : }
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : std::vector&lt; std::pair&lt;std::string, float&gt; &gt; Local::tfidf(const Popcon&amp; popcon) const</span>
-<span class="lineNum"> 147 </span> : {
-<span class="lineNum"> 148 </span><span class="lineNoCov"> 0 : vector&lt; pair&lt;string, float&gt; &gt; res;</span>
-<span class="lineNum"> 149 </span> : // Compute the tfidf scores and store them into res
-<span class="lineNum"> 150 </span><span class="lineNoCov"> 0 : for (std::map&lt;std::string, float&gt;::const_iterator i = m_scores.begin();</span>
-<span class="lineNum"> 151 </span> : i != m_scores.end(); ++i)
-<span class="lineNum"> 152 </span> : {
-<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : float popconScore = popcon.score(i-&gt;first);</span>
-<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : if (popconScore == 0)</span>
-<span class="lineNum"> 155 </span><span class="lineNoCov"> 0 : res.push_back(make_pair(i-&gt;first, 0.0f));</span>
-<span class="lineNum"> 156 </span> : else
-<span class="lineNum"> 157 </span> : res.push_back(make_pair(i-&gt;first,
-<span class="lineNum"> 158 </span><span class="lineNoCov"> 0 : i-&gt;second * log((float)popcon.submissions() / popconScore)));</span>
-<span class="lineNum"> 159 </span> : }
-<span class="lineNum"> 160 </span> : // Sort res by score
-<span class="lineNum"> 161 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span>
-<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 163 </span> : }
-<span class="lineNum"> 164 </span> :
-<span class="lineNum"> 165 </span> : }
-<span class="lineNum"> 166 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 167 </span> :
-<span class="lineNum"> 168 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/local.h.gcov.html b/rep/ept/popcon/local.h.gcov.html
deleted file mode 100644
index a8cb45d..0000000
--- a/rep/ept/popcon/local.h.gcov.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!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/popcon/local.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">1</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">1</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> : #ifndef EPT_POPCON_LOCAL_H
-<span class="lineNum"> 2 </span> : #define EPT_POPCON_LOCAL_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Correlate popcon data with local popcon information
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;string&gt;
-<span class="lineNum"> 28 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 29 </span> : #include &lt;map&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace popcon {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : class Popcon;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : /**
-<span class="lineNum"> 37 </span> : * Access the results of the local daily popcon scan.
-<span class="lineNum"> 38 </span> : */
-<span class="lineNum"> 39 </span> : class Local
-<span class="lineNum"> 40 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 41 </span> : protected:
-<span class="lineNum"> 42 </span> : std::map&lt;std::string, float&gt; m_scores;
-<span class="lineNum"> 43 </span> : time_t m_timestamp;
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : public:
-<span class="lineNum"> 46 </span> : Local(const std::string&amp; file = std::string(&quot;/var/log/popularity-contest&quot;));
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : /// Get the timestamp of the local popcon information
-<span class="lineNum"> 49 </span> : time_t timestamp() const { return m_timestamp; }
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> : /// Return true if this data source has data, false if it's empty
-<span class="lineNum"> 52 </span> : bool hasData() const { return m_timestamp != 0; }
-<span class="lineNum"> 53 </span> :
-<span class="lineNum"> 54 </span> : /**
-<span class="lineNum"> 55 </span> : * Return the local score of the package
-<span class="lineNum"> 56 </span> : */
-<span class="lineNum"> 57 </span> : float score(const std::string&amp; pkg) const;
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : /**
-<span class="lineNum"> 60 </span> : * Return the TFIDF score of the package computed against the popcon
-<span class="lineNum"> 61 </span> : * information.
-<span class="lineNum"> 62 </span> : *
-<span class="lineNum"> 63 </span> : * The TFIDF score is high when a package is representative of this system,
-<span class="lineNum"> 64 </span> : * that is, it is used in this system and not much used in other systems.
-<span class="lineNum"> 65 </span> : */
-<span class="lineNum"> 66 </span> : float tfidf(const Popcon&amp; popcon, const std::string&amp; pkg) const;
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : /**
-<span class="lineNum"> 69 </span> : * Read the local popcon vote and return the list of packages and their
-<span class="lineNum"> 70 </span> : * local scores, sorted by ascending score.
-<span class="lineNum"> 71 </span> : */
-<span class="lineNum"> 72 </span> : std::vector&lt; std::pair&lt;std::string, float&gt; &gt; scores() const;
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : /**
-<span class="lineNum"> 75 </span> : * Read the local popcon vote and return the list of packages and their
-<span class="lineNum"> 76 </span> : * TFIDF scores computed against the popcon information.
-<span class="lineNum"> 77 </span> : *
-<span class="lineNum"> 78 </span> : * The packages will be sorted by ascending score.
-<span class="lineNum"> 79 </span> : */
-<span class="lineNum"> 80 </span> : std::vector&lt; std::pair&lt;std::string, float&gt; &gt; tfidf(const Popcon&amp; popcon) const;
-<span class="lineNum"> 81 </span> : };
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> : }
-<span class="lineNum"> 85 </span> :
-<span class="lineNum"> 86 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 87 </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>
diff --git a/rep/ept/popcon/local.test.h.gcov.html b/rep/ept/popcon/local.test.h.gcov.html
deleted file mode 100644
index 05ce32e..0000000
--- a/rep/ept/popcon/local.test.h.gcov.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!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/popcon/local.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">8</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">8</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /*
-<span class="lineNum"> 3 </span> : * popcon/local test
-<span class="lineNum"> 4 </span> : *
-<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 6 </span> : *
-<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 10 </span> : * (at your option) any later version.
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 15 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 20 </span> : */
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/popcon/local.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : using namespace std;
-<span class="lineNum"> 29 </span> : using namespace ept;
-<span class="lineNum"> 30 </span> : using namespace ept::popcon;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : struct TestPopconLocal
-<span class="lineNum"> 33 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 34 </span> : Path::OverridePopconSourceDir odsd;
-<span class="lineNum"> 35 </span> : Path::OverridePopconIndexDir odid;
-<span class="lineNum"> 36 </span> : Path::OverridePopconUserSourceDir odusd;
-<span class="lineNum"> 37 </span> : Path::OverridePopconUserIndexDir oduid;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : Popcon popcon;
-<span class="lineNum"> 40 </span> : Local local;
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : TestPopconLocal()</span>
-<span class="lineNum"> 43 </span> : : odsd( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 44 </span> : odid( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 45 </span> : odusd( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 46 </span> : oduid( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : local( TEST_ENV_DIR &quot;popcon/popularity-contest&quot; )</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : {}</span>
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // Very basic access
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert(local.score(&quot;apt&quot;) &gt; 0);</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(local.tfidf(popcon, &quot;apt&quot;) &gt; 0);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : #if 0 // mornfall: apparently left out by enrico, leaving as it is
-<span class="lineNum"> 58 </span> : // Check that every valid index is accessible
-<span class="lineNum"> 59 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 60 </span> : void to::test&lt; 2 &gt;()
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span> : for (size_t i = 0; i &lt; popcon.size(); ++i)
-<span class="lineNum"> 63 </span> : {
-<span class="lineNum"> 64 </span> : //cerr &lt;&lt; popcon.name(i) &lt;&lt; &quot; &quot; &lt;&lt; popcon.score(i) &lt;&lt; endl;
-<span class="lineNum"> 65 </span> : assert(popcon.score(i) &gt; 0);
-<span class="lineNum"> 66 </span> : }
-<span class="lineNum"> 67 </span> : }
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : // Check that we can get a score for every package
-<span class="lineNum"> 70 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 71 </span> : void to::test&lt; 3 &gt;()
-<span class="lineNum"> 72 </span> : {
-<span class="lineNum"> 73 </span> : int has = 0;
-<span class="lineNum"> 74 </span> : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i)
-<span class="lineNum"> 75 </span> : {
-<span class="lineNum"> 76 </span> : float score = popcon.score(*i);
-<span class="lineNum"> 77 </span> : if (score &gt; 0)
-<span class="lineNum"> 78 </span> : ++has;
-<span class="lineNum"> 79 </span> : }
-<span class="lineNum"> 80 </span> : // At least 1000 packages should have a score
-<span class="lineNum"> 81 </span> : assert(has &gt; 1000);
-<span class="lineNum"> 82 </span> : }
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : // Check that scores are meaningful
-<span class="lineNum"> 85 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 86 </span> : void to::test&lt; 4 &gt;()
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span> : assert(popcon[&quot;apt&quot;] &gt; popcon[&quot;libapt-pkg-dev&quot;]);
-<span class="lineNum"> 89 </span> : }
-<span class="lineNum"> 90 </span> :
-<span class="lineNum"> 91 </span> : // If there is no data, Popcon should work as if all scores were 0
-<span class="lineNum"> 92 </span> : template&lt;&gt; template&lt;&gt;
-<span class="lineNum"> 93 </span> : void to::test&lt;5&gt;()
-<span class="lineNum"> 94 </span> : {
-<span class="lineNum"> 95 </span> : Path::OverridePopconSourceDir odsd(&quot;./empty&quot;);
-<span class="lineNum"> 96 </span> : Path::OverridePopconIndexDir odid(&quot;./empty&quot;);
-<span class="lineNum"> 97 </span> : Path::OverridePopconUserSourceDir odusd(&quot;./empty&quot;);
-<span class="lineNum"> 98 </span> : Path::OverridePopconUserIndexDir oduid(&quot;./empty&quot;);
-<span class="lineNum"> 99 </span> : Popcon empty;
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : assert_eq(empty.timestamp(), 0);
-<span class="lineNum"> 102 </span> : assert(!empty.hasData());
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span> : assert(empty.size() == 0);
-<span class="lineNum"> 105 </span> : assert(empty.score(&quot;apt&quot;) == 0.0);
-<span class="lineNum"> 106 </span> : }
-<span class="lineNum"> 107 </span> : #endif
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : };
-<span class="lineNum"> 110 </span> :
-<span class="lineNum"> 111 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/maint/index.html b/rep/ept/popcon/maint/index.html
deleted file mode 100644
index f507903..0000000
--- a/rep/ept/popcon/maint/index.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!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/popcon/maint</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/popcon/maint</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">258</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">88.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">228</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=98 height=10 alt="97.6%"><img src="../../../snow.png" width=2 height=10 alt="97.6%"></td></tr></table>
- </td>
- <td class="coverPerHi">97.6&nbsp;%</td>
- <td class="coverNumHi">41&nbsp;/&nbsp;42&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.h.gcov.html">path.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">17&nbsp;/&nbsp;17&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="popconindexer.cc.gcov.html">popconindexer.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=79 height=10 alt="79.3%"><img src="../../../snow.png" width=21 height=10 alt="79.3%"></td></tr></table>
- </td>
- <td class="coverPerHi">79.3&nbsp;%</td>
- <td class="coverNumHi">92&nbsp;/&nbsp;116&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="popconindexer.h.gcov.html">popconindexer.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">5&nbsp;/&nbsp;5&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="sourcedir.cc.gcov.html">sourcedir.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=93 height=10 alt="93.4%"><img src="../../../snow.png" width=7 height=10 alt="93.4%"></td></tr></table>
- </td>
- <td class="coverPerHi">93.4&nbsp;%</td>
- <td class="coverNumHi">71&nbsp;/&nbsp;76&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="sourcedir.h.gcov.html">sourcedir.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">2&nbsp;/&nbsp;2&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/popcon/maint/path.cc.gcov.html b/rep/ept/popcon/maint/path.cc.gcov.html
deleted file mode 100644
index b332e8d..0000000
--- a/rep/ept/popcon/maint/path.cc.gcov.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!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/popcon/maint/path.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">42</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">97.6 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">41</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : /** \file
-<span class="lineNum"> 4 </span> : * popcon paths
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;, Peter Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 13 </span> : * (at your option) any later version.
-<span class="lineNum"> 14 </span> : *
-<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 18 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 19 </span> : *
-<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 23 </span> : */
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;sys/types.h&gt; // getpwuid, stat, mkdir, getuid
-<span class="lineNum"> 32 </span> : #include &lt;sys/stat.h&gt; // stat, mkdir
-<span class="lineNum"> 33 </span> : #include &lt;pwd.h&gt; // getpwuid
-<span class="lineNum"> 34 </span> : #include &lt;unistd.h&gt; // stat, getuid
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : using namespace wibble;
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : namespace ept {
-<span class="lineNum"> 39 </span> : namespace popcon {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 2 : static std::string userdir()</span>
-<span class="lineNum"> 42 </span> : {
-<span class="lineNum"> 43 </span><span class="lineCov"> 2 : std::string rcdir;</span>
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 2 : struct passwd* udata = getpwuid(getuid());</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 2 : rcdir = str::joinpath(udata-&gt;pw_dir, &quot;.popcon&quot;);</span>
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return rcdir;</span>
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span> :
-<span class="lineNum"> 52 </span><span class="lineCov"> 178 : Path &amp;Path::instance() {</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 178 : if (!s_instance) {</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 1 : s_instance = new Path;</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : instance().m_popconSourceDir = POPCON_DB_DIR;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 1 : instance().m_popconIndexDir = POPCON_DB_DIR;</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 2 : instance().m_popconUserSourceDir = userdir();</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 2 : instance().m_popconUserIndexDir = userdir();</span>
-<span class="lineNum"> 59 </span> : }
-<span class="lineNum"> 60 </span><span class="lineCov"> 178 : return *s_instance;</span>
-<span class="lineNum"> 61 </span> : }
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span><span class="lineCov"> 2 : int Path::access( const std::string &amp;s, int m ) {</span>
-<span class="lineNum"> 64 </span><span class="lineCov"> 2 : return ::access( s.c_str(), m );</span>
-<span class="lineNum"> 65 </span> : }
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 49 : time_t Path::timestamp( const std::string&amp; file ) {</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 49 : std::auto_ptr&lt;struct stat&gt; st = wibble::sys::fs::stat(file);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 90 : return st.get() == NULL ? 0 : st-&gt;st_mtime;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineCov"> 14 : void Path::setPopconSourceDir( const std::string &amp;s )</span>
-<span class="lineNum"> 73 </span> : {
-<span class="lineNum"> 74 </span><span class="lineCov"> 14 : instance().m_popconSourceDir = s;</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 14 : }</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 14 : void Path::setPopconIndexDir( const std::string &amp;s )</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineCov"> 14 : instance().m_popconIndexDir = s;</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 14 : }</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 14 : void Path::setPopconUserSourceDir( const std::string &amp;s )</span>
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span><span class="lineCov"> 14 : instance().m_popconUserSourceDir = s;</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 14 : }</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 14 : void Path::setPopconUserIndexDir( const std::string &amp;s )</span>
-<span class="lineNum"> 85 </span> : {
-<span class="lineNum"> 86 </span><span class="lineCov"> 14 : instance().m_popconUserIndexDir = s;</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 14 : }</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span><span class="lineCov"> 14 : std::string Path::popconSourceDir() { return instance().m_popconSourceDir; }</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 43 : std::string Path::popconIndexDir() { return instance().m_popconIndexDir; }</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 14 : std::string Path::popconUserSourceDir() { return instance().m_popconUserSourceDir; }</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 47 : std::string Path::popconUserIndexDir() { return instance().m_popconUserIndexDir; }</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 17 : std::string Path::scores() {</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), &quot;scores&quot;);</span>
-<span class="lineNum"> 96 </span> : }
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineCov"> 17 : std::string Path::scoresIndex() {</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), &quot;scores.idx&quot;);</span>
-<span class="lineNum"> 100 </span> : }
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span><span class="lineCov"> 20 : std::string Path::userScores() {</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), &quot;scores&quot;);</span>
-<span class="lineNum"> 104 </span> : }
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineCov"> 20 : std::string Path::userScoresIndex() {</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), &quot;scores.idx&quot;);</span>
-<span class="lineNum"> 108 </span> : }
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : Path *Path::s_instance = 0;
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span> : }
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/maint/path.h.gcov.html b/rep/ept/popcon/maint/path.h.gcov.html
deleted file mode 100644
index 557613c..0000000
--- a/rep/ept/popcon/maint/path.h.gcov.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!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/popcon/maint/path.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">17</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">17</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /** \file
-<span class="lineNum"> 3 </span> : * popcon paths
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 12 </span> : * (at your option) any later version.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 17 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 18 </span> : *
-<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 22 </span> : */
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : #ifndef EPT_POPCON_PATH_H
-<span class="lineNum"> 25 </span> : #define EPT_POPCON_PATH_H
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;string&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : struct stat;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace popcon {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : /**
-<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Popcon paths
-<span class="lineNum"> 36 </span> : */
-<span class="lineNum"> 37 </span> : class Path
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 39 </span> : public:
-<span class="lineNum"> 40 </span> : static std::string scores();
-<span class="lineNum"> 41 </span> : static std::string scoresIndex();
-<span class="lineNum"> 42 </span> : static std::string userScores();
-<span class="lineNum"> 43 </span> : static std::string userScoresIndex();
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : static std::string popconSourceDir();
-<span class="lineNum"> 46 </span> : static std::string popconIndexDir();
-<span class="lineNum"> 47 </span> : static std::string popconUserSourceDir();
-<span class="lineNum"> 48 </span> : static std::string popconUserIndexDir();
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // Directory where Popcon source data is found
-<span class="lineNum"> 51 </span> : static void setPopconSourceDir( const std::string &amp;s );
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : // Directory where Popcon indexes are kept
-<span class="lineNum"> 54 </span> : static void setPopconIndexDir( const std::string &amp;s );
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : // User-specific directory for Popcon source data
-<span class="lineNum"> 57 </span> : static void setPopconUserSourceDir( const std::string &amp;s );
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : // User-specific directory for Popcon index data
-<span class="lineNum"> 60 </span> : static void setPopconUserIndexDir( const std::string &amp;s );
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : static int access( const std::string &amp;, int );
-<span class="lineNum"> 63 </span> : static time_t timestamp( const std::string&amp; );
-<span class="lineNum"> 64 </span> :
-<span class="lineNum"> 65 </span> : // RAII-style classes to temporarily override directories
-<span class="lineNum"> 66 </span> : class OverridePopconSourceDir
-<span class="lineNum"> 67 </span> : {
-<span class="lineNum"> 68 </span> : std::string old;
-<span class="lineNum"> 69 </span> : public:
-<span class="lineNum"> 70 </span><span class="lineCov"> 7 : OverridePopconSourceDir(const std::string&amp; path) : old(Path::popconSourceDir())</span>
-<span class="lineNum"> 71 </span> : {
-<span class="lineNum"> 72 </span><span class="lineCov"> 7 : Path::setPopconSourceDir(path);</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 7 : ~OverridePopconSourceDir() { Path::setPopconSourceDir(old); }</span>
-<span class="lineNum"> 75 </span> : };
-<span class="lineNum"> 76 </span> : class OverridePopconIndexDir
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span> : std::string old;
-<span class="lineNum"> 79 </span> : public:
-<span class="lineNum"> 80 </span><span class="lineCov"> 7 : OverridePopconIndexDir(const std::string&amp; path) : old(Path::popconIndexDir())</span>
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span><span class="lineCov"> 7 : Path::setPopconIndexDir(path);</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 7 : ~OverridePopconIndexDir() { Path::setPopconIndexDir(old); }</span>
-<span class="lineNum"> 85 </span> : };
-<span class="lineNum"> 86 </span> : class OverridePopconUserSourceDir
-<span class="lineNum"> 87 </span> : {
-<span class="lineNum"> 88 </span> : std::string old;
-<span class="lineNum"> 89 </span> : public:
-<span class="lineNum"> 90 </span><span class="lineCov"> 7 : OverridePopconUserSourceDir(const std::string&amp; path) : old(Path::popconUserSourceDir())</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span><span class="lineCov"> 7 : Path::setPopconUserSourceDir(path);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 7 : ~OverridePopconUserSourceDir() { Path::setPopconUserSourceDir(old); }</span>
-<span class="lineNum"> 95 </span> : };
-<span class="lineNum"> 96 </span> : class OverridePopconUserIndexDir
-<span class="lineNum"> 97 </span> : {
-<span class="lineNum"> 98 </span> : std::string old;
-<span class="lineNum"> 99 </span> : public:
-<span class="lineNum"> 100 </span><span class="lineCov"> 7 : OverridePopconUserIndexDir(const std::string&amp; path) : old(Path::popconUserIndexDir())</span>
-<span class="lineNum"> 101 </span> : {
-<span class="lineNum"> 102 </span><span class="lineCov"> 7 : Path::setPopconUserIndexDir(path);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 104 </span><span class="lineCov"> 7 : ~OverridePopconUserIndexDir() { Path::setPopconUserIndexDir(old); }</span>
-<span class="lineNum"> 105 </span> : };
-<span class="lineNum"> 106 </span> : protected:
-<span class="lineNum"> 107 </span> : static Path *s_instance;
-<span class="lineNum"> 108 </span> : static Path &amp;instance();
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : // Directory where Popcon source data is found
-<span class="lineNum"> 111 </span> : std::string m_popconSourceDir;
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : // Directory where Popcon indexes are kept
-<span class="lineNum"> 114 </span> : std::string m_popconIndexDir;
-<span class="lineNum"> 115 </span> :
-<span class="lineNum"> 116 </span> : // User-specific directory for Popcon source data
-<span class="lineNum"> 117 </span> : std::string m_popconUserSourceDir;
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span> : // User-specific directory for Popcon index data
-<span class="lineNum"> 120 </span> : std::string m_popconUserIndexDir;
-<span class="lineNum"> 121 </span> : };
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : }
-<span class="lineNum"> 124 </span> : }
-<span class="lineNum"> 125 </span> :
-<span class="lineNum"> 126 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 127 </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>
diff --git a/rep/ept/popcon/maint/popconindexer.cc.gcov.html b/rep/ept/popcon/maint/popconindexer.cc.gcov.html
deleted file mode 100644
index 28d6298..0000000
--- a/rep/ept/popcon/maint/popconindexer.cc.gcov.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!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/popcon/maint/popconindexer.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">116</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">79.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">92</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> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/popcon/maint/popconindexer.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 6 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : #include &lt;tagcoll/diskindex/mmap.h&gt;
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : #include &lt;set&gt;
-<span class="lineNum"> 11 </span> : #include &lt;string&gt;
-<span class="lineNum"> 12 </span> : #include &lt;cstdio&gt;
-<span class="lineNum"> 13 </span> : #include &lt;cstring&gt;
-<span class="lineNum"> 14 </span> :
-<span class="lineNum"> 15 </span> : using namespace std;
-<span class="lineNum"> 16 </span> :
-<span class="lineNum"> 17 </span> : namespace ept {
-<span class="lineNum"> 18 </span> : namespace popcon {
-<span class="lineNum"> 19 </span> :
-<span class="lineNum"> 20 </span> : template&lt;typename STRUCT&gt;
-<span class="lineNum"> 21 </span> : struct StructIndexer : public tagcoll::diskindex::MMapIndexer
-<span class="lineNum"> 22 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 23 </span> : const STRUCT&amp; data;
-<span class="lineNum"> 24 </span><span class="lineCov"> 1 : StructIndexer(const STRUCT&amp; data) : data(data) {}</span>
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span><span class="lineCov"> 1 : int encodedSize() const { return sizeof(STRUCT); }</span>
-<span class="lineNum"> 27 </span><span class="lineCov"> 1 : void encode(char* buf) const { *(STRUCT*)buf = data; }</span>
-<span class="lineNum"> 28 </span> : };
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : /// MMapIndexer that indexes the package names
-<span class="lineNum"> 31 </span> : struct PopconGenerator : public tagcoll::diskindex::MMapIndexer
-<span class="lineNum"> 32 </span><span class="lineCov"> 4 : {</span>
-<span class="lineNum"> 33 </span> : // Sorted set of all available package names and data
-<span class="lineNum"> 34 </span> : std::map&lt;std::string, Score&gt; data;
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 1 : int encodedSize() const</span>
-<span class="lineNum"> 37 </span> : {
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : int size = data.size() * sizeof(Score);</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 69911 : for (std::map&lt;std::string, Score&gt;::const_iterator i = data.begin();</span>
-<span class="lineNum"> 40 </span> : i != data.end(); ++i)
-<span class="lineNum"> 41 </span><span class="lineCov"> 69910 : size += i-&gt;first.size() + 1;</span>
-<span class="lineNum"> 42 </span><span class="lineCov"> 1 : return tagcoll::diskindex::MMap::align(size);</span>
-<span class="lineNum"> 43 </span> : }
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 1 : void encode(char* buf) const</span>
-<span class="lineNum"> 46 </span> : {
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : int pos = data.size() * sizeof(Score);</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : int idx = 0;</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 69911 : for (std::map&lt;std::string, Score&gt;::const_iterator i = data.begin();</span>
-<span class="lineNum"> 50 </span> : i != data.end(); ++i)
-<span class="lineNum"> 51 </span> : {
-<span class="lineNum"> 52 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx] = i-&gt;second;</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx].offset = pos;</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 69910 : memcpy(buf + pos, i-&gt;first.c_str(), i-&gt;first.size() + 1);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 69910 : pos += i-&gt;first.size() + 1;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 69910 : ++idx;</span>
-<span class="lineNum"> 57 </span> : }
-<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 59 </span> : };
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span><span class="lineCov"> 7 : PopconIndexer::PopconIndexer()</span>
-<span class="lineNum"> 63 </span> : : mainSource(Path::popconSourceDir()),
-<span class="lineNum"> 64 </span><span class="lineCov"> 7 : userSource(Path::popconUserSourceDir())</span>
-<span class="lineNum"> 65 </span> : {
-<span class="lineNum"> 66 </span><span class="lineCov"> 7 : rescan();</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineCov"> 7 : void PopconIndexer::rescan()</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span><span class="lineCov"> 7 : ts_main_src = mainSource.timestamp();</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 7 : ts_user_src = userSource.timestamp();</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 7 : ts_main_sco = Path::timestamp(Path::scores());</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 14 : ts_user_sco = Path::timestamp(Path::userScores());</span>
-<span class="lineNum"> 75 </span><span class="lineCov"> 14 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 14 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 7 : }</span>
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span><span class="lineCov"> 7 : bool PopconIndexer::needsRebuild() const</span>
-<span class="lineNum"> 80 </span> : {
-<span class="lineNum"> 81 </span> : // If there are no indexes of any kind, then we need rebuilding
-<span class="lineNum"> 82 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 || ts_main_sco == 0 || ts_user_idx == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 2 : return true;</span>
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span> : // If the user index is ok, then we are fine
-<span class="lineNum"> 86 </span><span class="lineCov"> 5 : if (ts_user_sco &gt;= sourceTimestamp() &amp;&amp; ts_user_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 5 : return false;</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : // If there are user sources, then we cannot use the system index
-<span class="lineNum"> 90 </span><span class="lineNoCov"> 0 : if (ts_user_src &gt; 0)</span>
-<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span> : // If there are no user sources, then we can fallback on the system
-<span class="lineNum"> 94 </span> : // indexes in case the user indexes are not up to date
-<span class="lineNum"> 95 </span><span class="lineNoCov"> 0 : if (ts_main_sco &gt;= sourceTimestamp() &amp;&amp; ts_main_idx &gt;= sourceTimestamp())</span>
-<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 99 </span> : }
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span><span class="lineCov"> 7 : bool PopconIndexer::userIndexIsRedundant() const</span>
-<span class="lineNum"> 102 </span> : {
-<span class="lineNum"> 103 </span> : // If there is no user index, then it is not redundant
-<span class="lineNum"> 104 </span><span class="lineCov"> 7 : if (ts_user_idx == 0)</span>
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 106 </span> :
-<span class="lineNum"> 107 </span> : // If the system index is not up to date, then the user index is not
-<span class="lineNum"> 108 </span> : // redundant
-<span class="lineNum"> 109 </span><span class="lineCov"> 6 : if (ts_main_idx &lt; sourceTimestamp())</span>
-<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span><span class="lineCov"> 6 : return true;</span>
-<span class="lineNum"> 113 </span> : }
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span><span class="lineCov"> 2 : bool PopconIndexer::rebuild(const std::string&amp; scofname, const std::string&amp; idxfname)</span>
-<span class="lineNum"> 116 </span> : {
-<span class="lineNum"> 117 </span><span class="lineCov"> 2 : PopconGenerator gen;</span>
-<span class="lineNum"> 118 </span> : InfoStruct is;
-<span class="lineNum"> 119 </span><span class="lineCov"> 2 : is.submissions = 0;</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 2 : if (!mainSource.readScores(gen.data, is.submissions))</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 1 : userSource.readScores(gen.data, is.submissions);</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 2 : if (gen.data.empty())</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span><span class="lineCov"> 1 : StructIndexer&lt;InfoStruct&gt; infoStruct(is);</span>
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : // Create the index
-<span class="lineNum"> 128 </span><span class="lineCov"> 1 : tagcoll::diskindex::MasterMMapIndexer master(idxfname);</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : master.append(gen);</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 1 : master.append(infoStruct);</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 1 : master.commit();</span>
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : // for (map&lt;string, Score&gt;::const_iterator i = gen.data.begin(); i != gen.data.end(); ++i)
-<span class="lineNum"> 134 </span> : // {
-<span class="lineNum"> 135 </span> : // fprintf(stderr, &quot;%s %d %f\n&quot;, i-&gt;first.c_str(), i-&gt;second.offset, i-&gt;second.score);
-<span class="lineNum"> 136 </span> : // }
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </span> : // Create the score file
-<span class="lineNum"> 139 </span><span class="lineCov"> 1 : FILE* out = fopen(scofname.c_str(), &quot;wt&quot;);</span>
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : if (out == NULL)</span>
-<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(scofname, &quot;opening and truncating file for writing&quot;);</span>
-<span class="lineNum"> 142 </span><span class="lineCov"> 69911 : for (map&lt;string, Score&gt;::const_iterator i = gen.data.begin();</span>
-<span class="lineNum"> 143 </span> : i != gen.data.end(); ++i)
-<span class="lineNum"> 144 </span> : {
-<span class="lineNum"> 145 </span><span class="lineCov"> 69910 : fprintf(out, &quot;%s %f\n&quot;, i-&gt;first.c_str(), i-&gt;second.score);</span>
-<span class="lineNum"> 146 </span> : }
-<span class="lineNum"> 147 </span><span class="lineCov"> 1 : fclose(out);</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 149 </span> : }
-<span class="lineNum"> 150 </span> :
-<span class="lineNum"> 151 </span><span class="lineCov"> 7 : bool PopconIndexer::rebuildIfNeeded()</span>
-<span class="lineNum"> 152 </span> : {
-<span class="lineNum"> 153 </span><span class="lineCov"> 7 : if (needsRebuild())</span>
-<span class="lineNum"> 154 </span> : {
-<span class="lineNum"> 155 </span> : // Decide if we rebuild the user index or the system index
-<span class="lineNum"> 156 </span><span class="lineCov"> 2 : if (Path::access(Path::popconIndexDir(), W_OK) == 0)</span>
-<span class="lineNum"> 157 </span> : {
-<span class="lineNum"> 158 </span> : // Since we can write on the system index directory, we rebuild
-<span class="lineNum"> 159 </span> : // the system index
-<span class="lineNum"> 160 </span><span class="lineCov"> 2 : if (!rebuild(Path::scores(), Path::scoresIndex()))</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 1 : ts_main_sco = Path::timestamp(Path::scores());</span>
-<span class="lineNum"> 163 </span><span class="lineCov"> 2 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span>
-<span class="lineNum"> 164 </span><span class="lineCov"> 2 : if (Path::scores() == Path::userScores())</span>
-<span class="lineNum"> 165 </span><span class="lineCov"> 1 : ts_user_sco = ts_main_sco;</span>
-<span class="lineNum"> 166 </span><span class="lineCov"> 1 : if (Path::scoresIndex() == Path::userScoresIndex())</span>
-<span class="lineNum"> 167 </span><span class="lineCov"> 1 : ts_user_idx = ts_main_idx;</span>
-<span class="lineNum"> 168 </span> : } else {
-<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScores());</span>
-<span class="lineNum"> 170 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScoresIndex());</span>
-<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : if (!rebuild(Path::userScores(), Path::userScoresIndex()))</span>
-<span class="lineNum"> 172 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : ts_user_sco = Path::timestamp(Path::userScores());</span>
-<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span>
-<span class="lineNum"> 175 </span> : }
-<span class="lineNum"> 176 </span><span class="lineCov"> 1 : return true;</span>
-<span class="lineNum"> 177 </span> : }
-<span class="lineNum"> 178 </span><span class="lineCov"> 5 : return false;</span>
-<span class="lineNum"> 179 </span> : }
-<span class="lineNum"> 180 </span> :
-<span class="lineNum"> 181 </span><span class="lineCov"> 7 : bool PopconIndexer::deleteRedundantUserIndex()</span>
-<span class="lineNum"> 182 </span> : {
-<span class="lineNum"> 183 </span><span class="lineCov"> 7 : if (userIndexIsRedundant())</span>
-<span class="lineNum"> 184 </span> : {
-<span class="lineNum"> 185 </span> : // Delete the user indexes if they exist
-<span class="lineNum"> 186 </span><span class="lineCov"> 6 : if (Path::scores() != Path::userScores())</span>
-<span class="lineNum"> 187 </span> : {
-<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : unlink(Path::userScores().c_str());</span>
-<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : ts_user_sco = 0;</span>
-<span class="lineNum"> 190 </span> : }
-<span class="lineNum"> 191 </span><span class="lineCov"> 6 : if (Path::scoresIndex() != Path::userScoresIndex())</span>
-<span class="lineNum"> 192 </span> : {
-<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : unlink(Path::userScoresIndex().c_str());</span>
-<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : ts_user_idx = 0;</span>
-<span class="lineNum"> 195 </span> : }
-<span class="lineNum"> 196 </span><span class="lineCov"> 6 : return true;</span>
-<span class="lineNum"> 197 </span> : }
-<span class="lineNum"> 198 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 199 </span> : }
-<span class="lineNum"> 200 </span> :
-<span class="lineNum"> 201 </span><span class="lineCov"> 7 : bool PopconIndexer::getUpToDatePopcon(std::string&amp; scofname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 202 </span> : {
-<span class="lineNum"> 203 </span> : // If there are no indexes of any kind, then we have nothing to return
-<span class="lineNum"> 204 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 &amp;&amp; ts_main_sco == 0 &amp;&amp; ts_user_idx == 0 &amp;&amp; ts_main_idx == 0)</span>
-<span class="lineNum"> 205 </span><span class="lineCov"> 1 : return false;</span>
-<span class="lineNum"> 206 </span> :
-<span class="lineNum"> 207 </span> : // If the user index is up to date, use it
-<span class="lineNum"> 208 </span><span class="lineCov"> 6 : if (ts_user_sco &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 209 </span> : ts_user_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 210 </span> : {
-<span class="lineNum"> 211 </span><span class="lineCov"> 6 : scofname = Path::userScores();</span>
-<span class="lineNum"> 212 </span><span class="lineCov"> 12 : idxfname = Path::userScoresIndex();</span>
-<span class="lineNum"> 213 </span><span class="lineCov"> 6 : return true;</span>
-<span class="lineNum"> 214 </span> : }
-<span class="lineNum"> 215 </span> :
-<span class="lineNum"> 216 </span> : // If the user index is not up to date and we have user sources, we cannot
-<span class="lineNum"> 217 </span> : // fall back to the system index
-<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : if (ts_user_src != 0)</span>
-<span class="lineNum"> 219 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 220 </span> :
-<span class="lineNum"> 221 </span> : // Fallback to the system index
-<span class="lineNum"> 222 </span><span class="lineNoCov"> 0 : if (ts_main_sco &gt;= sourceTimestamp() &amp;&amp;</span>
-<span class="lineNum"> 223 </span> : ts_main_idx &gt;= sourceTimestamp())
-<span class="lineNum"> 224 </span> : {
-<span class="lineNum"> 225 </span><span class="lineNoCov"> 0 : scofname = Path::scores();</span>
-<span class="lineNum"> 226 </span><span class="lineNoCov"> 0 : idxfname = Path::scoresIndex();</span>
-<span class="lineNum"> 227 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 228 </span> : }
-<span class="lineNum"> 229 </span> :
-<span class="lineNum"> 230 </span><span class="lineNoCov"> 0 : return false;</span>
-<span class="lineNum"> 231 </span> : }
-<span class="lineNum"> 232 </span> :
-<span class="lineNum"> 233 </span> :
-<span class="lineNum"> 234 </span><span class="lineCov"> 7 : bool PopconIndexer::obtainWorkingPopcon(std::string&amp; scofname, std::string&amp; idxfname)</span>
-<span class="lineNum"> 235 </span> : {
-<span class="lineNum"> 236 </span><span class="lineCov"> 7 : PopconIndexer indexer;</span>
-<span class="lineNum"> 237 </span> :
-<span class="lineNum"> 238 </span><span class="lineCov"> 7 : indexer.rebuildIfNeeded();</span>
-<span class="lineNum"> 239 </span><span class="lineCov"> 7 : indexer.deleteRedundantUserIndex();</span>
-<span class="lineNum"> 240 </span><span class="lineCov"> 7 : return indexer.getUpToDatePopcon(scofname, idxfname);</span>
-<span class="lineNum"> 241 </span> : }
-<span class="lineNum"> 242 </span> :
-<span class="lineNum"> 243 </span> :
-<span class="lineNum"> 244 </span> : }
-<span class="lineNum"> 245 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 246 </span> :
-<span class="lineNum"> 247 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/maint/popconindexer.h.gcov.html b/rep/ept/popcon/maint/popconindexer.h.gcov.html
deleted file mode 100644
index fe36a9d..0000000
--- a/rep/ept/popcon/maint/popconindexer.h.gcov.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!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/popcon/maint/popconindexer.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</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> : #ifndef EPT_DEBTAGS_PKGIDINDEXER_H
-<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_PKGIDINDEXER_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Rebuild and maintain the map from package IDs to package names
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/popcon/maint/sourcedir.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;string&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : namespace ept {
-<span class="lineNum"> 31 </span> : namespace popcon {
-<span class="lineNum"> 32 </span> :
-<span class="lineNum"> 33 </span> : struct InfoStruct
-<span class="lineNum"> 34 </span> : {
-<span class="lineNum"> 35 </span> : size_t submissions;
-<span class="lineNum"> 36 </span> : };
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : struct PopconIndexer
-<span class="lineNum"> 39 </span><span class="lineCov"> 7 : {</span>
-<span class="lineNum"> 40 </span> : SourceDir mainSource;
-<span class="lineNum"> 41 </span> : SourceDir userSource;
-<span class="lineNum"> 42 </span> : time_t ts_main_src;
-<span class="lineNum"> 43 </span> : time_t ts_user_src;
-<span class="lineNum"> 44 </span> : time_t ts_main_sco;
-<span class="lineNum"> 45 </span> : time_t ts_user_sco;
-<span class="lineNum"> 46 </span> : time_t ts_main_idx;
-<span class="lineNum"> 47 </span> : time_t ts_user_idx;
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span><span class="lineCov"> 28 : time_t sourceTimestamp() const</span>
-<span class="lineNum"> 50 </span> : {
-<span class="lineNum"> 51 </span><span class="lineCov"> 28 : time_t res = ts_main_src;</span>
-<span class="lineNum"> 52 </span><span class="lineCov"> 28 : if (ts_user_src &gt; res) res = ts_user_src;</span>
-<span class="lineNum"> 53 </span><span class="lineCov"> 28 : return res;</span>
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span> : }
-<span class="lineNum"> 56 </span> : bool needsRebuild() const;
-<span class="lineNum"> 57 </span> : bool rebuild(const std::string&amp; scofname, const std::string&amp; idxfname);
-<span class="lineNum"> 58 </span> : bool rebuildIfNeeded();
-<span class="lineNum"> 59 </span> : bool getUpToDatePopcon(std::string&amp; scofname, std::string&amp; idxfname);
-<span class="lineNum"> 60 </span> :
-<span class="lineNum"> 61 </span> : bool userIndexIsRedundant() const;
-<span class="lineNum"> 62 </span> : bool deleteRedundantUserIndex();
-<span class="lineNum"> 63 </span> :
-<span class="lineNum"> 64 </span> : void rescan();
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span> : PopconIndexer();
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span> : static bool obtainWorkingPopcon(std::string&amp; scofname, std::string&amp; idxfname);
-<span class="lineNum"> 69 </span> : };
-<span class="lineNum"> 70 </span> :
-<span class="lineNum"> 71 </span> : }
-<span class="lineNum"> 72 </span> : }
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 75 </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>
diff --git a/rep/ept/popcon/maint/sourcedir.cc.gcov.html b/rep/ept/popcon/maint/sourcedir.cc.gcov.html
deleted file mode 100644
index 80a1a4e..0000000
--- a/rep/ept/popcon/maint/sourcedir.cc.gcov.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!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/popcon/maint/sourcedir.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">76</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">93.4 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">71</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> : #include &lt;ept/popcon/maint/sourcedir.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : #include &lt;tagcoll/input/zlib.h&gt;
-<span class="lineNum"> 7 </span> : #include &lt;tagcoll/input/stdio.h&gt;
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : #include &lt;cstdlib&gt;
-<span class="lineNum"> 10 </span> :
-<span class="lineNum"> 11 </span> : using namespace std;
-<span class="lineNum"> 12 </span> : using namespace wibble;
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span> : namespace ept {
-<span class="lineNum"> 15 </span> : namespace popcon {
-<span class="lineNum"> 16 </span> :
-<span class="lineNum"> 17 </span><span class="lineCov"> 93 : SourceDir::FileType SourceDir::fileType(const std::string&amp; name)</span>
-<span class="lineNum"> 18 </span> : {
-<span class="lineNum"> 19 </span><span class="lineCov"> 93 : if (name[0] == '.') return SKIP;</span>
-<span class="lineNum"> 20 </span> :
-<span class="lineNum"> 21 </span><span class="lineCov"> 59 : if (name == &quot;all-popcon-results.txt&quot;) return RAW;</span>
-<span class="lineNum"> 22 </span><span class="lineCov"> 59 : if (name == &quot;all-popcon-results.txt.gz&quot;) return RAWGZ;</span>
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span><span class="lineCov"> 46 : return SKIP;</span>
-<span class="lineNum"> 25 </span> : }
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span><span class="lineCov"> 14 : time_t SourceDir::timestamp()</span>
-<span class="lineNum"> 28 </span> : {
-<span class="lineNum"> 29 </span><span class="lineCov"> 14 : if (!valid()) return 0;</span>
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span><span class="lineCov"> 14 : time_t max = 0;</span>
-<span class="lineNum"> 32 </span><span class="lineCov"> 98 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 33 </span> : {
-<span class="lineNum"> 34 </span><span class="lineCov"> 84 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 84 : if (type == SKIP) continue;</span>
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span><span class="lineCov"> 12 : time_t ts = Path::timestamp(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 38 </span><span class="lineCov"> 24 : if (ts &gt; max) max = ts;</span>
-<span class="lineNum"> 39 </span><span class="lineCov"> 14 : }</span>
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span><span class="lineCov"> 14 : return max;</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 70200 : bool readLine(tagcoll::input::Input&amp; in, string&amp; str)</span>
-<span class="lineNum"> 45 </span> : {
-<span class="lineNum"> 46 </span><span class="lineCov"> 70200 : str.clear();</span>
-<span class="lineNum"> 47 </span> : int c;
-<span class="lineNum"> 48 </span><span class="lineCov"> 4594913 : while ((c = in.nextChar()) != tagcoll::input::Input::Eof &amp;&amp; c != '\n')</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 4454513 : str += c;</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 70200 : return c != tagcoll::input::Input::Eof;</span>
-<span class="lineNum"> 51 </span> : }
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : static void parseScores(tagcoll::input::Input&amp; in, map&lt;std::string, Score&gt;&amp; out, size_t&amp; submissions)</span>
-<span class="lineNum"> 54 </span> : {
-<span class="lineNum"> 55 </span><span class="lineCov"> 1 : string line;</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 140349 : while (readLine(in, line))</span>
-<span class="lineNum"> 57 </span> : {
-<span class="lineNum"> 58 </span><span class="lineCov"> 70199 : if (line.size() &lt; 10)</span>
-<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 70199 : if (line.substr(0, 13) == &quot;Submissions: &quot;)</span>
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span><span class="lineCov"> 1 : submissions = strtoul(line.substr(13).c_str(), 0, 10);</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 1 : continue;</span>
-<span class="lineNum"> 64 </span> : }
-<span class="lineNum"> 65 </span><span class="lineCov"> 70198 : if (line.substr(0, 9) != &quot;Package: &quot;)</span>
-<span class="lineNum"> 66 </span><span class="lineCov"> 50 : continue;</span>
-<span class="lineNum"> 67 </span><span class="lineCov"> 70148 : size_t start = 9;</span>
-<span class="lineNum"> 68 </span><span class="lineCov"> 70148 : size_t end = line.find(' ', start);</span>
-<span class="lineNum"> 69 </span><span class="lineCov"> 70148 : if (end == string::npos)</span>
-<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : continue;</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 70148 : string name = line.substr(start, end-start);</span>
-<span class="lineNum"> 72 </span> : // Skip packages not in the apt index
-<span class="lineNum"> 73 </span> : //if (!apt.isValid(name))
-<span class="lineNum"> 74 </span> : //continue;
-<span class="lineNum"> 75 </span> :
-<span class="lineNum"> 76 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 70148 : string vote = line.substr(start, end-start);</span>
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span>
-<span class="lineNum"> 84 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span>
-<span class="lineNum"> 85 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 70148 : string old = line.substr(start, end-start);</span>
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span>
-<span class="lineNum"> 89 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span>
-<span class="lineNum"> 90 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 70148 : string recent = line.substr(start, end-start);</span>
-<span class="lineNum"> 93 </span> :
-<span class="lineNum"> 94 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 70148 : if (end == string::npos) end = line.size();</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 70148 : string nofiles = line.substr(start, end-start);</span>
-<span class="lineNum"> 99 </span> :
-<span class="lineNum"> 100 </span> : float score = (float)strtoul(vote.c_str(), NULL, 10)
-<span class="lineNum"> 101 </span> : + (float)strtoul(recent.c_str(), NULL, 10) * 0.5f
-<span class="lineNum"> 102 </span> : + (float)strtoul(old.c_str(), NULL, 10) * 0.3f
-<span class="lineNum"> 103 </span><span class="lineCov"> 70148 : + (float)strtoul(nofiles.c_str(), NULL, 10) * 0.8f;</span>
-<span class="lineNum"> 104 </span> :
-<span class="lineNum"> 105 </span><span class="lineCov"> 70148 : if (score &gt; 0)</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 69910 : out.insert(make_pair(name, Score(score)));</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span><span class="lineCov"> 3 : bool SourceDir::readScores(map&lt;std::string, Score&gt;&amp; out, size_t&amp; submissions)</span>
-<span class="lineNum"> 111 </span> : {
-<span class="lineNum"> 112 </span><span class="lineCov"> 3 : if (!valid()) return false;</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 3 : bool done = false;</span>
-<span class="lineNum"> 114 </span> :
-<span class="lineNum"> 115 </span><span class="lineCov"> 12 : for (const_iterator d = begin(); d != end(); ++d)</span>
-<span class="lineNum"> 116 </span> : {
-<span class="lineNum"> 117 </span><span class="lineCov"> 9 : FileType type = fileType(d-&gt;d_name);</span>
-<span class="lineNum"> 118 </span><span class="lineCov"> 9 : if (type == RAW)</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span> : // Read uncompressed data
-<span class="lineNum"> 121 </span><span class="lineNoCov"> 0 : tagcoll::input::Stdio in(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : // Read the scores
-<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : parseScores(in, out, submissions);</span>
-<span class="lineNum"> 125 </span><span class="lineNoCov"> 0 : done = true;</span>
-<span class="lineNum"> 126 </span> : }
-<span class="lineNum"> 127 </span><span class="lineCov"> 9 : else if (type == RAWGZ)</span>
-<span class="lineNum"> 128 </span> : {
-<span class="lineNum"> 129 </span> : // Read compressed data
-<span class="lineNum"> 130 </span><span class="lineCov"> 1 : tagcoll::input::Zlib in(str::joinpath(path(), d-&gt;d_name));</span>
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span> : // Read the scores
-<span class="lineNum"> 133 </span><span class="lineCov"> 1 : parseScores(in, out, submissions);</span>
-<span class="lineNum"> 134 </span><span class="lineCov"> 1 : done = true;</span>
-<span class="lineNum"> 135 </span> : }
-<span class="lineNum"> 136 </span><span class="lineCov"> 3 : }</span>
-<span class="lineNum"> 137 </span><span class="lineCov"> 3 : return done;</span>
-<span class="lineNum"> 138 </span> : }
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span> : }
-<span class="lineNum"> 141 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 142 </span> :
-<span class="lineNum"> 143 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/maint/sourcedir.h.gcov.html b/rep/ept/popcon/maint/sourcedir.h.gcov.html
deleted file mode 100644
index 56c0640..0000000
--- a/rep/ept/popcon/maint/sourcedir.h.gcov.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!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/popcon/maint/sourcedir.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">2</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">2</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> : #ifndef EPT_POPCON_SOURCEDIR_H
-<span class="lineNum"> 2 </span> : #define EPT_POPCON_SOURCEDIR_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Popcon data source directory access
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;string&gt;
-<span class="lineNum"> 30 </span> : #include &lt;map&gt;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : namespace ept {
-<span class="lineNum"> 33 </span> : namespace popcon {
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : /**
-<span class="lineNum"> 36 </span> : * Access a directory containing Debtags data files
-<span class="lineNum"> 37 </span> : */
-<span class="lineNum"> 38 </span> : class SourceDir : public wibble::sys::fs::Directory
-<span class="lineNum"> 39 </span><span class="lineCov"> 14 : {</span>
-<span class="lineNum"> 40 </span> : protected:
-<span class="lineNum"> 41 </span> : enum FileType { SKIP, RAW, RAWGZ };
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : // Check if a file name is a tag file, a vocabulary file or a file to skip.
-<span class="lineNum"> 44 </span> : // Please notice that it works on file names, not paths.
-<span class="lineNum"> 45 </span> : FileType fileType(const std::string&amp; name);
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : public:
-<span class="lineNum"> 48 </span><span class="lineCov"> 14 : SourceDir(const std::string&amp; path) : Directory(path) {}</span>
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : /// Return the time of the newest file in the source directory
-<span class="lineNum"> 51 </span> : time_t timestamp();
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : /**
-<span class="lineNum"> 54 </span> : * Read the tag files in the directory and output their content to the map
-<span class="lineNum"> 55 </span> : */
-<span class="lineNum"> 56 </span> : bool readScores(std::map&lt;std::string, Score&gt;&amp; out, size_t&amp; submissions);
-<span class="lineNum"> 57 </span> : };
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : }
-<span class="lineNum"> 60 </span> : }
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 63 </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>
diff --git a/rep/ept/popcon/popcon.cc.gcov.html b/rep/ept/popcon/popcon.cc.gcov.html
deleted file mode 100644
index f38fb61..0000000
--- a/rep/ept/popcon/popcon.cc.gcov.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!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/popcon/popcon.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">23</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">95.7 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">22</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : /** @file
-<span class="lineNum"> 4 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 5 </span> : * Quick map from package IDs to package names
-<span class="lineNum"> 6 </span> : */
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : /*
-<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 10 </span> : *
-<span class="lineNum"> 11 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 12 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 13 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 14 </span> : * (at your option) any later version.
-<span class="lineNum"> 15 </span> : *
-<span class="lineNum"> 16 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 19 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 20 </span> : *
-<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 22 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 24 </span> : */
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;ept/popcon/maint/popconindexer.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span> : //#include &lt;iostream&gt;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : using namespace std;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : namespace ept {
-<span class="lineNum"> 35 </span> : namespace popcon {
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span><span class="lineCov"> 3 : size_t Popcon::GeneralInfo::submissions() const</span>
-<span class="lineNum"> 38 </span> : {
-<span class="lineNum"> 39 </span><span class="lineCov"> 3 : if (!m_buf) return 0;</span>
-<span class="lineNum"> 40 </span><span class="lineCov"> 2 : return ((InfoStruct*)m_buf)-&gt;submissions;</span>
-<span class="lineNum"> 41 </span> : }
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span><span class="lineCov"> 7 : Popcon::Popcon()</span>
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span><span class="lineCov"> 7 : std::string scofname, idxfname;</span>
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span><span class="lineCov"> 7 : if (!PopconIndexer::obtainWorkingPopcon(scofname, idxfname))</span>
-<span class="lineNum"> 48 </span> : {
-<span class="lineNum"> 49 </span><span class="lineCov"> 1 : m_timestamp = 0;</span>
-<span class="lineNum"> 50 </span><span class="lineCov"> 1 : return;</span>
-<span class="lineNum"> 51 </span> : }
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : //cerr &lt;&lt; &quot;GOT &quot; &lt;&lt; scofname &lt;&lt; &quot; &quot; &lt;&lt; idxfname &lt;&lt; endl;
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span><span class="lineCov"> 6 : m_timestamp = Path::timestamp(idxfname);</span>
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span><span class="lineCov"> 6 : mastermmap.init(idxfname);</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 6 : tagcoll::diskindex::MMap::init(mastermmap, 0);</span>
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span><span class="lineCov"> 6 : m_info.init(mastermmap, 1);</span>
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : //cerr &lt;&lt; &quot;SIZE &quot; &lt;&lt; size() &lt;&lt; endl;
-<span class="lineNum"> 63 </span> : //for (size_t i = 0; i &lt; size(); ++i)
-<span class="lineNum"> 64 </span> : //{
-<span class="lineNum"> 65 </span> : // cerr &lt;&lt; &quot;EL &quot; &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; ((Score*)m_buf)[i].offset &lt;&lt; &quot; &quot; &lt;&lt; ((Score*)m_buf)[i].score &lt;&lt; endl;
-<span class="lineNum"> 66 </span> : //}
-<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span><span class="lineCov"> 1792 : float Popcon::scoreByName(const std::string&amp; name) const</span>
-<span class="lineNum"> 70 </span> : {
-<span class="lineNum"> 71 </span> : // Binary search the index to find the package ID
-<span class="lineNum"> 72 </span> : int begin, end;
-<span class="lineNum"> 73 </span> :
-<span class="lineNum"> 74 </span> : /* Binary search */
-<span class="lineNum"> 75 </span><span class="lineCov"> 1792 : begin = -1, end = size();</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 32470 : while (end - begin &gt; 1)</span>
-<span class="lineNum"> 77 </span> : {
-<span class="lineNum"> 78 </span><span class="lineCov"> 28886 : int cur = (end + begin) / 2;</span>
-<span class="lineNum"> 79 </span><span class="lineCov"> 28886 : if (this-&gt;name(cur) &gt; name)</span>
-<span class="lineNum"> 80 </span><span class="lineCov"> 14367 : end = cur;</span>
-<span class="lineNum"> 81 </span> : else
-<span class="lineNum"> 82 </span><span class="lineCov"> 14519 : begin = cur;</span>
-<span class="lineNum"> 83 </span> : }
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineCov"> 1792 : if (begin == -1 || this-&gt;name(begin) != name)</span>
-<span class="lineNum"> 86 </span> : //throw NotFoundException(string(&quot;looking for the ID of string &quot;) + str);
-<span class="lineNum"> 87 </span><span class="lineCov"> 31 : return 0;</span>
-<span class="lineNum"> 88 </span> : else
-<span class="lineNum"> 89 </span><span class="lineCov"> 1761 : return score(begin);</span>
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span> : }
-<span class="lineNum"> 93 </span> : }
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/popcon/popcon.h.gcov.html b/rep/ept/popcon/popcon.h.gcov.html
deleted file mode 100644
index 270736f..0000000
--- a/rep/ept/popcon/popcon.h.gcov.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!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/popcon/popcon.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">25</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">96.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">24</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : #ifndef EPT_POPCON_POPCON_H
-<span class="lineNum"> 3 </span> : #define EPT_POPCON_POPCON_H
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : /** @file
-<span class="lineNum"> 6 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 7 </span> : * Access popcon data
-<span class="lineNum"> 8 </span> : */
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span> : /*
-<span class="lineNum"> 11 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 12 </span> : *
-<span class="lineNum"> 13 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 14 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 15 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 16 </span> : * (at your option) any later version.
-<span class="lineNum"> 17 </span> : *
-<span class="lineNum"> 18 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 19 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 20 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 21 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 22 </span> : *
-<span class="lineNum"> 23 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 24 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 25 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 26 </span> : */
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;tagcoll/diskindex/mmap.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;string&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace apt {
-<span class="lineNum"> 33 </span> : class Apt;
-<span class="lineNum"> 34 </span> : }
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span> : namespace popcon {
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </span> : /**
-<span class="lineNum"> 39 </span> : * Store the score information in the popcon cache.
-<span class="lineNum"> 40 </span> : *
-<span class="lineNum"> 41 </span> : * Currently, this is only one float; more can be added in the future.
-<span class="lineNum"> 42 </span> : */
-<span class="lineNum"> 43 </span> : class Score
-<span class="lineNum"> 44 </span> : {
-<span class="lineNum"> 45 </span> : protected:
-<span class="lineNum"> 46 </span> : unsigned offset;
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : public:
-<span class="lineNum"> 49 </span> : float score;
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 69910 : Score(float score) : offset(offset), score(score) {}</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : friend class Popcon;
-<span class="lineNum"> 54 </span> : friend class PopconIndexer;
-<span class="lineNum"> 55 </span> : friend class PopconGenerator;
-<span class="lineNum"> 56 </span> : };
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : /**
-<span class="lineNum"> 59 </span> : * Maps Packages to IDs and vice-versa.
-<span class="lineNum"> 60 </span> : *
-<span class="lineNum"> 61 </span> : * This is used in building the Debtags fast index, which works representing
-<span class="lineNum"> 62 </span> : * tags and packages as int IDs.
-<span class="lineNum"> 63 </span> : *
-<span class="lineNum"> 64 </span> : * Index building works like this:
-<span class="lineNum"> 65 </span> : * 1. The file all-popcon-results.txt.gz is downloaded from
-<span class="lineNum"> 66 </span> : * http://popcon.debian.org/all-popcon-results.txt.gz
-<span class="lineNum"> 67 </span> : * 2. The file is put in either ~/.popcon/all-popcon-results.txt.gz
-<span class="lineNum"> 68 </span> : * or in /var/lib/popcon/all-popcon-results.txt.gz
-<span class="lineNum"> 69 </span> : * 3. If the file is newer than the index, it will be automatically used to
-<span class="lineNum"> 70 </span> : * recompute the scores and rebuild the index.
-<span class="lineNum"> 71 </span> : */
-<span class="lineNum"> 72 </span> : class Popcon : public tagcoll::diskindex::MMap
-<span class="lineNum"> 73 </span><span class="lineCov"> 7 : {</span>
-<span class="lineNum"> 74 </span> : struct GeneralInfo : public tagcoll::diskindex::MMap
-<span class="lineNum"> 75 </span><span class="lineCov"> 7 : {</span>
-<span class="lineNum"> 76 </span> : size_t submissions() const;
-<span class="lineNum"> 77 </span> : };
-<span class="lineNum"> 78 </span> :
-<span class="lineNum"> 79 </span> : tagcoll::diskindex::MasterMMap mastermmap;
-<span class="lineNum"> 80 </span> : time_t m_timestamp;
-<span class="lineNum"> 81 </span> :
-<span class="lineNum"> 82 </span> : GeneralInfo m_info;
-<span class="lineNum"> 83 </span> :
-<span class="lineNum"> 84 </span> : /// Get the score structure by index
-<span class="lineNum"> 85 </span><span class="lineCov"> 102350 : const Score* structByIndex(size_t idx) const</span>
-<span class="lineNum"> 86 </span> : {
-<span class="lineNum"> 87 </span><span class="lineCov"> 102350 : if (idx &gt;= 0 &amp;&amp; idx &lt; size())</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 102350 : return (Score*)m_buf + idx;</span>
-<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span> :
-<span class="lineNum"> 92 </span> : public:
-<span class="lineNum"> 93 </span> : Popcon();
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span> : /// Get the timestamp of when the index was last updated
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : time_t timestamp() const { return m_timestamp; }</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span> : /// Return true if this data source has data, false if it's empty
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span>
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span> : /// Return the total number of popcon submissions
-<span class="lineNum"> 102 </span><span class="lineCov"> 3 : size_t submissions() const { return m_info.submissions(); }</span>
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span> : /// Get the number of packages in the index
-<span class="lineNum"> 105 </span><span class="lineCov"> 174055 : size_t size() const</span>
-<span class="lineNum"> 106 </span> : {
-<span class="lineNum"> 107 </span><span class="lineCov"> 174055 : if (m_buf)</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 174053 : return ((Score*)m_buf)-&gt;offset / sizeof(Score);</span>
-<span class="lineNum"> 109 </span> : else
-<span class="lineNum"> 110 </span><span class="lineCov"> 2 : return 0;</span>
-<span class="lineNum"> 111 </span> : }
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : /**
-<span class="lineNum"> 114 </span> : * Get a package name by index
-<span class="lineNum"> 115 </span> : *
-<span class="lineNum"> 116 </span> : * If the index is not valid, returns the empty string.
-<span class="lineNum"> 117 </span> : */
-<span class="lineNum"> 118 </span><span class="lineCov"> 30678 : std::string name(size_t idx) const</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span><span class="lineCov"> 30678 : const Score* s = structByIndex(idx);</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 30678 : if (s == 0) return std::string();</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 30678 : return std::string(m_buf + s-&gt;offset);</span>
-<span class="lineNum"> 123 </span> : }
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span> : /// Get the score by index
-<span class="lineNum"> 126 </span><span class="lineCov"> 71672 : float scoreByIndex(size_t idx) const</span>
-<span class="lineNum"> 127 </span> : {
-<span class="lineNum"> 128 </span><span class="lineCov"> 71672 : const Score* s = structByIndex(idx);</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 71672 : if (!s) return 0;</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 71672 : return s-&gt;score;</span>
-<span class="lineNum"> 131 </span> : }
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : /// Get the score structure by package name
-<span class="lineNum"> 134 </span> : float scoreByName(const std::string&amp; name) const;
-<span class="lineNum"> 135 </span> :
-<span class="lineNum"> 136 </span> : /// Get the score by index
-<span class="lineNum"> 137 </span><span class="lineCov"> 71672 : float score(size_t idx) const { return scoreByIndex(idx); }</span>
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : /// Get the score by index
-<span class="lineNum"> 140 </span> : float operator[](int idx) const { return scoreByIndex(idx); }
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span> : /// Get the score by name
-<span class="lineNum"> 143 </span><span class="lineCov"> 1790 : float score(const std::string&amp; name) const { return scoreByName(name); }</span>
-<span class="lineNum"> 144 </span> :
-<span class="lineNum"> 145 </span> : /// Get the score structure by package name
-<span class="lineNum"> 146 </span><span class="lineCov"> 2 : float operator[](const std::string&amp; name) const { return scoreByName(name); }</span>
-<span class="lineNum"> 147 </span> : };
-<span class="lineNum"> 148 </span> :
-<span class="lineNum"> 149 </span> : }
-<span class="lineNum"> 150 </span> : }
-<span class="lineNum"> 151 </span> :
-<span class="lineNum"> 152 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 153 </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>
diff --git a/rep/ept/popcon/popcon.test.h.gcov.html b/rep/ept/popcon/popcon.test.h.gcov.html
deleted file mode 100644
index 65387fc..0000000
--- a/rep/ept/popcon/popcon.test.h.gcov.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!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/popcon/popcon.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">38</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">38</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /*
-<span class="lineNum"> 3 </span> : * popcon test
-<span class="lineNum"> 4 </span> : *
-<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 6 </span> : *
-<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 10 </span> : * (at your option) any later version.
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 15 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 20 </span> : */
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/popcon/popcon.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/popcon/maint/path.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;set&gt;
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : using namespace std;
-<span class="lineNum"> 30 </span> : using namespace ept;
-<span class="lineNum"> 31 </span> : using namespace ept::popcon;
-<span class="lineNum"> 32 </span> : using namespace ept::apt;
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : struct TestPopcon
-<span class="lineNum"> 35 </span><span class="lineCov"> 5 : {</span>
-<span class="lineNum"> 36 </span> : popcon::Path::OverridePopconSourceDir odsd;
-<span class="lineNum"> 37 </span> : popcon::Path::OverridePopconIndexDir odid;
-<span class="lineNum"> 38 </span> : popcon::Path::OverridePopconUserSourceDir odusd;
-<span class="lineNum"> 39 </span> : popcon::Path::OverridePopconUserIndexDir oduid;
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : Apt apt;
-<span class="lineNum"> 42 </span> : Popcon popcon;
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 5 : TestPopcon()</span>
-<span class="lineNum"> 45 </span> : : odsd( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 46 </span> : odid( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 47 </span> : odusd( TEST_ENV_DIR &quot;popcon&quot; ),
-<span class="lineNum"> 48 </span><span class="lineCov"> 5 : oduid( TEST_ENV_DIR &quot;popcon&quot; )</span>
-<span class="lineNum"> 49 </span><span class="lineCov"> 5 : {}</span>
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert_eq(popcon.submissions(), 52024);</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(popcon.size() &gt; 0);</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert(popcon.score(0) &gt; 0);</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 2 : assert(!popcon.name(0).empty());</span>
-<span class="lineNum"> 57 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 58 </span> :
-<span class="lineNum"> 59 </span> : // Check that every valid index is accessible
-<span class="lineNum"> 60 </span><span class="lineCov"> 1 : Test accessibility()</span>
-<span class="lineNum"> 61 </span> : {
-<span class="lineNum"> 62 </span><span class="lineCov"> 139822 : for (size_t i = 0; i &lt; popcon.size(); ++i)</span>
-<span class="lineNum"> 63 </span> : {
-<span class="lineNum"> 64 </span> : //cerr &lt;&lt; popcon.name(i) &lt;&lt; &quot; &quot; &lt;&lt; popcon.score(i) &lt;&lt; endl;
-<span class="lineNum"> 65 </span><span class="lineCov"> 69910 : assert(popcon.score(i) &gt; 0);</span>
-<span class="lineNum"> 66 </span> : }
-<span class="lineNum"> 67 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 68 </span> :
-<span class="lineNum"> 69 </span> : // Check that we can get a score for every package
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test haveScores()</span>
-<span class="lineNum"> 71 </span> : {
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : int has = 0;</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 1789 : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i)</span>
-<span class="lineNum"> 74 </span> : {
-<span class="lineNum"> 75 </span><span class="lineCov"> 1788 : float score = popcon.score(*i);</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 1788 : if (score &gt; 0)</span>
-<span class="lineNum"> 77 </span><span class="lineCov"> 1758 : ++has;</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 79 </span> : // At least 1000 packages should have a score
-<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert(has &gt; 1000);</span>
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : // Check that scores are meaningful
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : Test validScores()</span>
-<span class="lineNum"> 85 </span> : {
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert(popcon[&quot;apt&quot;] &gt; popcon[&quot;libapt-pkg-dev&quot;]);</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : // If there is no data, Popcon should work as if all scores were 0
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Test fallbackValues()</span>
-<span class="lineNum"> 91 </span> : {
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : popcon::Path::OverridePopconSourceDir odsd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconIndexDir odid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 94 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserSourceDir odusd(&quot;./empty&quot;);</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserIndexDir oduid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Popcon empty;</span>
-<span class="lineNum"> 97 </span> :
-<span class="lineNum"> 98 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span>
-<span class="lineNum"> 100 </span> :
-<span class="lineNum"> 101 </span><span class="lineCov"> 2 : assert_eq(empty.submissions(), 0);</span>
-<span class="lineNum"> 102 </span><span class="lineCov"> 2 : assert(empty.size() == 0);</span>
-<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert(empty.score(&quot;apt&quot;) == 0.0);</span>
-<span class="lineNum"> 104 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span> : };
-<span class="lineNum"> 107 </span> :
-<span class="lineNum"> 108 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/progresscallback.cpp.gcov.html b/rep/ept/progresscallback.cpp.gcov.html
deleted file mode 100644
index 1a46d4e..0000000
--- a/rep/ept/progresscallback.cpp.gcov.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!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/progresscallback.cpp</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - progresscallback.cpp</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">4</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">0.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">0</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> : #include &lt;ept/progresscallback.h&gt;
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : namespace ept {
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span><span class="lineNoCov"> 0 : bool ProgressCallback::Pulse(pkgAcquire *Owner)</span>
-<span class="lineNum"> 6 </span> : {
-<span class="lineNum"> 7 </span><span class="lineNoCov"> 0 : pkgAcquireStatus::Pulse(Owner);</span>
-<span class="lineNum"> 8 </span><span class="lineNoCov"> 0 : UpdatePulse(FetchedBytes, CurrentCPS, CurrentItems);</span>
-<span class="lineNum"> 9 </span><span class="lineNoCov"> 0 : return true;</span>
-<span class="lineNum"> 10 </span> : }
-<span class="lineNum"> 11 </span> :
-<span class="lineNum"> 12 </span> : }
-</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>
diff --git a/rep/ept/progresscallback.h.gcov.html b/rep/ept/progresscallback.h.gcov.html
deleted file mode 100644
index 9dbb029..0000000
--- a/rep/ept/progresscallback.h.gcov.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!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/progresscallback.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - progresscallback.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">3</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">0.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">0</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> : @file progresscallback.h
-<span class="lineNum"> 3 </span> : @author Michael Vogt &lt;mvo@debian.org&gt;
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : #ifndef EPT_PROGRESSCALLBACK_H
-<span class="lineNum"> 7 </span> : #define EPT_PROGRESSCALLBACK_H
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : #include &lt;apt-pkg/acquire.h&gt;
-<span class="lineNum"> 10 </span> :
-<span class="lineNum"> 11 </span> : namespace ept {
-<span class="lineNum"> 12 </span> :
-<span class="lineNum"> 13 </span> : class ProgressCallback : public pkgAcquireStatus
-<span class="lineNum"> 14 </span> : {
-<span class="lineNum"> 15 </span> : protected:
-<span class="lineNum"> 16 </span> : virtual bool Pulse(pkgAcquire *Owner);
-<span class="lineNum"> 17 </span> : public:
-<span class="lineNum"> 18 </span> : ProgressCallback() {};
-<span class="lineNum"> 19 </span><span class="lineNoCov"> 0 : virtual ~ProgressCallback() {};</span>
-<span class="lineNum"> 20 </span><span class="lineNoCov"> 0 : virtual bool MediaChange( string, string ) { return false; } // bah</span>
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : // override this to get periodic updates
-<span class="lineNum"> 23 </span><span class="lineNoCov"> 0 : virtual void UpdatePulse( double, double, unsigned long ) {}</span>
-<span class="lineNum"> 24 </span> : };
-<span class="lineNum"> 25 </span> :
-<span class="lineNum"> 26 </span> : }
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </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>
diff --git a/rep/ept/test.h.gcov.html b/rep/ept/test.h.gcov.html
deleted file mode 100644
index 4004bd7..0000000
--- a/rep/ept/test.h.gcov.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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/test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">15</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">15</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> : #include &lt;ept/core/apt.h&gt;
-<span class="lineNum"> 2 </span> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;ept/debtags/maint/path.h&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #include &lt;wibble/test.h&gt;
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : #ifndef EPT_TEST_H
-<span class="lineNum"> 8 </span> : #define EPT_TEST_H
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span><span class="lineCov"> 73 : struct AptTestEnvironment {</span>
-<span class="lineNum"> 11 </span> : ept::core::AptDatabase db;
-<span class="lineNum"> 12 </span><span class="lineCov"> 73 : AptTestEnvironment() {</span>
-<span class="lineNum"> 13 </span><span class="lineCov"> 73 : pkgInitConfig (*_config);</span>
-<span class="lineNum"> 14 </span><span class="lineCov"> 73 : _config-&gt;Set(&quot;Initialized&quot;, 1);</span>
-<span class="lineNum"> 15 </span><span class="lineCov"> 73 : _config-&gt;Set(&quot;Dir&quot;, TEST_ENV_DIR);</span>
-<span class="lineNum"> 16 </span><span class="lineCov"> 146 : _config-&gt;Set(&quot;Dir::Cache&quot;, &quot;cache&quot;);</span>
-<span class="lineNum"> 17 </span><span class="lineCov"> 146 : _config-&gt;Set(&quot;Dir::State&quot;, &quot;state&quot;);</span>
-<span class="lineNum"> 18 </span><span class="lineCov"> 146 : _config-&gt;Set(&quot;Dir::Etc&quot;, &quot;etc&quot;);</span>
-<span class="lineNum"> 19 </span><span class="lineCov"> 146 : _config-&gt;Set(&quot;Dir::State::status&quot;, TEST_ENV_DIR &quot;dpkg-status&quot;);</span>
-<span class="lineNum"> 20 </span><span class="lineCov"> 73 : pkgInitSystem (*_config, _system);</span>
-<span class="lineNum"> 21 </span><span class="lineCov"> 73 : }</span>
-<span class="lineNum"> 22 </span> : };
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span><span class="lineCov"> 29 : struct DebtagsTestEnvironment : AptTestEnvironment {</span>
-<span class="lineNum"> 25 </span> : ept::debtags::Path::OverrideDebtagsSourceDir odsd;
-<span class="lineNum"> 26 </span> : ept::debtags::Path::OverrideDebtagsIndexDir odid;
-<span class="lineNum"> 27 </span> : ept::debtags::Path::OverrideDebtagsUserSourceDir odusd;
-<span class="lineNum"> 28 </span> : ept::debtags::Path::OverrideDebtagsUserIndexDir oduid;
-<span class="lineNum"> 29 </span> :
-<span class="lineNum"> 30 </span><span class="lineCov"> 29 : DebtagsTestEnvironment()</span>
-<span class="lineNum"> 31 </span> : : odsd( TEST_ENV_DIR &quot;debtags/&quot;),
-<span class="lineNum"> 32 </span> : odid( TEST_ENV_DIR &quot;debtags/&quot;),
-<span class="lineNum"> 33 </span> : odusd( TEST_ENV_DIR &quot;debtags/&quot;),
-<span class="lineNum"> 34 </span><span class="lineCov"> 29 : oduid( TEST_ENV_DIR &quot;debtags/&quot;)</span>
-<span class="lineNum"> 35 </span><span class="lineCov"> 29 : {}</span>
-<span class="lineNum"> 36 </span> : };
-<span class="lineNum"> 37 </span> :
-<span class="lineNum"> 38 </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>
diff --git a/rep/ept/textsearch/extraindexers.cc.gcov.html b/rep/ept/textsearch/extraindexers.cc.gcov.html
deleted file mode 100644
index 9072fde..0000000
--- a/rep/ept/textsearch/extraindexers.cc.gcov.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!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/textsearch/extraindexers.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - extraindexers.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">10</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">0.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">0</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> :
-<span class="lineNum"> 2 </span> : /** @file
-<span class="lineNum"> 3 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 4 </span> : * Fast full-text search
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 13 </span> : * (at your option) any later version.
-<span class="lineNum"> 14 </span> : *
-<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 18 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 19 </span> : *
-<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 23 </span> : */
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;ept/textsearch/extraindexers.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/apt/packagerecord.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : using namespace std;
-<span class="lineNum"> 30 </span> : using namespace ept::debtags;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : namespace ept {
-<span class="lineNum"> 33 </span> : namespace textsearch {
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span><span class="lineNoCov"> 0 : void AptTagsExtraIndexer::operator()(Xapian::Document&amp; doc, const apt::PackageRecord&amp; rec) const</span>
-<span class="lineNum"> 36 </span> : {
-<span class="lineNum"> 37 </span> : // Index tags as well
-<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : set&lt;string&gt; tags = rec.tag();</span>
-<span class="lineNum"> 39 </span><span class="lineNoCov"> 0 : for (set&lt;string&gt;::const_iterator ti = tags.begin();</span>
-<span class="lineNum"> 40 </span> : ti != tags.end(); ++ti)
-<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : doc.add_term(&quot;XT&quot;+*ti);</span>
-<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : void DebtagsExtraIndexer::operator()(Xapian::Document&amp; doc, const apt::PackageRecord&amp; rec) const</span>
-<span class="lineNum"> 45 </span> : {
-<span class="lineNum"> 46 </span> : // Index tags as well
-<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : set&lt;Tag&gt; tags = debtags.getTagsOfItem(doc.get_data());</span>
-<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : for (set&lt;Tag&gt;::const_iterator ti = tags.begin();</span>
-<span class="lineNum"> 49 </span> : ti != tags.end(); ++ti)
-<span class="lineNum"> 50 </span><span class="lineNoCov"> 0 : doc.add_term(&quot;XT&quot;+ti-&gt;fullname());</span>
-<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span> : }
-<span class="lineNum"> 54 </span> : }
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> : #include &lt;ept/debtags/debtags.tcc&gt;
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/textsearch/extraindexers.h.gcov.html b/rep/ept/textsearch/extraindexers.h.gcov.html
deleted file mode 100644
index bb7734f..0000000
--- a/rep/ept/textsearch/extraindexers.h.gcov.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!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/textsearch/extraindexers.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - extraindexers.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">2</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">0.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">0</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> : #ifndef EPT_TEXTSEARCH_EXTRAINDEXERS_H
-<span class="lineNum"> 2 </span> : #define EPT_TEXTSEARCH_EXTRAINDEXERS_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Fast full-text search
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;ept/textsearch/textsearch.h&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace debtags {
-<span class="lineNum"> 31 </span> : class Debtags;
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> : namespace textsearch {
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : struct AptTagsExtraIndexer : public TextSearch::ExtraIndexer
-<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : {</span>
-<span class="lineNum"> 37 </span> : virtual void operator()(Xapian::Document&amp; doc, const apt::PackageRecord&amp; rec) const;
-<span class="lineNum"> 38 </span> : };
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span> : struct DebtagsExtraIndexer : public TextSearch::ExtraIndexer
-<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : {</span>
-<span class="lineNum"> 42 </span> : const debtags::Debtags&amp; debtags;
-<span class="lineNum"> 43 </span> : DebtagsExtraIndexer(const debtags::Debtags&amp; debtags) : debtags(debtags) {}
-<span class="lineNum"> 44 </span> : virtual void operator()(Xapian::Document&amp; doc, const apt::PackageRecord&amp; rec) const;
-<span class="lineNum"> 45 </span> : };
-<span class="lineNum"> 46 </span> :
-<span class="lineNum"> 47 </span> : }
-<span class="lineNum"> 48 </span> : }
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 51 </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>
diff --git a/rep/ept/textsearch/index.html b/rep/ept/textsearch/index.html
deleted file mode 100644
index 331b9e7..0000000
--- a/rep/ept/textsearch/index.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!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/textsearch</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/textsearch</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">216</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">77.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">167</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="extraindexers.cc.gcov.html">extraindexers.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../snow.png" width=100 height=10 alt="0.0%"></td></tr></table>
- </td>
- <td class="coverPerLo">0.0&nbsp;%</td>
- <td class="coverNumLo">0&nbsp;/&nbsp;10&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="extraindexers.h.gcov.html">extraindexers.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../snow.png" width=100 height=10 alt="0.0%"></td></tr></table>
- </td>
- <td class="coverPerLo">0.0&nbsp;%</td>
- <td class="coverNumLo">0&nbsp;/&nbsp;2&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="textsearch.cc.gcov.html">textsearch.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=72 height=10 alt="72.2%"><img src="../../snow.png" width=28 height=10 alt="72.2%"></td></tr></table>
- </td>
- <td class="coverPerHi">72.2&nbsp;%</td>
- <td class="coverNumHi">83&nbsp;/&nbsp;115&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="textsearch.h.gcov.html">textsearch.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="86.7%"><img src="../../snow.png" width=13 height=10 alt="86.7%"></td></tr></table>
- </td>
- <td class="coverPerHi">86.7&nbsp;%</td>
- <td class="coverNumHi">13&nbsp;/&nbsp;15&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="textsearch.test.h.gcov.html">textsearch.test.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="95.9%"><img src="../../snow.png" width=4 height=10 alt="95.9%"></td></tr></table>
- </td>
- <td class="coverPerHi">95.9&nbsp;%</td>
- <td class="coverNumHi">71&nbsp;/&nbsp;74&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/textsearch/maint/index.html b/rep/ept/textsearch/maint/index.html
deleted file mode 100644
index 45b6542..0000000
--- a/rep/ept/textsearch/maint/index.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!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/textsearch/maint</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/textsearch/maint</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">34</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">85.3 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr>
- </table>
-
- <center>
- <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%"><br></td>
- <td width="15%"></td>
- <td width="15%"></td>
- <td width="20%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Filename</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=83 height=10 alt="82.8%"><img src="../../../snow.png" width=17 height=10 alt="82.8%"></td></tr></table>
- </td>
- <td class="coverPerHi">82.8&nbsp;%</td>
- <td class="coverNumHi">24&nbsp;/&nbsp;29&nbsp;lines</td>
- </tr>
-
- <tr>
- <td class="coverFile"><a href="path.h.gcov.html">path.h</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table>
- </td>
- <td class="coverPerHi">100.0&nbsp;%</td>
- <td class="coverNumHi">5&nbsp;/&nbsp;5&nbsp;lines</td>
- </tr>
-
- </table>
- </center>
- <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">LTP GCOV extension version 1.6</a></td></tr>
- </table>
- <br>
-
-</body>
-</html>
diff --git a/rep/ept/textsearch/maint/path.cc.gcov.html b/rep/ept/textsearch/maint/path.cc.gcov.html
deleted file mode 100644
index 6363c97..0000000
--- a/rep/ept/textsearch/maint/path.cc.gcov.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!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/textsearch/maint/path.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/textsearch/maint</a> - path.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">29</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">82.8 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">24</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> :
-<span class="lineNum"> 3 </span> : /** \file
-<span class="lineNum"> 4 </span> : * popcon paths
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;, Peter Rockai &lt;me@mornfall.net&gt;
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 13 </span> : * (at your option) any later version.
-<span class="lineNum"> 14 </span> : *
-<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 18 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 19 </span> : *
-<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 23 </span> : */
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;ept/config.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/textsearch/maint/path.h&gt;
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : #include &lt;wibble/exception.h&gt;
-<span class="lineNum"> 29 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 30 </span> : #include &lt;wibble/string.h&gt;
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : #include &lt;cstdio&gt;
-<span class="lineNum"> 33 </span> : #include &lt;cerrno&gt;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : #include &lt;sys/types.h&gt;
-<span class="lineNum"> 36 </span> : #include &lt;sys/stat.h&gt;
-<span class="lineNum"> 37 </span> : #include &lt;unistd.h&gt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : using namespace std;
-<span class="lineNum"> 40 </span> : using namespace wibble;
-<span class="lineNum"> 41 </span> :
-<span class="lineNum"> 42 </span> : namespace ept {
-<span class="lineNum"> 43 </span> : namespace textsearch {
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span><span class="lineCov"> 111 : Path &amp;Path::instance() {</span>
-<span class="lineNum"> 46 </span><span class="lineCov"> 111 : if (!s_instance) {</span>
-<span class="lineNum"> 47 </span><span class="lineCov"> 1 : s_instance = new Path;</span>
-<span class="lineNum"> 48 </span><span class="lineCov"> 1 : instance().m_indexDir = TEXTSEARCH_DB_DIR;</span>
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span><span class="lineCov"> 111 : return *s_instance;</span>
-<span class="lineNum"> 51 </span> : }
-<span class="lineNum"> 52 </span> :
-<span class="lineNum"> 53 </span><span class="lineNoCov"> 0 : int Path::access( const std::string &amp;s, int m )</span>
-<span class="lineNum"> 54 </span> : {
-<span class="lineNum"> 55 </span><span class="lineNoCov"> 0 : return ::access( s.c_str(), m );</span>
-<span class="lineNum"> 56 </span> : }
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span><span class="lineCov"> 20 : time_t Path::indexTimestamp()</span>
-<span class="lineNum"> 59 </span> : {
-<span class="lineNum"> 60 </span><span class="lineCov"> 20 : string tsfile = str::joinpath(instance().indexDir(), &quot;update-timestamp&quot;);</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 40 : std::auto_ptr&lt;struct stat&gt; st = wibble::sys::fs::stat(tsfile);</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 20 : if (st.get())</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 18 : return st-&gt;st_mtime;</span>
-<span class="lineNum"> 64 </span> : else
-<span class="lineNum"> 65 </span><span class="lineCov"> 2 : return 0;</span>
-<span class="lineNum"> 66 </span> : }
-<span class="lineNum"> 67 </span> :
-<span class="lineNum"> 68 </span><span class="lineCov"> 6 : void Path::setTimestamp(time_t ts)</span>
-<span class="lineNum"> 69 </span> : {
-<span class="lineNum"> 70 </span><span class="lineCov"> 6 : string tsfile = str::joinpath(instance().indexDir(), &quot;/update-timestamp&quot;);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 12 : FILE* out = fopen(tsfile.c_str(), &quot;wt&quot;);</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 6 : if (!out)</span>
-<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, &quot;opening file for truncate/writing&quot;);</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 6 : if (fprintf(out, &quot;%ld\n&quot;, ts) &lt; 0)</span>
-<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, &quot;writing the modification time&quot;);</span>
-<span class="lineNum"> 76 </span><span class="lineCov"> 6 : if (fclose(out) &lt; 0)</span>
-<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, &quot;closing the file&quot;);</span>
-<span class="lineNum"> 78 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 79 </span> :
-<span class="lineNum"> 80 </span><span class="lineCov"> 22 : void Path::setIndexDir( const std::string &amp;s )</span>
-<span class="lineNum"> 81 </span> : {
-<span class="lineNum"> 82 </span><span class="lineCov"> 22 : instance().m_indexDir = s;</span>
-<span class="lineNum"> 83 </span><span class="lineCov"> 22 : }</span>
-<span class="lineNum"> 84 </span> :
-<span class="lineNum"> 85 </span><span class="lineCov"> 37 : std::string Path::indexDir() { return instance().m_indexDir; }</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 25 : std::string Path::index() { return str::joinpath(instance().m_indexDir, &quot;/index&quot;); }</span>
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : Path *Path::s_instance = 0;
-<span class="lineNum"> 89 </span> :
-<span class="lineNum"> 90 </span> : }
-<span class="lineNum"> 91 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 92 </span> :
-<span class="lineNum"> 93 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/textsearch/maint/path.h.gcov.html b/rep/ept/textsearch/maint/path.h.gcov.html
deleted file mode 100644
index 5505d7b..0000000
--- a/rep/ept/textsearch/maint/path.h.gcov.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!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/textsearch/maint/path.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/textsearch/maint</a> - path.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">100.0 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">5</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> : // -*- mode: c++; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /** \file
-<span class="lineNum"> 3 </span> : * popcon paths
-<span class="lineNum"> 4 </span> : */
-<span class="lineNum"> 5 </span> :
-<span class="lineNum"> 6 </span> : /*
-<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 8 </span> : *
-<span class="lineNum"> 9 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 10 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 11 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 12 </span> : * (at your option) any later version.
-<span class="lineNum"> 13 </span> : *
-<span class="lineNum"> 14 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 17 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 18 </span> : *
-<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 20 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 22 </span> : */
-<span class="lineNum"> 23 </span> :
-<span class="lineNum"> 24 </span> : #ifndef EPT_TEXTSEARCH_PATH_H
-<span class="lineNum"> 25 </span> : #define EPT_TEXTSEARCH_PATH_H
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;string&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : struct stat;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace textsearch {
-<span class="lineNum"> 33 </span> :
-<span class="lineNum"> 34 </span> : /**
-<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Popcon paths
-<span class="lineNum"> 36 </span> : */
-<span class="lineNum"> 37 </span> : class Path
-<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span>
-<span class="lineNum"> 39 </span> : public:
-<span class="lineNum"> 40 </span> : static std::string indexDir();
-<span class="lineNum"> 41 </span> : static std::string index();
-<span class="lineNum"> 42 </span> :
-<span class="lineNum"> 43 </span> : // Directory where Popcon source data is found
-<span class="lineNum"> 44 </span> : static void setIndexDir( const std::string &amp;s );
-<span class="lineNum"> 45 </span> :
-<span class="lineNum"> 46 </span> : static int access( const std::string &amp;, int );
-<span class="lineNum"> 47 </span> : static time_t indexTimestamp();
-<span class="lineNum"> 48 </span> : static void setTimestamp(time_t ts);
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span> : // RAII-style classes to temporarily override directories
-<span class="lineNum"> 51 </span> : class OverrideIndexDir
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span> : std::string old;
-<span class="lineNum"> 54 </span> : public:
-<span class="lineNum"> 55 </span><span class="lineCov"> 11 : OverrideIndexDir(const std::string&amp; path) : old(Path::indexDir())</span>
-<span class="lineNum"> 56 </span> : {
-<span class="lineNum"> 57 </span><span class="lineCov"> 11 : Path::setIndexDir(path);</span>
-<span class="lineNum"> 58 </span><span class="lineCov"> 11 : }</span>
-<span class="lineNum"> 59 </span><span class="lineCov"> 11 : ~OverrideIndexDir() { Path::setIndexDir(old); }</span>
-<span class="lineNum"> 60 </span> : };
-<span class="lineNum"> 61 </span> :
-<span class="lineNum"> 62 </span> : protected:
-<span class="lineNum"> 63 </span> : static Path *s_instance;
-<span class="lineNum"> 64 </span> : static Path &amp;instance();
-<span class="lineNum"> 65 </span> :
-<span class="lineNum"> 66 </span> : // Directory where Popcon source data is found
-<span class="lineNum"> 67 </span> : std::string m_indexDir;
-<span class="lineNum"> 68 </span> : };
-<span class="lineNum"> 69 </span> :
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> : }
-<span class="lineNum"> 72 </span> :
-<span class="lineNum"> 73 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 74 </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>
diff --git a/rep/ept/textsearch/textsearch.cc.gcov.html b/rep/ept/textsearch/textsearch.cc.gcov.html
deleted file mode 100644
index b1cdfba..0000000
--- a/rep/ept/textsearch/textsearch.cc.gcov.html
+++ /dev/null
@@ -1,323 +0,0 @@
-<!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/textsearch/textsearch.cc</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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.cc</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&nbsp;lines:</td>
- <td class="headerValue" width="20%">115</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">72.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">83</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> :
-<span class="lineNum"> 2 </span> : /** @file
-<span class="lineNum"> 3 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 4 </span> : * Fast full-text search
-<span class="lineNum"> 5 </span> : */
-<span class="lineNum"> 6 </span> :
-<span class="lineNum"> 7 </span> : /*
-<span class="lineNum"> 8 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 9 </span> : *
-<span class="lineNum"> 10 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 11 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 12 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 13 </span> : * (at your option) any later version.
-<span class="lineNum"> 14 </span> : *
-<span class="lineNum"> 15 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 16 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 17 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 18 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 19 </span> : *
-<span class="lineNum"> 20 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 21 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 22 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 23 </span> : */
-<span class="lineNum"> 24 </span> :
-<span class="lineNum"> 25 </span> : #include &lt;ept/textsearch/textsearch.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;ept/textsearch/maint/path.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;ept/apt/packagerecord.h&gt;
-<span class="lineNum"> 29 </span> : //#include &lt;ept/debtags/debtags.h&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : #include &lt;wibble/regexp.h&gt;
-<span class="lineNum"> 32 </span> : #include &lt;cctype&gt;
-<span class="lineNum"> 33 </span> : #include &lt;cmath&gt;
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : #include &lt;xapian/queryparser.h&gt;
-<span class="lineNum"> 36 </span> :
-<span class="lineNum"> 37 </span> : #include &lt;algorithm&gt;
-<span class="lineNum"> 38 </span> :
-<span class="lineNum"> 39 </span> : #include &lt;iostream&gt;
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : using namespace std;
-<span class="lineNum"> 42 </span> : using namespace ept::apt;
-<span class="lineNum"> 43 </span> : using namespace ept::debtags;
-<span class="lineNum"> 44 </span> :
-<span class="lineNum"> 45 </span> : namespace ept {
-<span class="lineNum"> 46 </span> : namespace textsearch {
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : size_t max_index = 0;
-<span class="lineNum"> 49 </span> :
-<span class="lineNum"> 50 </span><span class="lineCov"> 11 : TextSearch::TextSearch()</span>
-<span class="lineNum"> 51 </span><span class="lineCov"> 11 : : m_timestamp(0), m_stem(&quot;en&quot;)</span>
-<span class="lineNum"> 52 </span> : {
-<span class="lineNum"> 53 </span><span class="lineCov"> 22 : m_timestamp = Path::indexTimestamp();</span>
-<span class="lineNum"> 54 </span><span class="lineCov"> 11 : if (m_timestamp)</span>
-<span class="lineNum"> 55 </span><span class="lineCov"> 9 : m_db.add_database(Xapian::Database(Path::index()));</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 11 : }</span>
-<span class="lineNum"> 57 </span> :
-<span class="lineNum"> 58 </span><span class="lineCov"> 7 : std::string TextSearch::toLower(const std::string&amp; str)</span>
-<span class="lineNum"> 59 </span> : {
-<span class="lineNum"> 60 </span><span class="lineCov"> 7 : std::string res;</span>
-<span class="lineNum"> 61 </span><span class="lineCov"> 7 : res.reserve(str.size());</span>
-<span class="lineNum"> 62 </span><span class="lineCov"> 44 : for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)</span>
-<span class="lineNum"> 63 </span><span class="lineCov"> 37 : res += tolower(*i);</span>
-<span class="lineNum"> 64 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 65 </span> : }
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span><span class="lineCov"> 3 : bool TextSearch::needsRebuild(apt::Apt&amp; apt)</span>
-<span class="lineNum"> 68 </span> : {
-<span class="lineNum"> 69 </span><span class="lineCov"> 3 : return apt.timestamp() &gt; m_timestamp;</span>
-<span class="lineNum"> 70 </span> : }
-<span class="lineNum"> 71 </span> :
-<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : void TextSearch::normalize_and_add(Xapian::Document&amp; doc, const std::string&amp; term, int&amp; pos) const</span>
-<span class="lineNum"> 73 </span> : {
-<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : string t = TextSearch::toLower(term);</span>
-<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : string s = m_stem(t);</span>
-<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : doc.add_term(t);</span>
-<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : if (s != t)</span>
-<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : doc.add_term(s);</span>
-<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : }</span>
-<span class="lineNum"> 80 </span> :
-<span class="lineNum"> 81 </span><span class="lineCov"> 10 : bool TextSearch::rebuildIfNeeded(apt::Apt&amp; apt, const std::vector&lt;const TextSearch::ExtraIndexer*&gt;&amp; extraIndexers)</span>
-<span class="lineNum"> 82 </span> : {
-<span class="lineNum"> 83 </span> : // Check if a rebuild is needed, and keep a copy of the APT timestamp for
-<span class="lineNum"> 84 </span> : // saving later
-<span class="lineNum"> 85 </span><span class="lineCov"> 10 : time_t aptts = apt.timestamp();</span>
-<span class="lineNum"> 86 </span><span class="lineCov"> 10 : if (aptts &lt;= m_timestamp)</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 4 : return false;</span>
-<span class="lineNum"> 88 </span> :
-<span class="lineNum"> 89 </span> : // Reindex
-<span class="lineNum"> 90 </span><span class="lineCov"> 6 : Xapian::WritableDatabase database(Xapian::Flint::open(Path::index(), Xapian::DB_CREATE_OR_OPEN));</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 6 : Xapian::TermGenerator termgen;</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 6 : termgen.set_stemmer(m_stem);</span>
-<span class="lineNum"> 93 </span> : //database.begin_transaction();
-<span class="lineNum"> 94 </span><span class="lineCov"> 6 : PackageRecord rec;</span>
-<span class="lineNum"> 95 </span><span class="lineCov"> 6 : size_t count = 0;</span>
-<span class="lineNum"> 96 </span><span class="lineCov"> 2610 : for (Apt::record_iterator i = apt.recordBegin();</span>
-<span class="lineNum"> 97 </span> : i != apt.recordEnd(); ++i, ++count)
-<span class="lineNum"> 98 </span> : {
-<span class="lineNum"> 99 </span> : // If we are testing, we can set a limit to how many packages we index,
-<span class="lineNum"> 100 </span> : // to avoid it taking too much time
-<span class="lineNum"> 101 </span><span class="lineCov"> 2604 : if (max_index != 0 &amp;&amp; count &gt; max_index)</span>
-<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : break;</span>
-<span class="lineNum"> 103 </span> :
-<span class="lineNum"> 104 </span><span class="lineCov"> 2604 : rec.scan(*i);</span>
-<span class="lineNum"> 105 </span> :
-<span class="lineNum"> 106 </span><span class="lineCov"> 2604 : Xapian::Document doc;</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 2604 : doc.set_data(rec.package());</span>
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span><span class="lineCov"> 2604 : string pkgid = &quot;XP&quot; + rec.package();</span>
-<span class="lineNum"> 110 </span> : //std::cerr &lt;&lt; &quot;Add &quot; &lt;&lt; pkgid &lt;&lt; &quot;: &quot; &lt;&lt; idx &lt;&lt; std::endl;
-<span class="lineNum"> 111 </span><span class="lineCov"> 2604 : doc.add_term(pkgid);</span>
-<span class="lineNum"> 112 </span> :
-<span class="lineNum"> 113 </span> : // Index tags as well
-<span class="lineNum"> 114 </span><span class="lineCov"> 2604 : set&lt;string&gt; tags = rec.tag();</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 2604 : for (set&lt;string&gt;::const_iterator ti = tags.begin();</span>
-<span class="lineNum"> 116 </span> : ti != tags.end(); ++ti)
-<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : doc.add_term(&quot;XT&quot;+*ti);</span>
-<span class="lineNum"> 118 </span> :
-<span class="lineNum"> 119 </span><span class="lineCov"> 2604 : termgen.set_document(doc);</span>
-<span class="lineNum"> 120 </span><span class="lineCov"> 2604 : termgen.index_text_without_positions(rec.package());</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 5208 : termgen.index_text_without_positions(rec.description());</span>
-<span class="lineNum"> 122 </span> :
-<span class="lineNum"> 123 </span> : // Add the values
-<span class="lineNum"> 124 </span><span class="lineCov"> 5208 : doc.add_value(VAL_APT_INSTALLED_SIZE, Xapian::sortable_serialise(rec.installedSize()));</span>
-<span class="lineNum"> 125 </span><span class="lineCov"> 2604 : doc.add_value(VAL_APT_PACKAGE_SIZE, Xapian::sortable_serialise(rec.packageSize()));</span>
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span><span class="lineCov"> 2604 : if (m_timestamp)</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 2170 : database.replace_document(pkgid, doc);</span>
-<span class="lineNum"> 129 </span> : else
-<span class="lineNum"> 130 </span><span class="lineCov"> 434 : database.add_document(doc);</span>
-<span class="lineNum"> 131 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 132 </span> :
-<span class="lineNum"> 133 </span> : //database.commit_transaction();
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span><span class="lineCov"> 6 : if (!m_timestamp)</span>
-<span class="lineNum"> 136 </span><span class="lineCov"> 1 : m_db.add_database(Xapian::Database(Path::index()));</span>
-<span class="lineNum"> 137 </span> : else
-<span class="lineNum"> 138 </span><span class="lineCov"> 5 : m_db.reopen();</span>
-<span class="lineNum"> 139 </span> :
-<span class="lineNum"> 140 </span><span class="lineCov"> 6 : m_timestamp = aptts;</span>
-<span class="lineNum"> 141 </span> :
-<span class="lineNum"> 142 </span><span class="lineCov"> 6 : Path::setTimestamp(aptts);</span>
-<span class="lineNum"> 143 </span> :
-<span class="lineNum"> 144 </span><span class="lineCov"> 6 : return true;</span>
-<span class="lineNum"> 145 </span> : }
-<span class="lineNum"> 146 </span> :
-<span class="lineNum"> 147 </span><span class="lineCov"> 2 : Xapian::Query TextSearch::makeORQuery(const std::string&amp; keywords) const</span>
-<span class="lineNum"> 148 </span> : {
-<span class="lineNum"> 149 </span><span class="lineCov"> 2 : wibble::Tokenizer tok(keywords, &quot;[A-Za-z0-9_-]+&quot;, REG_EXTENDED);</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 4 : return makeORQuery(tok.begin(), tok.end());</span>
-<span class="lineNum"> 151 </span> : }
-<span class="lineNum"> 152 </span> :
-<span class="lineNum"> 153 </span><span class="lineCov"> 1 : Xapian::Query TextSearch::makePartialORQuery(const std::string&amp; keywords) const</span>
-<span class="lineNum"> 154 </span> : {
-<span class="lineNum"> 155 </span><span class="lineCov"> 1 : wibble::Tokenizer tok(keywords, &quot;[A-Za-z0-9_-]+&quot;, REG_EXTENDED);</span>
-<span class="lineNum"> 156 </span><span class="lineCov"> 1 : vector&lt;string&gt; tokens;</span>
-<span class="lineNum"> 157 </span> : // FIXME: make the Tokenizer iterators properly iterable
-<span class="lineNum"> 158 </span><span class="lineCov"> 2 : for (wibble::Tokenizer::const_iterator i = tok.begin();</span>
-<span class="lineNum"> 159 </span> : i != tok.end(); ++i)
-<span class="lineNum"> 160 </span><span class="lineCov"> 1 : tokens.push_back(*i);</span>
-<span class="lineNum"> 161 </span> : // Add all the terms starting with 'last'
-<span class="lineNum"> 162 </span><span class="lineCov"> 1 : if (!tokens.empty())</span>
-<span class="lineNum"> 163 </span> : {
-<span class="lineNum"> 164 </span><span class="lineCov"> 1 : string&amp; last = *tokens.rbegin();</span>
-<span class="lineNum"> 165 </span><span class="lineCov"> 1 : if (last.size() == 1)</span>
-<span class="lineNum"> 166 </span> : // Ignore one-letter partial terms: they make the query uselessly
-<span class="lineNum"> 167 </span> : // large and slow, and it's worth just to wait for more characters
-<span class="lineNum"> 168 </span> : // to come
-<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : tokens.resize(tokens.size() - 1);</span>
-<span class="lineNum"> 170 </span> : else
-<span class="lineNum"> 171 </span><span class="lineCov"> 1 : copy(m_db.allterms_begin(last), m_db.allterms_end(last), back_inserter(tokens));</span>
-<span class="lineNum"> 172 </span> : /*
-<span class="lineNum"> 173 </span> : for (Xapian::TermIterator t = m_db.allterms_begin(last);
-<span class="lineNum"> 174 </span> : t != m_db.allterms_end(last); ++t)
-<span class="lineNum"> 175 </span> : tokens.push_back(*t);
-<span class="lineNum"> 176 </span> : */
-<span class="lineNum"> 177 </span> : }
-<span class="lineNum"> 178 </span><span class="lineCov"> 1 : return makeORQuery(tokens.begin(), tokens.end());</span>
-<span class="lineNum"> 179 </span> : }
-<span class="lineNum"> 180 </span> :
-<span class="lineNum"> 181 </span><span class="lineCov"> 10 : Xapian::docid TextSearch::docidByName(const std::string&amp; pkgname) const</span>
-<span class="lineNum"> 182 </span> : {
-<span class="lineNum"> 183 </span><span class="lineCov"> 10 : Xapian::PostingIterator i = m_db.postlist_begin(&quot;XP&quot;+pkgname);</span>
-<span class="lineNum"> 184 </span><span class="lineCov"> 10 : if (i == m_db.postlist_end(&quot;XP&quot;+pkgname))</span>
-<span class="lineNum"> 185 </span><span class="lineCov"> 5 : return 0;</span>
-<span class="lineNum"> 186 </span> : else
-<span class="lineNum"> 187 </span><span class="lineCov"> 5 : return *i;</span>
-<span class="lineNum"> 188 </span> : }
-<span class="lineNum"> 189 </span> :
-<span class="lineNum"> 190 </span> : struct TagFilter : public Xapian::ExpandDecider
-<span class="lineNum"> 191 </span><span class="lineCov"> 4 : {</span>
-<span class="lineNum"> 192 </span><span class="lineNoCov"> 0 : virtual bool operator()(const std::string &amp;term) const { return term[0] == 'T'; }</span>
-<span class="lineNum"> 193 </span> : };
-<span class="lineNum"> 194 </span> :
-<span class="lineNum"> 195 </span><span class="lineCov"> 2 : static TagFilter tagFilter;</span>
-<span class="lineNum"> 196 </span> :
-<span class="lineNum"> 197 </span><span class="lineNoCov"> 0 : vector&lt;string&gt; TextSearch::expand(Xapian::Enquire&amp; enq) const</span>
-<span class="lineNum"> 198 </span> : {
-<span class="lineNum"> 199 </span><span class="lineNoCov"> 0 : Xapian::RSet rset;</span>
-<span class="lineNum"> 200 </span> : // Get the top 5 results as 'good ones' to compute the search expansion
-<span class="lineNum"> 201 </span><span class="lineNoCov"> 0 : Xapian::MSet mset = enq.get_mset(0, 5);</span>
-<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : for (Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i)</span>
-<span class="lineNum"> 203 </span><span class="lineNoCov"> 0 : rset.add_document(i);</span>
-<span class="lineNum"> 204 </span> : // Get the expanded set, only expanding the query with tag names
-<span class="lineNum"> 205 </span><span class="lineNoCov"> 0 : Xapian::ESet eset = enq.get_eset(5, rset, &amp;tagFilter);</span>
-<span class="lineNum"> 206 </span><span class="lineNoCov"> 0 : vector&lt;string&gt; res;</span>
-<span class="lineNum"> 207 </span><span class="lineNoCov"> 0 : for (Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i)</span>
-<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : res.push_back(*i);</span>
-<span class="lineNum"> 209 </span><span class="lineNoCov"> 0 : return res;</span>
-<span class="lineNum"> 210 </span> : }
-<span class="lineNum"> 211 </span> :
-<span class="lineNum"> 212 </span><span class="lineNoCov"> 0 : Xapian::Query TextSearch::makeRelatedQuery(const std::string&amp; pkgname) const</span>
-<span class="lineNum"> 213 </span> : {
-<span class="lineNum"> 214 </span><span class="lineNoCov"> 0 : Xapian::Enquire enquire(db());</span>
-<span class="lineNum"> 215 </span> :
-<span class="lineNum"> 216 </span> : // Retrieve the document for the given package
-<span class="lineNum"> 217 </span><span class="lineNoCov"> 0 : enquire.set_query(Xapian::Query(&quot;XP&quot;+pkgname));</span>
-<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : Xapian::MSet matches = enquire.get_mset(0, 1);</span>
-<span class="lineNum"> 219 </span><span class="lineNoCov"> 0 : Xapian::MSetIterator mi = matches.begin();</span>
-<span class="lineNum"> 220 </span><span class="lineNoCov"> 0 : if (mi == matches.end()) return Xapian::Query();</span>
-<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : Xapian::Document doc = mi.get_document();</span>
-<span class="lineNum"> 222 </span> :
-<span class="lineNum"> 223 </span> : // Return the query to get the list of similar documents
-<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : return Xapian::Query(Xapian::Query::OP_OR, doc.termlist_begin(), doc.termlist_end());</span>
-<span class="lineNum"> 225 </span> : }
-<span class="lineNum"> 226 </span> :
-<span class="lineNum"> 227 </span><span class="lineCov"> 4 : double TextSearch::getDoubleValue(const std::string&amp; pkgname, Xapian::valueno val_id) const</span>
-<span class="lineNum"> 228 </span> : {
-<span class="lineNum"> 229 </span><span class="lineCov"> 4 : Xapian::docid id = docidByName(pkgname);</span>
-<span class="lineNum"> 230 </span><span class="lineCov"> 4 : if (id == 0)</span>
-<span class="lineNum"> 231 </span><span class="lineCov"> 2 : return 0.0;</span>
-<span class="lineNum"> 232 </span><span class="lineCov"> 2 : Xapian::Document doc = db().get_document(id);</span>
-<span class="lineNum"> 233 </span><span class="lineCov"> 2 : string val = doc.get_value(val_id);</span>
-<span class="lineNum"> 234 </span><span class="lineCov"> 2 : if (val.empty())</span>
-<span class="lineNum"> 235 </span><span class="lineNoCov"> 0 : return 0.0;</span>
-<span class="lineNum"> 236 </span> : else
-<span class="lineNum"> 237 </span><span class="lineCov"> 2 : return Xapian::sortable_unserialise(val);</span>
-<span class="lineNum"> 238 </span> : }
-<span class="lineNum"> 239 </span> :
-<span class="lineNum"> 240 </span><span class="lineCov"> 4 : int TextSearch::getIntValue(const std::string&amp; pkgname, Xapian::valueno val_id) const</span>
-<span class="lineNum"> 241 </span> : {
-<span class="lineNum"> 242 </span><span class="lineCov"> 4 : Xapian::docid id = docidByName(pkgname);</span>
-<span class="lineNum"> 243 </span><span class="lineCov"> 4 : if (id == 0)</span>
-<span class="lineNum"> 244 </span><span class="lineCov"> 2 : return 0;</span>
-<span class="lineNum"> 245 </span><span class="lineCov"> 2 : Xapian::Document doc = db().get_document(id);</span>
-<span class="lineNum"> 246 </span><span class="lineCov"> 2 : string val = doc.get_value(val_id);</span>
-<span class="lineNum"> 247 </span><span class="lineCov"> 2 : if (val.empty())</span>
-<span class="lineNum"> 248 </span><span class="lineNoCov"> 0 : return 0;</span>
-<span class="lineNum"> 249 </span> : else
-<span class="lineNum"> 250 </span><span class="lineCov"> 2 : return (int)nearbyint(Xapian::sortable_unserialise(val));</span>
-<span class="lineNum"> 251 </span> : }
-<span class="lineNum"> 252 </span> :
-<span class="lineNum"> 253 </span> : }
-<span class="lineNum"> 254 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 255 </span> :
-<span class="lineNum"> 256 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/textsearch/textsearch.h.gcov.html b/rep/ept/textsearch/textsearch.h.gcov.html
deleted file mode 100644
index d46dca8..0000000
--- a/rep/ept/textsearch/textsearch.h.gcov.html
+++ /dev/null
@@ -1,286 +0,0 @@
-<!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/textsearch/textsearch.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">15</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">86.7 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">13</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> : #ifndef EPT_TEXTSEARCH_TEXTSEARCH_H
-<span class="lineNum"> 2 </span> : #define EPT_TEXTSEARCH_TEXTSEARCH_H
-<span class="lineNum"> 3 </span> :
-<span class="lineNum"> 4 </span> : /** @file
-<span class="lineNum"> 5 </span> : * @author Enrico Zini &lt;enrico@enricozini.org&gt;
-<span class="lineNum"> 6 </span> : * Fast full-text search
-<span class="lineNum"> 7 </span> : */
-<span class="lineNum"> 8 </span> :
-<span class="lineNum"> 9 </span> : /*
-<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 13 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 14 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 15 </span> : * (at your option) any later version.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 18 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 19 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 20 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 21 </span> : *
-<span class="lineNum"> 22 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 23 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 24 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 25 </span> : */
-<span class="lineNum"> 26 </span> :
-<span class="lineNum"> 27 </span> : #include &lt;xapian.h&gt;
-<span class="lineNum"> 28 </span> : #include &lt;vector&gt;
-<span class="lineNum"> 29 </span> : #include &lt;string&gt;
-<span class="lineNum"> 30 </span> :
-<span class="lineNum"> 31 </span> : namespace ept {
-<span class="lineNum"> 32 </span> : namespace apt {
-<span class="lineNum"> 33 </span> : class Apt;
-<span class="lineNum"> 34 </span> : class PackageRecord;
-<span class="lineNum"> 35 </span> : }
-<span class="lineNum"> 36 </span> : namespace debtags {
-<span class="lineNum"> 37 </span> : class Debtags;
-<span class="lineNum"> 38 </span> : }
-<span class="lineNum"> 39 </span> : namespace textsearch {
-<span class="lineNum"> 40 </span> :
-<span class="lineNum"> 41 </span> : // Allocate value indexes for known values
-<span class="lineNum"> 42 </span> : const Xapian::valueno VAL_APT_INSTALLED_SIZE = 1;
-<span class="lineNum"> 43 </span> : const Xapian::valueno VAL_APT_PACKAGE_SIZE = 2;
-<span class="lineNum"> 44 </span> : const Xapian::valueno VAL_POPCON = 10;
-<span class="lineNum"> 45 </span> : const Xapian::valueno VAL_ITERATING_RATING = 20;
-<span class="lineNum"> 46 </span> : const Xapian::valueno VAL_ITERATING_FUNCTIONALITY = 21;
-<span class="lineNum"> 47 </span> : const Xapian::valueno VAL_ITERATING_USABILITY = 22;
-<span class="lineNum"> 48 </span> : const Xapian::valueno VAL_ITERATING_SECURITY = 23;
-<span class="lineNum"> 49 </span> : const Xapian::valueno VAL_ITERATING_PERFORMANCE = 24;
-<span class="lineNum"> 50 </span> : const Xapian::valueno VAL_ITERATING_QUALITY = 25;
-<span class="lineNum"> 51 </span> : const Xapian::valueno VAL_ITERATING_SUPPORT = 26;
-<span class="lineNum"> 52 </span> : const Xapian::valueno VAL_ITERATING_ADOPTION = 27;
-<span class="lineNum"> 53 </span> : // If you need to index a value and cannot edit this file, feel free to use any
-<span class="lineNum"> 54 </span> : // value starting from 1000000
-<span class="lineNum"> 55 </span> :
-<span class="lineNum"> 56 </span> :
-<span class="lineNum"> 57 </span> : /*
-<span class="lineNum"> 58 </span> : Fallback on apt scan searches when index is not present
-<span class="lineNum"> 59 </span> :
-<span class="lineNum"> 60 </span> : Explicitly decide at instantiation (or at any other time) if a rebuild should
-<span class="lineNum"> 61 </span> : be performed. Just adding a 'rebuildIfNeeded' method would be enough.
-<span class="lineNum"> 62 </span> :
-<span class="lineNum"> 63 </span> : 17:14 #xapian &lt; enrico&gt; Hello. I'm finally in a position of writing a library to maintain
-<span class="lineNum"> 64 </span> : a xapian index with Debian package descriptions in a Debian system
-<span class="lineNum"> 65 </span> : 17:14 #xapian &lt; enrico&gt; I have a question, though
-<span class="lineNum"> 66 </span> : 17:14 #xapian &lt; enrico&gt; The descriptions change regularly as people run 'apt-get update'
-<span class="lineNum"> 67 </span> : 17:15 #xapian &lt; enrico&gt; I'd need to have a way to update the description index after
-<span class="lineNum"> 68 </span> : apt-get update, without rebuilding it from scratch
-<span class="lineNum"> 69 </span> : 17:15 #xapian &lt; enrico&gt; Is there some documentation on how to do that? I can't exactly
-<span class="lineNum"> 70 </span> : tell Xapian &quot;the new description for package foo is this&quot; because
-<span class="lineNum"> 71 </span> : I'd need the xapian id
-<span class="lineNum"> 72 </span> : 19:11 #xapian &lt; omega&gt; you can add a unique term with a boolean prefix?
-<span class="lineNum"> 73 </span> : 19:11 #xapian &lt; omega&gt; like Qpackage-name
-<span class="lineNum"> 74 </span> : 19:11 #xapian &lt; omega&gt; then you search for it and replace_document
-<span class="lineNum"> 75 </span> : 19:24 #xapian &lt; richardb&gt; Or indeed, you use the &quot;replace_document()&quot; form which takes a
-<span class="lineNum"> 76 </span> : unique_id term.
-<span class="lineNum"> 77 </span> : 19:25 #xapian &lt; richardb&gt; Xapian::docid replace_document(const std::string &amp;
-<span class="lineNum"> 78 </span> : unique_term,
-<span class="lineNum"> 79 </span> : 19:25 #xapian &lt; richardb&gt; const Xapian::Document &amp;
-<span class="lineNum"> 80 </span> : document);
-<span class="lineNum"> 81 </span> : 19:43 #xapian &lt; enrico&gt; unique term
-<span class="lineNum"> 82 </span> : 19:43 #xapian &lt; enrico&gt; nice!
-<span class="lineNum"> 83 </span> : 19:44 #xapian &lt; enrico&gt; can I use a non-alpha prefix, like :package-name ?
-<span class="lineNum"> 84 </span> : 19:45 #xapian &lt; enrico&gt; or pkg:package-name
-<span class="lineNum"> 85 </span> : 19:45 #xapian &lt; enrico&gt; I suppose I can
-<span class="lineNum"> 86 </span> : */
-<span class="lineNum"> 87 </span> :
-<span class="lineNum"> 88 </span> : /**
-<span class="lineNum"> 89 </span> : * Maintains and accesses a Xapian index of package descriptions.
-<span class="lineNum"> 90 </span> : *
-<span class="lineNum"> 91 </span> : * Contrarily to Debtags and Popcon, TextSearch does not attempt to create the
-<span class="lineNum"> 92 </span> : * index in the home directory if no system index is found and it is not
-<span class="lineNum"> 93 </span> : * running as root: this is to avoid secretly building large indexes (&gt;50Mb)
-<span class="lineNum"> 94 </span> : * in the home directory of users.
-<span class="lineNum"> 95 </span> : *
-<span class="lineNum"> 96 </span> : * The idea then is to have root keep the index up to date, possibly running a
-<span class="lineNum"> 97 </span> : * reindexing tool once a day, or after an apt-get update.
-<span class="lineNum"> 98 </span> : *
-<span class="lineNum"> 99 </span> : * This works because the full text search index is useful even if it is
-<span class="lineNum"> 100 </span> : * slightly out of date.
-<span class="lineNum"> 101 </span> : */
-<span class="lineNum"> 102 </span> : class TextSearch
-<span class="lineNum"> 103 </span><span class="lineCov"> 11 : {</span>
-<span class="lineNum"> 104 </span> : protected:
-<span class="lineNum"> 105 </span> : time_t m_timestamp;
-<span class="lineNum"> 106 </span> : Xapian::Database m_db;
-<span class="lineNum"> 107 </span> : Xapian::Stem m_stem;
-<span class="lineNum"> 108 </span> :
-<span class="lineNum"> 109 </span> : /// Return a lowercased copy of the string
-<span class="lineNum"> 110 </span> : static std::string toLower(const std::string&amp; str);
-<span class="lineNum"> 111 </span> :
-<span class="lineNum"> 112 </span> : /**
-<span class="lineNum"> 113 </span> : * Add normalised tokens computed from the string to the document doc.
-<span class="lineNum"> 114 </span> : *
-<span class="lineNum"> 115 </span> : * pos is used as a sequence generator for entering the token position in
-<span class="lineNum"> 116 </span> : * the document.
-<span class="lineNum"> 117 </span> : */
-<span class="lineNum"> 118 </span> : void normalize_and_add(Xapian::Document&amp; doc, const std::string&amp; term, int&amp; pos) const;
-<span class="lineNum"> 119 </span> :
-<span class="lineNum"> 120 </span> : public:
-<span class="lineNum"> 121 </span> : struct ExtraIndexer
-<span class="lineNum"> 122 </span> : {
-<span class="lineNum"> 123 </span><span class="lineNoCov"> 0 : virtual ~ExtraIndexer() {}</span>
-<span class="lineNum"> 124 </span> : virtual void operator()(Xapian::Document&amp; doc, const apt::PackageRecord&amp; rec) const = 0;
-<span class="lineNum"> 125 </span> : };
-<span class="lineNum"> 126 </span> :
-<span class="lineNum"> 127 </span> : TextSearch();
-<span class="lineNum"> 128 </span> :
-<span class="lineNum"> 129 </span> : /// Access the Xapian database
-<span class="lineNum"> 130 </span><span class="lineCov"> 3 : Xapian::Database&amp; db() { return m_db; }</span>
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span> : /// Access the Xapian database
-<span class="lineNum"> 133 </span><span class="lineCov"> 4 : const Xapian::Database&amp; db() const { return m_db; }</span>
-<span class="lineNum"> 134 </span> :
-<span class="lineNum"> 135 </span> : /// Timestamp of when the Xapian database was last updated
-<span class="lineNum"> 136 </span><span class="lineCov"> 3 : time_t timestamp() const { return m_timestamp; }</span>
-<span class="lineNum"> 137 </span> :
-<span class="lineNum"> 138 </span> : /// Returns true if the index has data
-<span class="lineNum"> 139 </span><span class="lineCov"> 3 : bool hasData() const { return m_timestamp &gt; 0; }</span>
-<span class="lineNum"> 140 </span> :
-<span class="lineNum"> 141 </span> : /// Returns true if the index is older than the Apt database information
-<span class="lineNum"> 142 </span> : bool needsRebuild(apt::Apt&amp; apt);
-<span class="lineNum"> 143 </span> :
-<span class="lineNum"> 144 </span> : /**
-<span class="lineNum"> 145 </span> : * Rebuild the index if needed.
-<span class="lineNum"> 146 </span> : *
-<span class="lineNum"> 147 </span> : * Allow to specify functors that contribute to the indexing.
-<span class="lineNum"> 148 </span> : *
-<span class="lineNum"> 149 </span> : * @note This requires write access to the index directory.
-<span class="lineNum"> 150 </span> : * @note This is not the main way to update the index: it is provided here
-<span class="lineNum"> 151 </span> : * only as a way to build a draft index for the library tests
-<span class="lineNum"> 152 </span> : */
-<span class="lineNum"> 153 </span> : bool rebuildIfNeeded(
-<span class="lineNum"> 154 </span> : apt::Apt&amp; apt,
-<span class="lineNum"> 155 </span> : const std::vector&lt;const ExtraIndexer*&gt;&amp; extraIndexers = std::vector&lt;const ExtraIndexer*&gt;());
-<span class="lineNum"> 156 </span> :
-<span class="lineNum"> 157 </span> : /**
-<span class="lineNum"> 158 </span> : * Retrieve a Xapian docid by package name
-<span class="lineNum"> 159 </span> : */
-<span class="lineNum"> 160 </span> : Xapian::docid docidByName(const std::string&amp; pkgname) const;
-<span class="lineNum"> 161 </span> :
-<span class="lineNum"> 162 </span> : /**
-<span class="lineNum"> 163 </span> : * Tokenize the string and build an OR query with the resulting keywords
-<span class="lineNum"> 164 </span> : */
-<span class="lineNum"> 165 </span> : Xapian::Query makeORQuery(const std::string&amp; keywords) const;
-<span class="lineNum"> 166 </span> :
-<span class="lineNum"> 167 </span> : /**
-<span class="lineNum"> 168 </span> : * Tokenize the string and build an OR query with the resulting keywords.
-<span class="lineNum"> 169 </span> : *
-<span class="lineNum"> 170 </span> : * The last token in keywords is considered to be typed only partially, to
-<span class="lineNum"> 171 </span> : * implement proper search-as-you-type.
-<span class="lineNum"> 172 </span> : */
-<span class="lineNum"> 173 </span> : Xapian::Query makePartialORQuery(const std::string&amp; keywords) const;
-<span class="lineNum"> 174 </span> :
-<span class="lineNum"> 175 </span> : /**
-<span class="lineNum"> 176 </span> : * Build a query with the given keywords, specified as iterators of strings
-<span class="lineNum"> 177 </span> : */
-<span class="lineNum"> 178 </span> : template&lt;typename ITER&gt;
-<span class="lineNum"> 179 </span><span class="lineCov"> 3 : Xapian::Query makeORQuery(const ITER&amp; begin, const ITER&amp; end) const</span>
-<span class="lineNum"> 180 </span> : {
-<span class="lineNum"> 181 </span><span class="lineCov"> 3 : std::vector&lt;std::string&gt; terms;</span>
-<span class="lineNum"> 182 </span> : // Insert both the lowercased and the stemmed lowercased query terms
-<span class="lineNum"> 183 </span><span class="lineCov"> 10 : for (ITER i = begin; i != end; ++i)</span>
-<span class="lineNum"> 184 </span> : {
-<span class="lineNum"> 185 </span><span class="lineCov"> 7 : std::string t = toLower(*i);</span>
-<span class="lineNum"> 186 </span><span class="lineCov"> 7 : std::string s = m_stem(t);</span>
-<span class="lineNum"> 187 </span><span class="lineCov"> 7 : terms.push_back(t);</span>
-<span class="lineNum"> 188 </span><span class="lineCov"> 7 : if (s != t)</span>
-<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : terms.push_back(&quot;Z&quot; + s);</span>
-<span class="lineNum"> 190 </span> : }
-<span class="lineNum"> 191 </span><span class="lineCov"> 3 : return Xapian::Query(Xapian::Query::OP_OR, terms.begin(), terms.end());</span>
-<span class="lineNum"> 192 </span> : }
-<span class="lineNum"> 193 </span> :
-<span class="lineNum"> 194 </span> : /// Return a list of tag-based terms that can be used to expand an OR query
-<span class="lineNum"> 195 </span> : std::vector&lt;std::string&gt; expand(Xapian::Enquire&amp; enq) const;
-<span class="lineNum"> 196 </span> :
-<span class="lineNum"> 197 </span> : // std::vector&lt;std::string&gt; similar(const std::string&amp; pkg);
-<span class="lineNum"> 198 </span> :
-<span class="lineNum"> 199 </span> : /**
-<span class="lineNum"> 200 </span> : * Create a query to look for packages similar to the given one
-<span class="lineNum"> 201 </span> : */
-<span class="lineNum"> 202 </span> : Xapian::Query makeRelatedQuery(const std::string&amp; pkgname) const;
-<span class="lineNum"> 203 </span> :
-<span class="lineNum"> 204 </span> : /**
-<span class="lineNum"> 205 </span> : * Get the integer value for
-<span class="lineNum"> 206 </span> : */
-<span class="lineNum"> 207 </span> : double getDoubleValue(const std::string&amp; pkgname, Xapian::valueno val_id) const;
-<span class="lineNum"> 208 </span> :
-<span class="lineNum"> 209 </span> : /**
-<span class="lineNum"> 210 </span> : * Get the integer value for
-<span class="lineNum"> 211 </span> : */
-<span class="lineNum"> 212 </span> : int getIntValue(const std::string&amp; pkgname, Xapian::valueno val_id) const;
-<span class="lineNum"> 213 </span> : };
-<span class="lineNum"> 214 </span> :
-<span class="lineNum"> 215 </span> : }
-<span class="lineNum"> 216 </span> : }
-<span class="lineNum"> 217 </span> :
-<span class="lineNum"> 218 </span> : // vim:set ts=4 sw=4:
-<span class="lineNum"> 219 </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>
diff --git a/rep/ept/textsearch/textsearch.test.h.gcov.html b/rep/ept/textsearch/textsearch.test.h.gcov.html
deleted file mode 100644
index 230103d..0000000
--- a/rep/ept/textsearch/textsearch.test.h.gcov.html
+++ /dev/null
@@ -1,233 +0,0 @@
-<!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/textsearch/textsearch.test.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.test.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">74</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">95.9 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">71</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> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
-<span class="lineNum"> 2 </span> : /*
-<span class="lineNum"> 3 </span> : * popcon test
-<span class="lineNum"> 4 </span> : *
-<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini &lt;enrico@debian.org&gt;
-<span class="lineNum"> 6 </span> : *
-<span class="lineNum"> 7 </span> : * This program is free software; you can redistribute it and/or modify
-<span class="lineNum"> 8 </span> : * it under the terms of the GNU General Public License as published by
-<span class="lineNum"> 9 </span> : * the Free Software Foundation; either version 2 of the License, or
-<span class="lineNum"> 10 </span> : * (at your option) any later version.
-<span class="lineNum"> 11 </span> : *
-<span class="lineNum"> 12 </span> : * This program is distributed in the hope that it will be useful,
-<span class="lineNum"> 13 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of
-<span class="lineNum"> 14 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-<span class="lineNum"> 15 </span> : * GNU General Public License for more details.
-<span class="lineNum"> 16 </span> : *
-<span class="lineNum"> 17 </span> : * You should have received a copy of the GNU General Public License
-<span class="lineNum"> 18 </span> : * along with this program; if not, write to the Free Software
-<span class="lineNum"> 19 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-<span class="lineNum"> 20 </span> : */
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span> : #include &lt;ept/test.h&gt;
-<span class="lineNum"> 23 </span> : #include &lt;ept/textsearch/textsearch.h&gt;
-<span class="lineNum"> 24 </span> : #include &lt;ept/textsearch/maint/path.h&gt;
-<span class="lineNum"> 25 </span> : #include &lt;ept/apt/apt.h&gt;
-<span class="lineNum"> 26 </span> : #include &lt;wibble/sys/fs.h&gt;
-<span class="lineNum"> 27 </span> : #include &lt;set&gt;
-<span class="lineNum"> 28 </span> :
-<span class="lineNum"> 29 </span> : namespace ept {
-<span class="lineNum"> 30 </span> : namespace textsearch {
-<span class="lineNum"> 31 </span> : extern size_t max_index;
-<span class="lineNum"> 32 </span> : }
-<span class="lineNum"> 33 </span> : }
-<span class="lineNum"> 34 </span> :
-<span class="lineNum"> 35 </span> : using namespace std;
-<span class="lineNum"> 36 </span> : using namespace ept;
-<span class="lineNum"> 37 </span> : using namespace ept::textsearch;
-<span class="lineNum"> 38 </span> : using namespace ept::apt;
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span> : struct DirMaker
-<span class="lineNum"> 41 </span> : {
-<span class="lineNum"> 42 </span><span class="lineCov"> 6 : DirMaker(const std::string&amp; name)</span>
-<span class="lineNum"> 43 </span> : {
-<span class="lineNum"> 44 </span><span class="lineCov"> 6 : wibble::sys::fs::mkdirIfMissing(name, 0755);</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 46 </span> : };
-<span class="lineNum"> 47 </span> :
-<span class="lineNum"> 48 </span> : struct TestTextsearch : AptTestEnvironment
-<span class="lineNum"> 49 </span><span class="lineCov"> 6 : {</span>
-<span class="lineNum"> 50 </span> : DirMaker md;
-<span class="lineNum"> 51 </span> : Path::OverrideIndexDir oid;
-<span class="lineNum"> 52 </span> : Apt apt;
-<span class="lineNum"> 53 </span> : TextSearch textsearch;
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </span><span class="lineCov"> 6 : TestTextsearch()</span>
-<span class="lineNum"> 56 </span><span class="lineCov"> 6 : : md( TEST_ENV_DIR &quot;xapian&quot;), oid( TEST_ENV_DIR &quot;xapian&quot;)</span>
-<span class="lineNum"> 57 </span> : {
-<span class="lineNum"> 58 </span> : try {
-<span class="lineNum"> 59 </span><span class="lineCov"> 6 : ept::textsearch::max_index = 1000;</span>
-<span class="lineNum"> 60 </span><span class="lineCov"> 6 : textsearch.rebuildIfNeeded(apt);</span>
-<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : } catch (Xapian::Error&amp; e) {</span>
-<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : cerr &lt;&lt; e.get_type() &lt;&lt; &quot; &quot; &lt;&lt; e.get_msg() &lt;&lt; &quot; &quot; &lt;&lt; e.get_context() &lt;&lt; endl;</span>
-<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : throw;</span>
-<span class="lineNum"> 64 </span> : }
-<span class="lineNum"> 65 </span><span class="lineCov"> 6 : }</span>
-<span class="lineNum"> 66 </span> :
-<span class="lineNum"> 67 </span> : // Access an empty index
-<span class="lineNum"> 68 </span><span class="lineCov"> 1 : Test empty()</span>
-<span class="lineNum"> 69 </span> : {
-<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Path::OverrideIndexDir oid(&quot;./empty&quot;);</span>
-<span class="lineNum"> 71 </span><span class="lineCov"> 1 : TextSearch empty;</span>
-<span class="lineNum"> 72 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span>
-<span class="lineNum"> 73 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span>
-<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert(empty.needsRebuild(apt));</span>
-<span class="lineNum"> 75 </span> : /*
-<span class="lineNum"> 76 </span> : Xapian::Enquire enq(empty.db());
-<span class="lineNum"> 77 </span> : empty.search(enq, &quot;apt&quot;);
-<span class="lineNum"> 78 </span> : Xapian::MSet matches = enq.get_mset(0, 100);
-<span class="lineNum"> 79 </span> : assert_eq(matches.size(), 0u);
-<span class="lineNum"> 80 </span> : */
-<span class="lineNum"> 81 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 82 </span> :
-<span class="lineNum"> 83 </span> : // Very basic access
-<span class="lineNum"> 84 </span><span class="lineCov"> 1 : Test basicAccess()</span>
-<span class="lineNum"> 85 </span> : {
-<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert(textsearch.hasData());</span>
-<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert(textsearch.timestamp() &gt; 0);</span>
-<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert(!textsearch.needsRebuild(apt));</span>
-<span class="lineNum"> 89 </span> :
-<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span>
-<span class="lineNum"> 91 </span><span class="lineCov"> 2 : enq.set_query(textsearch.makeORQuery(&quot;sgml&quot;));</span>
-<span class="lineNum"> 92 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span>
-<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert(matches.size() &gt; 0);</span>
-<span class="lineNum"> 94 </span> :
-<span class="lineNum"> 95 </span> : // See if the apt package is among the results
-<span class="lineNum"> 96 </span><span class="lineCov"> 1 : set&lt;string&gt; results;</span>
-<span class="lineNum"> 97 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span>
-<span class="lineNum"> 98 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span>
-<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert(results.find(&quot;sp&quot;) != results.end());</span>
-<span class="lineNum"> 100 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 101 </span> :
-<span class="lineNum"> 102 </span> : // Alternate access using intermediate Xapian::Query objects
-<span class="lineNum"> 103 </span><span class="lineCov"> 1 : Test queryAccess()</span>
-<span class="lineNum"> 104 </span> : {
-<span class="lineNum"> 105 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span>
-<span class="lineNum"> 106 </span><span class="lineCov"> 1 : enq.set_query(textsearch.makeORQuery(&quot;sgml&quot;));</span>
-<span class="lineNum"> 107 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span>
-<span class="lineNum"> 108 </span><span class="lineCov"> 1 : assert(matches.size() &gt; 0);</span>
-<span class="lineNum"> 109 </span> :
-<span class="lineNum"> 110 </span> : // See if the apt package is among the results
-<span class="lineNum"> 111 </span><span class="lineCov"> 1 : set&lt;string&gt; results;</span>
-<span class="lineNum"> 112 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span>
-<span class="lineNum"> 113 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span>
-<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert(results.find(&quot;sp&quot;) != results.end());</span>
-<span class="lineNum"> 115 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 116 </span> :
-<span class="lineNum"> 117 </span> : // Try makePartialORQuery
-<span class="lineNum"> 118 </span><span class="lineCov"> 1 : Test partialOrQuery()</span>
-<span class="lineNum"> 119 </span> : {
-<span class="lineNum"> 120 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span>
-<span class="lineNum"> 121 </span><span class="lineCov"> 1 : enq.set_query(textsearch.makePartialORQuery(&quot;sgml&quot;));</span>
-<span class="lineNum"> 122 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span>
-<span class="lineNum"> 123 </span><span class="lineCov"> 1 : assert(matches.size() &gt; 0);</span>
-<span class="lineNum"> 124 </span> :
-<span class="lineNum"> 125 </span> : // See if the apt package is among the results
-<span class="lineNum"> 126 </span><span class="lineCov"> 1 : set&lt;string&gt; results;</span>
-<span class="lineNum"> 127 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span>
-<span class="lineNum"> 128 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span>
-<span class="lineNum"> 129 </span><span class="lineCov"> 1 : assert(results.find(&quot;sp&quot;) != results.end());</span>
-<span class="lineNum"> 130 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 131 </span> :
-<span class="lineNum"> 132 </span> : // Try docidByName
-<span class="lineNum"> 133 </span><span class="lineCov"> 1 : Test docidByName()</span>
-<span class="lineNum"> 134 </span> : {
-<span class="lineNum"> 135 </span><span class="lineCov"> 1 : assert(textsearch.docidByName(&quot;sp&quot;) != 0);</span>
-<span class="lineNum"> 136 </span><span class="lineCov"> 2 : assert_eq(textsearch.docidByName(&quot;thereisnopackagewiththisname&quot;), 0u);</span>
-<span class="lineNum"> 137 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 138 </span> :
-<span class="lineNum"> 139 </span> : // Access values
-<span class="lineNum"> 140 </span><span class="lineCov"> 1 : Test values()</span>
-<span class="lineNum"> 141 </span> : {
-<span class="lineNum"> 142 </span><span class="lineCov"> 1 : assert(textsearch.hasData());</span>
-<span class="lineNum"> 143 </span><span class="lineCov"> 2 : assert(textsearch.timestamp() &gt; 0);</span>
-<span class="lineNum"> 144 </span><span class="lineCov"> 2 : assert(!textsearch.needsRebuild(apt));</span>
-<span class="lineNum"> 145 </span> :
-<span class="lineNum"> 146 </span> : double dval;
-<span class="lineNum"> 147 </span><span class="lineCov"> 2 : dval = textsearch.getDoubleValue(&quot;autoconf&quot;, VAL_APT_INSTALLED_SIZE);</span>
-<span class="lineNum"> 148 </span><span class="lineCov"> 2 : assert(dval == 2408);</span>
-<span class="lineNum"> 149 </span><span class="lineCov"> 2 : dval = textsearch.getDoubleValue(&quot;autoconf&quot;, VAL_APT_PACKAGE_SIZE);</span>
-<span class="lineNum"> 150 </span><span class="lineCov"> 2 : assert(dval == 741486);</span>
-<span class="lineNum"> 151 </span><span class="lineCov"> 2 : assert_eq(textsearch.getDoubleValue(&quot;thereisnopackagewiththisname&quot;, VAL_APT_INSTALLED_SIZE), 0.0);</span>
-<span class="lineNum"> 152 </span><span class="lineCov"> 2 : assert_eq(textsearch.getDoubleValue(&quot;thereisnopackagewiththisname&quot;, VAL_APT_PACKAGE_SIZE), 0.0);</span>
-<span class="lineNum"> 153 </span> :
-<span class="lineNum"> 154 </span> : int val;
-<span class="lineNum"> 155 </span><span class="lineCov"> 2 : val = textsearch.getIntValue(&quot;autoconf&quot;, VAL_APT_INSTALLED_SIZE);</span>
-<span class="lineNum"> 156 </span><span class="lineCov"> 2 : assert(val == 2408);</span>
-<span class="lineNum"> 157 </span><span class="lineCov"> 2 : val = textsearch.getIntValue(&quot;autoconf&quot;, VAL_APT_PACKAGE_SIZE);</span>
-<span class="lineNum"> 158 </span><span class="lineCov"> 2 : assert(val == 741486);</span>
-<span class="lineNum"> 159 </span><span class="lineCov"> 1 : cout &lt;&lt; val;</span>
-<span class="lineNum"> 160 </span><span class="lineCov"> 2 : assert_eq(textsearch.getIntValue(&quot;thereisnopackagewiththisname&quot;, VAL_APT_INSTALLED_SIZE), 0);</span>
-<span class="lineNum"> 161 </span><span class="lineCov"> 2 : assert_eq(textsearch.getIntValue(&quot;thereisnopackagewiththisname&quot;, VAL_APT_PACKAGE_SIZE), 0);</span>
-<span class="lineNum"> 162 </span><span class="lineCov"> 1 : }</span>
-<span class="lineNum"> 163 </span> :
-<span class="lineNum"> 164 </span> : };
-<span class="lineNum"> 165 </span> :
-<span class="lineNum"> 166 </span> : // vim:set ts=4 sw=4:
-</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>
diff --git a/rep/ept/token.h.gcov.html b/rep/ept/token.h.gcov.html
deleted file mode 100644
index 8a750ee..0000000
--- a/rep/ept/token.h.gcov.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!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/token.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&nbsp;view:</td>
- <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - token.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&nbsp;lines:</td>
- <td class="headerValue" width="20%">16</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%">81.2 %</td>
- <td width="20%"></td>
- <td class="headerItem" width="20%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%">13</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> : #include &lt;wibble/mixin.h&gt;
-<span class="lineNum"> 3 </span> : #include &lt;string&gt;
-<span class="lineNum"> 4 </span> :
-<span class="lineNum"> 5 </span> : #ifndef EPT_TOKEN_H
-<span class="lineNum"> 6 </span> : #define EPT_TOKEN_H
-<span class="lineNum"> 7 </span> :
-<span class="lineNum"> 8 </span> : namespace ept {
-<span class="lineNum"> 9 </span> :
-<span class="lineNum"> 10 </span><span class="lineCov"> 9994 : struct Token : wibble::mixin::Comparable&lt; Token &gt; {</span>
-<span class="lineNum"> 11 </span> : std::string _id; // formatted as package[_version]
-<span class="lineNum"> 12 </span><span class="lineNoCov"> 0 : std::string id() const { return _id; }</span>
-<span class="lineNum"> 13 </span> :
-<span class="lineNum"> 14 </span><span class="lineCov"> 9755 : Token() : _id( &quot;&quot; ) {}</span>
-<span class="lineNum"> 15 </span><span class="lineCov"> 8 : Token( std::string s ) : _id( s ) {}</span>
-<span class="lineNum"> 16 </span> :
-<span class="lineNum"> 17 </span><span class="lineCov"> 1831 : std::string version() const {</span>
-<span class="lineNum"> 18 </span> : return _id.find( '_' ) == std::string::npos ? &quot;&quot; :
-<span class="lineNum"> 19 </span><span class="lineCov"> 1831 : std::string( _id, _id.find( '_' ) + 1, _id.size() );</span>
-<span class="lineNum"> 20 </span> : }
-<span class="lineNum"> 21 </span> :
-<span class="lineNum"> 22 </span><span class="lineCov"> 7883 : std::string package() const {</span>
-<span class="lineNum"> 23 </span> : return std::string( _id, 0,
-<span class="lineNum"> 24 </span> : _id.find( '_' ) == std::string::npos ?
-<span class="lineNum"> 25 </span><span class="lineCov"> 7883 : _id.size() : _id.find( '_' ) );</span>
-<span class="lineNum"> 26 </span> : }
-<span class="lineNum"> 27 </span> :
-<span class="lineNum"> 28 </span> : bool isDesktop() const {
-<span class="lineNum"> 29 </span> : return std::string( _id, 0, 8 ) == &quot;desktop:&quot;;
-<span class="lineNum"> 30 </span> : }
-<span class="lineNum"> 31 </span> :
-<span class="lineNum"> 32 </span> : std::string desktop() const {
-<span class="lineNum"> 33 </span> : return isDesktop() ? std::string( _id, 8, _id.size() ) : &quot;&quot;;
-<span class="lineNum"> 34 </span> : }
-<span class="lineNum"> 35 </span> :
-<span class="lineNum"> 36 </span><span class="lineCov"> 17 : bool hasVersion() const {</span>
-<span class="lineNum"> 37 </span><span class="lineCov"> 17 : return version() != &quot;&quot;;</span>
-<span class="lineNum"> 38 </span> : }
-<span class="lineNum"> 39 </span> :
-<span class="lineNum"> 40 </span><span class="lineCov"> 1 : bool valid() const {</span>
-<span class="lineNum"> 41 </span><span class="lineCov"> 1 : return _id != &quot;&quot;;</span>
-<span class="lineNum"> 42 </span> : }
-<span class="lineNum"> 43 </span> :
-<span class="lineNum"> 44 </span><span class="lineCov"> 58 : bool operator&lt;=( const Token &amp;o ) const {</span>
-<span class="lineNum"> 45 </span><span class="lineCov"> 58 : return _id &lt;= o._id;</span>
-<span class="lineNum"> 46 </span> : }
-<span class="lineNum"> 47 </span> : };
-<span class="lineNum"> 48 </span> :
-<span class="lineNum"> 49 </span> : }
-<span class="lineNum"> 50 </span> :
-<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : inline std::ostream &amp;operator&lt;&lt;( std::ostream &amp;o, const ept::Token &amp;t ) {</span>
-<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : return o &lt;&lt; t.id();</span>
-<span class="lineNum"> 53 </span> : }
-<span class="lineNum"> 54 </span> :
-<span class="lineNum"> 55 </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>