summaryrefslogtreecommitdiff
path: root/rep/ept/debtags/maint
diff options
context:
space:
mode:
Diffstat (limited to 'rep/ept/debtags/maint')
-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
19 files changed, 0 insertions, 4779 deletions
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>