diff options
Diffstat (limited to 'rep/ept/debtags/maint')
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 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 lines:</td> - <td class="headerValue" width="20%">64</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">84.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@debian.org> -<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 <ept/debtags/maint/debdbparser.h> -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <tagcoll/input/base.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <map> -<span class="lineNum"> 26 </span> : #include <ctype.h> -<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 && (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, "field must start at the beginning of the line");</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 && (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, "field is truncated at end of file. Last line begins with: \"" + res + "\n");</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 && 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, "field is truncated at end of file");</span> -<span class="lineNum"> 95 </span> : } else { -<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : throw exception::Parser(in, std::string("invalid character `") + (char)c + "' expecting `:'");</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& 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 && 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 && 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(" \t");</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& 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& 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, "Got field: %.*s\n", 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, "Got body: %.*s\n", 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 && ! 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 && 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, "Appended body: %.*s\n", body.size(), body.data()); -<span class="lineNum"> 175 </span> : } -<span class="lineNum"> 176 </span> : //fprintf(stderr, "Trailing newlines: %d\n", n); -<span class="lineNum"> 177 </span> : -<span class="lineNum"> 178 </span> : -<span class="lineNum"> 179 </span><span class="lineCov"> 7094 : rec.insert(std::pair<std::string,std::string>(field, body));</span> -<span class="lineNum"> 180 </span> : } while (!isEOF && !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 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 lines:</td> - <td class="headerValue" width="20%">119</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">74.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <ept/debtags/maint/debtagsindexer.h> -<span class="lineNum"> 2 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 3 </span> : #include <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 4 </span> : #include <ept/debtags/maint/serializer.h> -<span class="lineNum"> 5 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : #include <tagcoll/coll/intdiskindex.h> -<span class="lineNum"> 8 </span> : #include <tagcoll/coll/simple.h> -<span class="lineNum"> 9 </span> : #include <tagcoll/TextFormat.h> -<span class="lineNum"> 10 </span> : #include <tagcoll/stream/filters.h> -<span class="lineNum"> 11 </span> : -<span class="lineNum"> 12 </span> : #include <wibble/exception.h> -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span> : #include <cstring> -<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<std::string> 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<std::string>::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->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<std::string>::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->c_str(), i->size() + 1);</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 42290 : pos += i->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& 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 && ts_user_idx == 0 && ts_main_tag == 0 && 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 >= sourceTimestamp() && ts_user_idx >= 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 > 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 >= sourceTimestamp() && ts_main_idx >= 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 && 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 > 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 < sourceTimestamp() || ts_main_idx < 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& tagfname, const std::string& 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<string, string> 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("Reading debtags sources from " + Path::debtagsSourceDir() + " and " + Path::debtagsUserSourceDir(), "Unable to find any tag data"); -<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<string, string>::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->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->tag -<span class="lineNum"> 143 </span><span class="lineCov"> 1 : master.append(tagindexer.pkgIndexer());</span> -<span class="lineNum"> 144 </span> : // MMap 2: tag->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 + ".tmp";</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 1 : FILE* out = fopen(tmpdb.c_str(), "wt");</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 1 : if (!out) throw wibble::exception::File(tmpdb, "creating temporary copy of tag index");</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 "atomic" 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("Renaming " + tmpdb + " to " + 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 && 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& tagfname, std::string& 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 && ts_user_idx == 0 && ts_main_tag == 0 && 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 >= sourceTimestamp() &&</span> -<span class="lineNum"> 223 </span> : ts_user_idx >= 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 >= sourceTimestamp() &&</span> -<span class="lineNum"> 237 </span> : ts_main_idx >= 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& voc, std::string& tagfname, std::string& 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 <ept/debtags/maint/sourcedir.tcc> -<span class="lineNum"> 262 </span> : #include <tagcoll/coll/simple.tcc> -<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 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 lines:</td> - <td class="headerValue" width="20%">5</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <ept/debtags/maint/sourcedir.h> -<span class="lineNum"> 5 </span> : #include <string> -<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& 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 > 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& tagfname, const std::string& idxfname); -<span class="lineNum"> 33 </span> : bool rebuildIfNeeded(); -<span class="lineNum"> 34 </span> : bool getUpToDateTagdb(std::string& tagfname, std::string& 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& voc); -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : static bool obtainWorkingDebtags(Vocabulary& voc, std::string& tagfname, std::string& 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 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 lines:</td> - <td class="headerValue" width="20%">846</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">84.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 %</td> - <td class="coverNumHi">54 / 64 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 %</td> - <td class="coverNumHi">89 / 119 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 %</td> - <td class="coverNumHi">5 / 5 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 %</td> - <td class="coverNumHi">49 / 54 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 %</td> - <td class="coverNumHi">17 / 17 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 %</td> - <td class="coverNumHi">13 / 15 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 %</td> - <td class="coverNumHi">5 / 6 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 %</td> - <td class="coverNumHi">18 / 18 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 %</td> - <td class="coverNumHi">87 / 89 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 %</td> - <td class="coverNumHi">48 / 48 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 %</td> - <td class="coverNumHi">43 / 57 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 %</td> - <td class="coverNumHi">3 / 3 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 %</td> - <td class="coverNumHi">8 / 9 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 %</td> - <td class="coverNumHi">65 / 94 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 %</td> - <td class="coverNumHi">2 / 2 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 %</td> - <td class="coverNumHi">147 / 181 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 %</td> - <td class="coverNumHi">13 / 13 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 %</td> - <td class="coverNumHi">52 / 52 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 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 lines:</td> - <td class="headerValue" width="20%">54</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">90.7 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@debian.org>, Peter Rockai <me@mornfall.net> -<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 <ept/debtags/maint/path.h> -<span class="lineNum"> 26 </span> : #include <ept/config.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 29 </span> : #include <wibble/string.h> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <sys/types.h> // getpwuid, stat, mkdir, getuid -<span class="lineNum"> 32 </span> : #include <sys/stat.h> // stat, mkdir -<span class="lineNum"> 33 </span> : #include <pwd.h> // getpwuid -<span class="lineNum"> 34 </span> : #include <unistd.h> // 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->pw_dir, ".debtags");</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 &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 &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& file ) {</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 300 : std::auto_ptr<struct stat> st = wibble::sys::fs::stat(file);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 580 : return st.get() == NULL ? 0 : st->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 &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 &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 &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 &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(), "vocabulary");</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(), "vocabulary.idx");</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(), "vocabulary");</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(), "vocabulary.idx");</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(), "package-tags");</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(), "package-tags.idx");</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(), "package-tags");</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(), "package-tags.idx");</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(), "pkgidx.idx");</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(), "pkgidx.idx");</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 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 lines:</td> - <td class="headerValue" width="20%">17</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <enrico@debian.org> -<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 <string> -<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 &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 &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 &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 &s ); -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span> : static int access( const std::string &, int ); -<span class="lineNum"> 69 </span> : static time_t timestamp( const std::string& ); -<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& 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& 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& 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& 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 &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 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 lines:</td> - <td class="headerValue" width="20%">15</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">86.7 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@enricozini.org> -<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 <enrico@debian.org> -<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 <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 27 </span> : #include <ept/debtags/maint/path.h> -<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& 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& 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 > 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) > 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("looking for the ID of string ") + 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 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 lines:</td> - <td class="headerValue" width="20%">6</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">83.3 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@enricozini.org> -<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 <enrico@debian.org> -<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 <tagcoll/diskindex/mmap.h> -<span class="lineNum"> 29 </span> : #include <string> -<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& 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& 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 >= 0 || static_cast<unsigned>(id) < 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 < 0 || (unsigned)id >= 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 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 lines:</td> - <td class="headerValue" width="20%">18</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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->package mapping -<span class="lineNum"> 4 </span> : * -<span class="lineNum"> 5 </span> : * Copyright (C) 2006 Enrico Zini <enrico@debian.org> -<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 <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 23 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 24 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 25 </span> : #include <set> -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : #include <ept/test.h> -<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& 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->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->first == pkg);</span> -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span> : /* std::cerr << x << ": " << i->id() << ": " -<span class="lineNum"> 55 </span> : << i->name() << ", " << pkgidx().name( i->id() ) << -<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<int> 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->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 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 lines:</td> - <td class="headerValue" width="20%">89</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">97.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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) <enrico@enricozini.org> -<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 <ept/debtags/vocabulary.h> -<span class="lineNum"> 11 </span> : #include <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 12 </span> : #include <tagcoll/patch.h> -<span class="lineNum"> 13 </span> : #include <wibble/mixin.h> -<span class="lineNum"> 14 </span> : #include <string> -<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<typename OUT> -<span class="lineNum"> 20 </span> : class IntToPkg : public wibble::mixin::OutputIterator< IntToPkg<OUT> > -<span class="lineNum"> 21 </span> : { -<span class="lineNum"> 22 </span> : PkgId& pkgid; -<span class="lineNum"> 23 </span> : Vocabulary& 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& pkgid, Vocabulary& voc, const OUT& 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<typename ITEMS, typename TAGS> -<span class="lineNum"> 31 </span><span class="lineCov"> 42291 : IntToPkg<OUT>& operator=(const std::pair<ITEMS, TAGS>& data)</span> -<span class="lineNum"> 32 </span> : { -<span class="lineNum"> 33 </span><span class="lineCov"> 42291 : std::set<std::string> ritems;</span> -<span class="lineNum"> 34 </span><span class="lineCov"> 42291 : std::set<Tag> 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() && !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<typename OUT> -<span class="lineNum"> 62 </span><span class="lineCov"> 5 : IntToPkg<OUT> intToPkg(PkgId& pkgid, Vocabulary& voc, const OUT& out)</span> -<span class="lineNum"> 63 </span> : { -<span class="lineNum"> 64 </span><span class="lineCov"> 5 : return IntToPkg<OUT>(pkgid, voc, out);</span> -<span class="lineNum"> 65 </span> : } -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span> : template<typename OUT> -<span class="lineNum"> 68 </span> : class StringToInt : public wibble::mixin::OutputIterator< StringToInt<OUT> > -<span class="lineNum"> 69 </span> : { -<span class="lineNum"> 70 </span> : PkgId& pkgid; -<span class="lineNum"> 71 </span> : Vocabulary& 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& pkgid, Vocabulary& voc, const OUT& 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<typename ITEMS, typename TAGS> -<span class="lineNum"> 79 </span><span class="lineCov"> 21146 : StringToInt<OUT>& operator=(const std::pair<ITEMS, TAGS>& data)</span> -<span class="lineNum"> 80 </span> : { -<span class="lineNum"> 81 </span><span class="lineCov"> 21146 : std::set<int> ritems;</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 21146 : std::set<int> 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() && !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<typename OUT> -<span class="lineNum"> 111 </span><span class="lineCov"> 2 : StringToInt<OUT> stringToInt(PkgId& pkgid, Vocabulary& voc, const OUT& out)</span> -<span class="lineNum"> 112 </span> : { -<span class="lineNum"> 113 </span><span class="lineCov"> 2 : return StringToInt<OUT>(pkgid, voc, out);</span> -<span class="lineNum"> 114 </span> : } -<span class="lineNum"> 115 </span> : -<span class="lineNum"> 116 </span> : template<typename OUT> -<span class="lineNum"> 117 </span> : class StringToPkg : public wibble::mixin::OutputIterator< StringToPkg<OUT> > -<span class="lineNum"> 118 </span> : { -<span class="lineNum"> 119 </span> : PkgId& pkgid; -<span class="lineNum"> 120 </span> : Vocabulary& 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& pkgid, Vocabulary& voc, const OUT& out) -<span class="lineNum"> 125 </span> : : pkgid(pkgid), voc(voc), out(out) {} -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : template<typename ITEMS, typename TAGS> -<span class="lineNum"> 128 </span> : StringToPkg<OUT>& operator=(const std::pair<ITEMS, TAGS>& data) -<span class="lineNum"> 129 </span> : { -<span class="lineNum"> 130 </span> : std::set<std::string> ritems; -<span class="lineNum"> 131 </span> : std::set<Tag> 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() && !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<typename OUT> -<span class="lineNum"> 161 </span> : StringToPkg<OUT> stringToPkg(PkgId& pkgid, Vocabulary& voc, const OUT& out) -<span class="lineNum"> 162 </span> : { -<span class="lineNum"> 163 </span> : return StringToPkg<OUT>(pkgid, voc, out); -<span class="lineNum"> 164 </span> : } -<span class="lineNum"> 165 </span> : -<span class="lineNum"> 166 </span> : template<typename OUT> -<span class="lineNum"> 167 </span> : class PkgToString : public wibble::mixin::OutputIterator< PkgToString<OUT> > -<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& out) : out(out) {}</span> -<span class="lineNum"> 172 </span> : -<span class="lineNum"> 173 </span> : template<typename ITEMS, typename TAGS> -<span class="lineNum"> 174 </span><span class="lineCov"> 1 : PkgToString<OUT>& operator=(const std::pair<ITEMS, TAGS>& data)</span> -<span class="lineNum"> 175 </span> : { -<span class="lineNum"> 176 </span><span class="lineCov"> 1 : std::set<std::string> 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->valid())</span> -<span class="lineNum"> 180 </span><span class="lineCov"> 2 : stags.insert(i->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<typename OUT> -<span class="lineNum"> 188 </span><span class="lineCov"> 1 : PkgToString<OUT> pkgToString(const OUT& out)</span> -<span class="lineNum"> 189 </span> : { -<span class="lineNum"> 190 </span><span class="lineCov"> 1 : return PkgToString<OUT>(out);</span> -<span class="lineNum"> 191 </span> : } -<span class="lineNum"> 192 </span> : -<span class="lineNum"> 193 </span> : template<typename OUT> -<span class="lineNum"> 194 </span> : class PatchStringToInt : public wibble::mixin::OutputIterator< PatchStringToInt<OUT> > -<span class="lineNum"> 195 </span> : { -<span class="lineNum"> 196 </span> : PkgId& pkgid; -<span class="lineNum"> 197 </span> : Vocabulary& 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& pkgid, Vocabulary& voc, const OUT& 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<OUT>& operator=(const tagcoll::Patch<std::string, std::string>& 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<int, int> res(id);</span> -<span class="lineNum"> 211 </span><span class="lineCov"> 2 : for (std::set<std::string>::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<std::string>::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<typename OUT> -<span class="lineNum"> 232 </span><span class="lineCov"> 1 : PatchStringToInt<OUT> patchStringToInt(PkgId& pkgid, Vocabulary& voc, const OUT& out)</span> -<span class="lineNum"> 233 </span> : { -<span class="lineNum"> 234 </span><span class="lineCov"> 1 : return PatchStringToInt<OUT>(pkgid, voc, out);</span> -<span class="lineNum"> 235 </span> : } -<span class="lineNum"> 236 </span> : -<span class="lineNum"> 237 </span> : template<typename OUT> -<span class="lineNum"> 238 </span> : class PatchIntToString : public wibble::mixin::OutputIterator< PatchIntToString<OUT> > -<span class="lineNum"> 239 </span> : { -<span class="lineNum"> 240 </span> : PkgId& pkgid; -<span class="lineNum"> 241 </span> : Vocabulary& 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& pkgid, Vocabulary& voc, const OUT& 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<OUT>& operator=(const tagcoll::Patch<int, int>& 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<std::string, std::string> res(name);</span> -<span class="lineNum"> 255 </span><span class="lineCov"> 4 : for (std::set<int>::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<int>::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<typename OUT> -<span class="lineNum"> 276 </span><span class="lineCov"> 2 : PatchIntToString<OUT> patchIntToString(PkgId& pkgid, Vocabulary& voc, const OUT& out)</span> -<span class="lineNum"> 277 </span> : { -<span class="lineNum"> 278 </span><span class="lineCov"> 2 : return PatchIntToString<OUT>(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<typename OUT> -<span class="lineNum"> 285 </span> : class ToInt : public wibble::mixin::OutputIterator< ToInt<OUT> > -<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& out) : out(out) {} -<span class="lineNum"> 290 </span> : -<span class="lineNum"> 291 </span> : template<typename ITEMS, typename TAGS> -<span class="lineNum"> 292 </span> : ToInt<OUT>& operator=(const std::pair<ITEMS, TAGS>& data) -<span class="lineNum"> 293 </span> : { -<span class="lineNum"> 294 </span> : std::set<int> iitems; -<span class="lineNum"> 295 </span> : std::set<int> 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->valid()) -<span class="lineNum"> 299 </span> : iitems.insert(i->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->valid()) -<span class="lineNum"> 303 </span> : itags.insert(i->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<typename OUT> -<span class="lineNum"> 311 </span> : ToInt<OUT> toInt(const OUT& out) -<span class="lineNum"> 312 </span> : { -<span class="lineNum"> 313 </span> : return ToInt<OUT>(out); -<span class="lineNum"> 314 </span> : } -<span class="lineNum"> 315 </span> : -<span class="lineNum"> 316 </span> : template<typename ITEMCONV, typename TAGCONV, typename OUT> -<span class="lineNum"> 317 </span> : class Converter : public wibble::mixin::OutputIterator< Converter<ITEMCONV, TAGCONV, OUT> > -<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& itemconv, const TAGCONV& tagconv, const OUT& out) -<span class="lineNum"> 325 </span> : : itemconv(itemconv), tagconv(tagconv), out(out) {} -<span class="lineNum"> 326 </span> : -<span class="lineNum"> 327 </span> : template<typename ITEMS, typename TAGS> -<span class="lineNum"> 328 </span> : Converter<ITEMCONV, TAGCONV, OUT>& operator=(const std::pair<ITEMS, TAGS>& 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<typename ITEMCONV, typename TAGCONV, typename OUT> -<span class="lineNum"> 337 </span> : Converter<ITEMCONV, TAGCONV, OUT> converter(const ITEMCONV& itemconv, const TAGCONV& tagconv, const OUT& out) -<span class="lineNum"> 338 </span> : { -<span class="lineNum"> 339 </span> : return Converter<ITEMCONV, TAGCONV, OUT>(itemconv, tagconv, out); -<span class="lineNum"> 340 </span> : } -<span class="lineNum"> 341 </span> : -<span class="lineNum"> 342 </span> : -<span class="lineNum"> 343 </span> : template<typename OUT> -<span class="lineNum"> 344 </span> : class PatchToString : public wibble::mixin::OutputIterator< PatchToString<OUT> > -<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& out) : out(out) {} -<span class="lineNum"> 350 </span> : -<span class="lineNum"> 351 </span> : template<typename PKG, typename TAG> -<span class="lineNum"> 352 </span> : PatchToString<OUT>& operator=(const tagcoll::Patch<PKG, TAG>& 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<std::string, std::string> res(patch.item.name()); -<span class="lineNum"> 358 </span> : for (typename std::set<TAG>::const_iterator i = patch.added.begin(); -<span class="lineNum"> 359 </span> : i != patch.added.end(); ++i) -<span class="lineNum"> 360 </span> : if (i->valid()) -<span class="lineNum"> 361 </span> : res.add(i->fullname()); -<span class="lineNum"> 362 </span> : for (typename std::set<TAG>::const_iterator i = patch.removed.begin(); -<span class="lineNum"> 363 </span> : i != patch.removed.end(); ++i) -<span class="lineNum"> 364 </span> : if (i->valid()) -<span class="lineNum"> 365 </span> : res.remove(i->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<typename OUT> -<span class="lineNum"> 373 </span> : PatchToString<OUT> patchToString(const OUT& out) -<span class="lineNum"> 374 </span> : { -<span class="lineNum"> 375 </span> : return PatchToString<OUT>(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<> -<span class="lineNum"> 389 </span> : struct coll_traits< ept::cache::debtags::DebtagsIndex > -<span class="lineNum"> 390 </span> : { -<span class="lineNum"> 391 </span> : typedef ept::cache::Package<> item_type; -<span class="lineNum"> 392 </span> : typedef ept::cache::debtags::Tag tag_type; -<span class="lineNum"> 393 </span> : typedef std::set< ept::cache::Package<> > itemset_type; -<span class="lineNum"> 394 </span> : typedef std::set<ept::cache::debtags::Tag> 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<FacetIntConverter>, -<span class="lineNum"> 409 </span> : public Tagcoll::Converter<aptFront::cache::entity::Facet, int>, -<span class="lineNum"> 410 </span> : public Tagcoll::Converter<int, aptFront::cache::entity::Facet> -<span class="lineNum"> 411 </span> : { -<span class="lineNum"> 412 </span> : typedef aptFront::cache::entity::Facet Facet; -<span class="lineNum"> 413 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Facet> FacetSet; -<span class="lineNum"> 414 </span> : typedef Tagcoll::OpSet<int> IntSet; -<span class="lineNum"> 415 </span> : public: -<span class="lineNum"> 416 </span> : virtual int operator()(const aptFront::cache::entity::Facet& item) const; -<span class="lineNum"> 417 </span> : virtual aptFront::cache::entity::Facet operator()(const int& item) const; -<span class="lineNum"> 418 </span> : -<span class="lineNum"> 419 </span> : virtual IntSet operator()(const FacetSet& item) const -<span class="lineNum"> 420 </span> : { return Tagcoll::Converter<Facet, int>::operator()(item); } -<span class="lineNum"> 421 </span> : virtual FacetSet operator()(const IntSet& item) const -<span class="lineNum"> 422 </span> : { return Tagcoll::Converter<int, Facet>::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<FacetStringConverter>, -<span class="lineNum"> 431 </span> : public Tagcoll::Converter<aptFront::cache::entity::Facet, std::string>, -<span class="lineNum"> 432 </span> : public Tagcoll::Converter<std::string, aptFront::cache::entity::Facet> -<span class="lineNum"> 433 </span> : { -<span class="lineNum"> 434 </span> : typedef aptFront::cache::entity::Facet Facet; -<span class="lineNum"> 435 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Facet> FacetSet; -<span class="lineNum"> 436 </span> : typedef Tagcoll::OpSet<std::string> StringSet; -<span class="lineNum"> 437 </span> : public: -<span class="lineNum"> 438 </span> : virtual std::string operator()(const aptFront::cache::entity::Facet& item) const; -<span class="lineNum"> 439 </span> : virtual aptFront::cache::entity::Facet operator()(const std::string& item) const; -<span class="lineNum"> 440 </span> : -<span class="lineNum"> 441 </span> : virtual StringSet operator()(const FacetSet& item) const -<span class="lineNum"> 442 </span> : { return Tagcoll::Converter<Facet, std::string>::operator()(item); } -<span class="lineNum"> 443 </span> : virtual FacetSet operator()(const StringSet& item) const -<span class="lineNum"> 444 </span> : { return Tagcoll::Converter<std::string, Facet>::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<TagIntConverter>, -<span class="lineNum"> 453 </span> : public Tagcoll::Converter<aptFront::cache::entity::Tag, int>, -<span class="lineNum"> 454 </span> : public Tagcoll::Converter<int, aptFront::cache::entity::Tag> -<span class="lineNum"> 455 </span> : { -<span class="lineNum"> 456 </span> : typedef aptFront::cache::entity::Tag Tag; -<span class="lineNum"> 457 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Tag> TagSet; -<span class="lineNum"> 458 </span> : typedef Tagcoll::OpSet<int> IntSet; -<span class="lineNum"> 459 </span> : public: -<span class="lineNum"> 460 </span> : virtual int operator()(const aptFront::cache::entity::Tag& item) const; -<span class="lineNum"> 461 </span> : virtual aptFront::cache::entity::Tag operator()(const int& item) const; -<span class="lineNum"> 462 </span> : -<span class="lineNum"> 463 </span> : virtual IntSet operator()(const TagSet& item) const -<span class="lineNum"> 464 </span> : { return Tagcoll::Converter<Tag, int>::operator()(item); } -<span class="lineNum"> 465 </span> : virtual TagSet operator()(const IntSet& item) const -<span class="lineNum"> 466 </span> : { return Tagcoll::Converter<int, Tag>::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<TagStringConverter>, -<span class="lineNum"> 475 </span> : public Tagcoll::Converter<aptFront::cache::entity::Tag, std::string>, -<span class="lineNum"> 476 </span> : public Tagcoll::Converter<std::string, aptFront::cache::entity::Tag> -<span class="lineNum"> 477 </span> : { -<span class="lineNum"> 478 </span> : typedef aptFront::cache::entity::Tag Tag; -<span class="lineNum"> 479 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Tag> TagSet; -<span class="lineNum"> 480 </span> : typedef Tagcoll::OpSet<std::string> StringSet; -<span class="lineNum"> 481 </span> : public: -<span class="lineNum"> 482 </span> : virtual std::string operator()(const Tag& item) const; -<span class="lineNum"> 483 </span> : virtual Tag operator()(const std::string& item) const; -<span class="lineNum"> 484 </span> : -<span class="lineNum"> 485 </span> : virtual StringSet operator()(const TagSet& item) const -<span class="lineNum"> 486 </span> : { return Tagcoll::Converter<Tag, std::string>::operator()(item); } -<span class="lineNum"> 487 </span> : virtual TagSet operator()(const StringSet& item) const -<span class="lineNum"> 488 </span> : { return Tagcoll::Converter<std::string, Tag>::operator()(item); } -<span class="lineNum"> 489 </span> : -<span class="lineNum"> 490 </span> : TagSet parseTagList(const std::string& 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<PackageIntConverter>, -<span class="lineNum"> 499 </span> : public Tagcoll::Converter<aptFront::cache::entity::Package, int>, -<span class="lineNum"> 500 </span> : public Tagcoll::Converter<int, aptFront::cache::entity::Package> -<span class="lineNum"> 501 </span> : { -<span class="lineNum"> 502 </span> : typedef aptFront::cache::entity::Package Package; -<span class="lineNum"> 503 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Package> PackageSet; -<span class="lineNum"> 504 </span> : typedef Tagcoll::OpSet<int> IntSet; -<span class="lineNum"> 505 </span> : public: -<span class="lineNum"> 506 </span> : virtual int operator()(const Package& item) const; -<span class="lineNum"> 507 </span> : virtual Package operator()(const int& item) const; -<span class="lineNum"> 508 </span> : -<span class="lineNum"> 509 </span> : virtual IntSet operator()(const PackageSet& item) const -<span class="lineNum"> 510 </span> : { return Tagcoll::Converter<Package, int>::operator()(item); } -<span class="lineNum"> 511 </span> : virtual PackageSet operator()(const IntSet& item) const -<span class="lineNum"> 512 </span> : { return Tagcoll::Converter<int, Package>::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<PackageStringConverter>, -<span class="lineNum"> 521 </span> : public Tagcoll::Converter<aptFront::cache::entity::Package, std::string>, -<span class="lineNum"> 522 </span> : public Tagcoll::Converter<std::string, aptFront::cache::entity::Package> -<span class="lineNum"> 523 </span> : { -<span class="lineNum"> 524 </span> : typedef aptFront::cache::entity::Package Package; -<span class="lineNum"> 525 </span> : typedef Tagcoll::OpSet<aptFront::cache::entity::Package> PackageSet; -<span class="lineNum"> 526 </span> : typedef Tagcoll::OpSet<std::string> StringSet; -<span class="lineNum"> 527 </span> : public: -<span class="lineNum"> 528 </span> : virtual std::string operator()(const Package& item) const; -<span class="lineNum"> 529 </span> : virtual Package operator()(const std::string& item) const; -<span class="lineNum"> 530 </span> : -<span class="lineNum"> 531 </span> : virtual StringSet operator()(const PackageSet& item) const -<span class="lineNum"> 532 </span> : { return Tagcoll::Converter<Package, std::string>::operator()(item); } -<span class="lineNum"> 533 </span> : virtual PackageSet operator()(const StringSet& item) const -<span class="lineNum"> 534 </span> : { return Tagcoll::Converter<std::string, Package>::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) <enrico@enricozini.org> -<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 <ept/cache/debtags/serializer.h> -<span class="lineNum"> 560 </span> : #if 0 -<span class="lineNum"> 561 </span> : #include <ept/cache/debtags/pkgidx.h> -<span class="lineNum"> 562 </span> : #include <ept/cache/debtags/vocabulary.h> -<span class="lineNum"> 563 </span> : #include <ept/cache/package.h> -<span class="lineNum"> 564 </span> : //#include <ept/cache/cache.h> -<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 "FacetIntConverter"; } -<span class="lineNum"> 576 </span> : -<span class="lineNum"> 577 </span> : int FacetIntConverter::operator()(const aptFront::cache::entity::Facet& 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& 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 "FacetStringConverter"; } -<span class="lineNum"> 588 </span> : -<span class="lineNum"> 589 </span> : std::string FacetStringConverter::operator()(const aptFront::cache::entity::Facet& 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& 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 "TagIntConverter"; } -<span class="lineNum"> 600 </span> : -<span class="lineNum"> 601 </span> : int TagIntConverter::operator()(const aptFront::cache::entity::Tag& 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& 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 "TagStringConverter"; } -<span class="lineNum"> 612 </span> : -<span class="lineNum"> 613 </span> : std::string TagStringConverter::operator()(const aptFront::cache::entity::Tag& 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& 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<entity::Tag> TagStringConverter::parseTagList(const std::string& str) const -<span class="lineNum"> 624 </span> : { -<span class="lineNum"> 625 </span> : if (str.empty()) -<span class="lineNum"> 626 </span> : return Tagcoll::OpSet<entity::Tag>(); -<span class="lineNum"> 627 </span> : -<span class="lineNum"> 628 </span> : size_t i = str.find(", "); -<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<entity::Tag> 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<entity::Tag>() + t; -<span class="lineNum"> 653 </span> : else -<span class="lineNum"> 654 </span> : return Tagcoll::OpSet<entity::Tag>(); -<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 "PackageIntConverter"; } -<span class="lineNum"> 662 </span> : -<span class="lineNum"> 663 </span> : int PackageIntConverter::operator()(const aptFront::cache::entity::Package& 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& item) const -<span class="lineNum"> 669 </span> : { -<span class="lineNum"> 670 </span> : PkgIdx& 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 "PackageStringConverter"; } -<span class="lineNum"> 675 </span> : -<span class="lineNum"> 676 </span> : std::string PackageStringConverter::operator()(const aptFront::cache::entity::Package& 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& 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 <apt-front/cache/component/debtags/update.h> -<span class="lineNum"> 695 </span> : #include <iostream> -<span class="lineNum"> 696 </span> : #include "test-utils.h" -<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( "debtags init failed, cancelling" ); -<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<> template<> -<span class="lineNum"> 729 </span> : void to::test<1> () -<span class="lineNum"> 730 </span> : { -<span class="lineNum"> 731 </span> : check(); -<span class="lineNum"> 732 </span> : -<span class="lineNum"> 733 </span> : PackageStringConverter& psc = c.packagestringconverter(); -<span class="lineNum"> 734 </span> : -<span class="lineNum"> 735 </span> : ensure(psc("Slartibartsfart") == 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( "debtags" ); -<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("debtags"); -<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), "debtags"); -<span class="lineNum"> 749 </span> : ensure_equals(psc(p1), "debtags"); -<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<entity::Package> pkgs; -<span class="lineNum"> 755 </span> : pkgs += c.packages().packageByName( "debtags" ); -<span class="lineNum"> 756 </span> : pkgs += c.packages().packageByName( "tagcoll" ); -<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("debtags")); -<span class="lineNum"> 762 </span> : ensure (psc(pkgs).contains("tagcoll")); -<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<std::string> pkgs; -<span class="lineNum"> 768 </span> : pkgs += "debtags"; -<span class="lineNum"> 769 </span> : pkgs += "tagcoll"; -<span class="lineNum"> 770 </span> : pkgs += "Slartibartsfart"; -<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("debtags"))); -<span class="lineNum"> 775 </span> : ensure (psc(pkgs).contains(psc("tagcoll"))); -<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& operator<<(ostream& out, const entity::Package& pkg) -<span class="lineNum"> 781 </span> : { -<span class="lineNum"> 782 </span> : if (pkg.valid()) -<span class="lineNum"> 783 </span> : return out << pkg.name(); -<span class="lineNum"> 784 </span> : else -<span class="lineNum"> 785 </span> : return out << "(invalid package)"; -<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<> template<> -<span class="lineNum"> 790 </span> : void to::test<2> () -<span class="lineNum"> 791 </span> : { -<span class="lineNum"> 792 </span> : PackageStringConverter& 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 << "Note: exception thrown during processing[string] of package " << i->name(string("(invalid package)")) << 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& 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 << "Note: exception thrown during processing[int] of package " << i->name(string("(invalid package)")) << 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<> template<> -<span class="lineNum"> 819 </span> : void to::test<3> () -<span class="lineNum"> 820 </span> : { -<span class="lineNum"> 821 </span> : typedef Tagcoll::OpSet<entity::Facet> FacetSet; -<span class="lineNum"> 822 </span> : -<span class="lineNum"> 823 </span> : FacetStringConverter& 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 << "Note: exception thrown during processing[string] of facet " << i->name() << 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& 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 << "Note: exception thrown during processing[int] of facet " << i->name() << 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<> template<> -<span class="lineNum"> 849 </span> : void to::test<4> () -<span class="lineNum"> 850 </span> : { -<span class="lineNum"> 851 </span> : typedef Tagcoll::OpSet<entity::Tag> TagSet; -<span class="lineNum"> 852 </span> : -<span class="lineNum"> 853 </span> : TagStringConverter& 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 << "Note: exception thrown during processing[string] of tag " << i->fullname() << 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& 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 << "Note: exception thrown during processing[int] of tag " << i->fullname() << 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<> template<> -<span class="lineNum"> 879 </span> : void to::test<5> () -<span class="lineNum"> 880 </span> : { -<span class="lineNum"> 881 </span> : TagStringConverter& tsc = c.tagstringconverter(); -<span class="lineNum"> 882 </span> : OpSet<entity::Tag> 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("accessibility::TODO") != entity::Tag()); -<span class="lineNum"> 886 </span> : ensure(tsc("role::sw:devel-lib") != entity::Tag()); -<span class="lineNum"> 887 </span> : ensure(tsc("x11::xserver") != entity::Tag()); -<span class="lineNum"> 888 </span> : ensure(tsc("antani") == entity::Tag()); -<span class="lineNum"> 889 </span> : ensure(tsc("blinda") == entity::Tag()); -<span class="lineNum"> 890 </span> : ensure(tsc("supercazzola") == entity::Tag()); -<span class="lineNum"> 891 </span> : -<span class="lineNum"> 892 </span> : ts = tsc.parseTagList("role::sw:devel-lib"); -<span class="lineNum"> 893 </span> : ensure_equals(ts.size(), 1u); -<span class="lineNum"> 894 </span> : ensure(ts.contains(tsc("role::sw:devel-lib"))); -<span class="lineNum"> 895 </span> : -<span class="lineNum"> 896 </span> : ts = tsc.parseTagList("accessibility::TODO, x11::xserver, role::sw:devel-lib"); -<span class="lineNum"> 897 </span> : ensure_equals(ts.size(), 3u); -<span class="lineNum"> 898 </span> : ensure(ts.contains(tsc("accessibility::TODO"))); -<span class="lineNum"> 899 </span> : ensure(ts.contains(tsc("role::sw:devel-lib"))); -<span class="lineNum"> 900 </span> : ensure(ts.contains(tsc("x11::xserver"))); -<span class="lineNum"> 901 </span> : -<span class="lineNum"> 902 </span> : ts = tsc.parseTagList("antani"); -<span class="lineNum"> 903 </span> : ensure_equals(ts.size(), 0u); -<span class="lineNum"> 904 </span> : -<span class="lineNum"> 905 </span> : ts = tsc.parseTagList("antani, blinda, supercazzola"); -<span class="lineNum"> 906 </span> : ensure_equals(ts.size(), 0u); -<span class="lineNum"> 907 </span> : -<span class="lineNum"> 908 </span> : ts = tsc.parseTagList("antani, x11::xserver, blinda"); -<span class="lineNum"> 909 </span> : ensure_equals(ts.size(), 1u); -<span class="lineNum"> 910 </span> : ensure(ts.contains(tsc("x11::xserver"))); -<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<> template<> -<span class="lineNum"> 915 </span> : void to::test<6> () -<span class="lineNum"> 916 </span> : { -<span class="lineNum"> 917 </span> : TagStringConverter& tsc = c.tagstringconverter(); -<span class="lineNum"> 918 </span> : OpSet<entity::Tag> 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("role::TODO") != entity::Tag()); -<span class="lineNum"> 922 </span> : ensure(tsc("role::sw:server") != entity::Tag()); -<span class="lineNum"> 923 </span> : ensure(tsc("role::aux:dummy") != entity::Tag()); -<span class="lineNum"> 924 </span> : ensure(tsc("role::sw:amusement") != entity::Tag()); -<span class="lineNum"> 925 </span> : ensure(tsc("role::sw:server{}") == entity::Tag()); -<span class="lineNum"> 926 </span> : ensure(tsc("role::{}") == entity::Tag()); -<span class="lineNum"> 927 </span> : ensure(tsc("role::{") == entity::Tag()); -<span class="lineNum"> 928 </span> : ensure(tsc("role::}") == entity::Tag()); -<span class="lineNum"> 929 </span> : -<span class="lineNum"> 930 </span> : ts = tsc.parseTagList("role::{TODO,sw:server,aux:dummy,sw:amusement}"); -<span class="lineNum"> 931 </span> : ensure_equals(ts.size(), 4u); -<span class="lineNum"> 932 </span> : ensure(ts.contains(tsc("role::TODO"))); -<span class="lineNum"> 933 </span> : ensure(ts.contains(tsc("role::sw:server"))); -<span class="lineNum"> 934 </span> : ensure(ts.contains(tsc("role::aux:dummy"))); -<span class="lineNum"> 935 </span> : ensure(ts.contains(tsc("role::sw:amusement"))); -<span class="lineNum"> 936 </span> : -<span class="lineNum"> 937 </span> : ts = tsc.parseTagList("role::{TODO,aux:dummy}, role::sw:{server,amusement}"); -<span class="lineNum"> 938 </span> : ensure_equals(ts.size(), 4u); -<span class="lineNum"> 939 </span> : ensure(ts.contains(tsc("role::TODO"))); -<span class="lineNum"> 940 </span> : ensure(ts.contains(tsc("role::sw:server"))); -<span class="lineNum"> 941 </span> : ensure(ts.contains(tsc("role::aux:dummy"))); -<span class="lineNum"> 942 </span> : ensure(ts.contains(tsc("role::sw:amusement"))); -<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 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 lines:</td> - <td class="headerValue" width="20%">48</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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) <enrico@enricozini.org> -<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 <enrico@debian.org> -<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 <ept/debtags/maint/serializer.h> -<span class="lineNum"> 28 </span> : #include <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 29 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 30 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 31 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : #include <tagcoll/coll/simple.h> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : #include <wibble/singleton.h> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : #include <ept/test.h> -<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& voc; -<span class="lineNum"> 48 </span> : PkgId& 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 <string, string> to a stream of tag -<span class="lineNum"> 54 </span> : * data <int, int> to a stream of tag data <Package, Tag> and finally back to a -<span class="lineNum"> 55 </span> : * stream of tag data <string, string> -<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 <string, string> -<span class="lineNum"> 60 </span><span class="lineCov"> 1 : coll::Simple<string, string> source;</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : source.insert(wibble::singleton(string("debtags")), wibble::singleton(string("use::editing")));</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 2 : source.insert(wibble::singleton(string("debtags")), wibble::singleton(string("role::program")));</span> -<span class="lineNum"> 63 </span> : -<span class="lineNum"> 64 </span> : // <string, string> -> <int, int> -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : coll::Simple<int, int> 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> : // <int, int> -> <Package, Tag> -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : coll::Simple<string, Tag> 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<Tag> tags = dest1.getTagsOfItem("debtags");</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("use::editing");</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 2 : Tag roleProgram = voc.tagByName("role::program");</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> : // <Package, Tag> -> <string, string> -<span class="lineNum"> 88 </span><span class="lineCov"> 1 : coll::Simple<string, string> 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<std::string> tags1 = dest2.getTagsOfItem("debtags");</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("use::editing") != tags1.end());</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert(tags1.find("role::program") != 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<string, string> change;</span> -<span class="lineNum"> 105 </span> : change.addPatch(Patch<string, string>("debtags", -<span class="lineNum"> 106 </span> : wibble::singleton(string("use::gameplaying")), -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : wibble::singleton(string("use::editing"))));</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : // Deserialise to ints -<span class="lineNum"> 110 </span><span class="lineCov"> 1 : PatchList<int, int> 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()->second.added.size(), 1u);</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 2 : assert_eq(intChange.begin()->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<string, string> 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()->first, string("debtags"));</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 2 : assert_eq(change1.begin()->second.item, string("debtags"));</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 2 : assert_eq(change1.begin()->second.added.size(), 1u);</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 2 : assert_eq(*change1.begin()->second.added.begin(), string("use::gameplaying"));</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 2 : assert_eq(change1.begin()->second.removed.size(), 1u);</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 2 : assert_eq(*change1.begin()->second.removed.begin(), string("use::editing"));</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 <tagcoll/coll/simple.tcc> -<span class="lineNum"> 131 </span> : #include <tagcoll/patch.tcc> -<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 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 lines:</td> - <td class="headerValue" width="20%">57</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">75.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <ept/debtags/maint/sourcedir.h> -<span class="lineNum"> 2 </span> : #include <ept/debtags/maint/vocabularymerger.h> -<span class="lineNum"> 3 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #include <wibble/string.h> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : #include <tagcoll/input/zlib.h> -<span class="lineNum"> 8 </span> : #include <tagcoll/input/stdio.h> -<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& 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() <= 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 == ".voc")</span> -<span class="lineNum"> 26 </span><span class="lineCov"> 80 : return VOC;</span> -<span class="lineNum"> 27 </span><span class="lineCov"> 462 : if (ext == ".tag")</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() <= 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 == ".voc.gz")</span> -<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : return VOCGZ;</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 302 : if (ext == ".tag.gz")</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->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->d_name));</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 54 : if (ts > 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->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->d_name));</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 116 : if (ts > 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->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->d_name));</span> -<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : if (ts > 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& 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->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->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->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 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 lines:</td> - <td class="headerValue" width="20%">3</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <enrico@enricozini.org> -<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 <enrico@debian.org> -<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 <wibble/sys/fs.h> -<span class="lineNum"> 28 </span> : #include <string> -<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& 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& 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<typename OUT> -<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& 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 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 lines:</td> - <td class="headerValue" width="20%">9</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">88.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Debtags data source directory access -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : #include <ept/debtags/maint/sourcedir.h> -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span> : #include <tagcoll/input/zlib.h> -<span class="lineNum"> 11 </span> : #include <tagcoll/input/stdio.h> -<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<typename OUT> -<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->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() + "/" + d->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() + "/" + d->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 <tagcoll/TextFormat.tcc> -<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 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 lines:</td> - <td class="headerValue" width="20%">94</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">69.1 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <ept/debtags/maint/vocabularyindexer.h> -<span class="lineNum"> 2 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 3 </span> : #include <ept/debtags/maint/vocabularymerger.h> -<span class="lineNum"> 4 </span> : #include <ept/debtags/maint/path.h> -<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 && ts_user_idx == 0 && ts_main_voc == 0 && 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 >= sourceTimestamp() && ts_user_idx >= 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 > 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 >= sourceTimestamp() && ts_main_idx >= 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 && 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 > 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 < sourceTimestamp() || ts_main_idx < 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& vocfname, const std::string& 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("Reading debtags sources from " + mainSource.path() + " and " + userSource.path(), "Unable to find any vocabulary data"); -<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 + ".tmp";</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("renaming " + tmpvocfname + " to " + 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 && 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& vocfname, std::string& 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 && ts_user_idx == 0 && ts_main_voc == 0 && 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 >= sourceTimestamp() &&</span> -<span class="lineNum"> 158 </span> : ts_user_idx >= 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 >= sourceTimestamp() &&</span> -<span class="lineNum"> 172 </span> : ts_main_idx >= 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& vocfname, std::string& 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 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 lines:</td> - <td class="headerValue" width="20%">2</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <enrico@enricozini.org> -<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 <enrico@debian.org> -<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 <ept/debtags/maint/sourcedir.h> -<span class="lineNum"> 28 </span> : #include <string> -<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 < 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& vocfname, const std::string& 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& vocfname, std::string& 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& vocfname, std::string& 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 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 lines:</td> - <td class="headerValue" width="20%">181</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">81.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed 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 <enrico@debian.org> -<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 <ept/debtags/maint/vocabularymerger.h> -<span class="lineNum"> 23 </span> : #include <ept/debtags/maint/debdbparser.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <cassert> -<span class="lineNum"> 26 </span> : #include <cstring> -<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& name, const string& val) throw ()</span> -<span class="lineNum"> 35 </span> : { -<span class="lineNum"> 36 </span><span class="lineCov"> 1432 : fprintf(out, "%s: ", 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 -> \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]) -> \n \1 -<span class="lineNum"> 50 </span><span class="lineCov"> 618 : else if (*s != ' ' && *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& VocabularyMerger::FacetData::obtainTag(const std::string& name)</span> -<span class="lineNum"> 75 </span> : { -<span class="lineNum"> 76 </span><span class="lineCov"> 1865 : std::map<std::string, TagData>::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<std::map<std::string, TagData>::iterator, bool> res = tags.insert(make_pair<std::string, TagData>(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->second.name = name;</span> -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span><span class="lineCov"> 1865 : return i->second;</span> -<span class="lineNum"> 85 </span> : } -<span class="lineNum"> 86 </span> : -<span class="lineNum"> 87 </span><span class="lineCov"> 1953 : VocabularyMerger::FacetData& VocabularyMerger::obtainFacet(const std::string& name)</span> -<span class="lineNum"> 88 </span> : { -<span class="lineNum"> 89 </span><span class="lineCov"> 1953 : std::map<std::string, FacetData>::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<std::map<std::string, FacetData>::iterator, bool> res = facets.insert(make_pair<std::string, FacetData>(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->second.name = name;</span> -<span class="lineNum"> 96 </span> : } -<span class="lineNum"> 97 </span><span class="lineCov"> 1953 : return i->second;</span> -<span class="lineNum"> 98 </span> : } -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span><span class="lineCov"> 1865 : VocabularyMerger::TagData& VocabularyMerger::obtainTag(const std::string& fullname)</span> -<span class="lineNum"> 101 </span> : { -<span class="lineNum"> 102 </span><span class="lineCov"> 1865 : size_t p = fullname.find("::");</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& facet = obtainFacet("legacy");</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& 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& 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("Facet");</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 3906 : DebDBParser::Record::const_iterator ti = record.find("Tag");</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& facet = obtainFacet(fi->second);</span> -<span class="lineNum"> 127 </span> : //fprintf(stderr, "Read facet@%d %.*s\n", parser.lineNumber(), PFSTR(facet.name)); -<span class="lineNum"> 128 </span><span class="lineCov"> 88 : assert(facet.name == fi->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->first != "Facet")</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 240 : facet[i->first] = i->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& tag = obtainTag(ti->second);</span> -<span class="lineNum"> 140 </span> : //fprintf(stderr, "Read tag@%d %.*s\n", parser.lineNumber(), PFSTR(tag.name)); -<span class="lineNum"> 141 </span> : //assert(tag.name == ti->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->first != "Tag")</span> -<span class="lineNum"> 147 </span><span class="lineCov"> 2066 : tag[i->first] = i->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, "%s:%d: Skipping record without Tag or Facet field\n", -<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& fullname) const</span> -<span class="lineNum"> 158 </span> : { -<span class="lineNum"> 159 </span><span class="lineNoCov"> 0 : size_t p = fullname.find("::");</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 = "legacy";</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<std::string, FacetData>::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->second.tags.find(tagName) != i->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& fullname) const</span> -<span class="lineNum"> 178 </span> : { -<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : size_t p = fullname.find("::");</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 = "legacy";</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<std::string, FacetData>::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<std::string, TagData>::const_iterator j = i->second.tags.find(tagName);</span> -<span class="lineNum"> 195 </span><span class="lineNoCov"> 0 : if (j == i->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->second.id;</span> -<span class="lineNum"> 198 </span> : } -<span class="lineNum"> 199 </span> : -<span class="lineNum"> 200 </span><span class="lineCov"> 1 : std::set<std::string> VocabularyMerger::tagNames() const</span> -<span class="lineNum"> 201 </span> : { -<span class="lineNum"> 202 </span><span class="lineCov"> 1 : set<string> res;</span> -<span class="lineNum"> 203 </span><span class="lineCov"> 30 : for (std::map<std::string, FacetData>::const_iterator f = facets.begin(); f != facets.end(); f++)</span> -<span class="lineNum"> 204 </span><span class="lineCov"> 649 : for (std::map<std::string, TagData>::const_iterator t = f->second.tags.begin();</span> -<span class="lineNum"> 205 </span> : t != f->second.tags.end(); t++) -<span class="lineNum"> 206 </span><span class="lineCov"> 620 : res.insert(f->first + "::" + t->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& fname)</span> -<span class="lineNum"> 211 </span> : { -<span class="lineNum"> 212 </span><span class="lineCov"> 4 : FILE* out = fopen(fname.c_str(), "wt");</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, "cept_debtags_vocabularymerger:reating file ");</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, "Write\n"); -<span class="lineNum"> 226 </span><span class="lineCov"> 37 : for (std::map<std::string, FacetData>::iterator f = facets.begin(); f != facets.end(); f++)</span> -<span class="lineNum"> 227 </span> : { -<span class="lineNum"> 228 </span><span class="lineCov"> 33 : f->second.id = facetid++;</span> -<span class="lineNum"> 229 </span> : //fprintf(stderr, "Writing facet %.*s\n", PFSTR(f->first)); -<span class="lineNum"> 230 </span><span class="lineCov"> 33 : f->second.ofs = ftell(out) - start_ofs;</span> -<span class="lineNum"> 231 </span><span class="lineCov"> 33 : writeDebStyleField(out, "Facet", f->first);</span> -<span class="lineNum"> 232 </span><span class="lineCov"> 115 : for (std::map<std::string, std::string>::const_iterator j = f->second.begin();</span> -<span class="lineNum"> 233 </span> : j != f->second.end(); j++) -<span class="lineNum"> 234 </span><span class="lineCov"> 82 : writeDebStyleField(out, j->first, j->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->second.len = ftell(out) - f->second.ofs;</span> -<span class="lineNum"> 237 </span> : -<span class="lineNum"> 238 </span><span class="lineCov"> 658 : for (std::map<std::string, TagData>::iterator t = f->second.tags.begin();</span> -<span class="lineNum"> 239 </span> : t != f->second.tags.end(); t++) -<span class="lineNum"> 240 </span> : { -<span class="lineNum"> 241 </span><span class="lineCov"> 625 : t->second.id = tagid++;</span> -<span class="lineNum"> 242 </span> : //fprintf(stderr, "Writing tag %.*s\n", PFSTR(t->first)); -<span class="lineNum"> 243 </span><span class="lineCov"> 625 : t->second.ofs = ftell(out) - start_ofs;</span> -<span class="lineNum"> 244 </span><span class="lineCov"> 625 : writeDebStyleField(out, "Tag", f->first + "::" + t->first);</span> -<span class="lineNum"> 245 </span><span class="lineCov"> 1317 : for (std::map<std::string, std::string>::const_iterator j = t->second.begin();</span> -<span class="lineNum"> 246 </span> : j != t->second.end(); j++) -<span class="lineNum"> 247 </span><span class="lineCov"> 692 : writeDebStyleField(out, j->first, j->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->second.len = ftell(out) - t->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<std::string, FacetData>::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->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<std::string, FacetData>::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->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->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->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->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->second.tags.begin()->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->second.tags.rbegin()->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->first.c_str(), f->first.size() + 1);</span> -<span class="lineNum"> 316 </span><span class="lineCov"> 33 : pos += f->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<std::string, FacetData>::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<std::string, TagData>::const_iterator t = f->second.tags.begin();</span> -<span class="lineNum"> 332 </span> : t != f->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->first.size() + t->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<std::string, FacetData>::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<std::string, TagData>::const_iterator t = f->second.tags.begin();</span> -<span class="lineNum"> 355 </span> : t != f->second.tags.end(); t++) -<span class="lineNum"> 356 </span> : { -<span class="lineNum"> 357 </span><span class="lineCov"> 625 : ((int*)buf)[t->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->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->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->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->first + "::" + t->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 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 lines:</td> - <td class="headerValue" width="20%">13</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <enrico@debian.org> -<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 <tagcoll/diskindex/mmap.h> -<span class="lineNum"> 22 </span> : #include <tagcoll/input/base.h> -<span class="lineNum"> 23 </span> : #include <string> -<span class="lineNum"> 24 </span> : #include <map> -<span class="lineNum"> 25 </span> : #include <set> -<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& vm; -<span class="lineNum"> 40 </span> : public: -<span class="lineNum"> 41 </span><span class="lineCov"> 7 : FacetIndexer(VocabularyMerger& 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& vm; -<span class="lineNum"> 50 </span> : public: -<span class="lineNum"> 51 </span><span class="lineCov"> 7 : TagIndexer(VocabularyMerger& 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<std::string, std::string> -<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<std::string, std::string> -<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<std::string, TagData> 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& obtainTag(const std::string& fullname); -<span class="lineNum"> 80 </span> : }; -<span class="lineNum"> 81 </span> : std::map<std::string, FacetData> 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& obtainFacet(const std::string& name); -<span class="lineNum"> 87 </span> : TagData& obtainTag(const std::string& 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& 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& 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& 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& 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& 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& 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& 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<std::string> 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 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 lines:</td> - <td class="headerValue" width="20%">52</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">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 <enrico@debian.org> -<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 <wibble/test.h> -<span class="lineNum"> 22 </span> : #include <ept/debtags/maint/vocabularymerger.h> -<span class="lineNum"> 23 </span> : #include <tagcoll/input/string.h> -<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> : "Facet: taste\n" -<span class="lineNum"> 40 </span> : "Description: Taste\n\n" -<span class="lineNum"> 41 </span> : "Tag: taste::sweet\n" -<span class="lineNum"> 42 </span> : "Description: Sweet\n\n" -<span class="lineNum"> 43 </span> : "Tag: taste::salty\n" -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : "Description: Salty\n\n";</span> -<span class="lineNum"> 45 </span> : string voc2 = -<span class="lineNum"> 46 </span> : "Facet: smell\n" -<span class="lineNum"> 47 </span> : "Description: Smell\n\n" -<span class="lineNum"> 48 </span> : "Tag: smell::fresh\n" -<span class="lineNum"> 49 </span> : "Description: Fresh\n\n" -<span class="lineNum"> 50 </span> : "Tag: smell::mold\n" -<span class="lineNum"> 51 </span><span class="lineCov"> 2 : "Description: Mold\n\n";</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("/dev/null");</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)), "smell");</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert_eq(string(indexref(facetIndex, 1) + 4*sizeof(int)), "taste");</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)), "smell::fresh");</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 1) + 3*sizeof(int)), "smell::mold");</span> -<span class="lineNum"> 85 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 2) + 3*sizeof(int)), "taste::salty");</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert_eq(string(indexref(tagIndex, 3) + 3*sizeof(int)), "taste::sweet");</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> : "Tag: foo::bar\n" -<span class="lineNum"> 100 </span> : "Description: Tag without facet\n" -<span class="lineNum"> 101 </span><span class="lineCov"> 1 : " VocabularyMerged should behave fine in this case.\n\n";</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("/dev/null");</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> : "Facet: empty\n" -<span class="lineNum"> 124 </span> : "Description: Facet without tags\n" -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : " VocabularyMerged used to segfault in this case.\n\n";</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("/dev/null");</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> |