diff options
Diffstat (limited to 'rep/ept/debtags')
31 files changed, 0 insertions, 8081 deletions
diff --git a/rep/ept/debtags/debtags.cc.gcov.html b/rep/ept/debtags/debtags.cc.gcov.html deleted file mode 100644 index a924a43..0000000 --- a/rep/ept/debtags/debtags.cc.gcov.html +++ /dev/null @@ -1,317 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/debtags.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">81</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">48.1 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">39</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** -*- C++ -*- -<span class="lineNum"> 2 </span> : * @file -<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) <enrico@enricozini.org> -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * System tag database -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2008 Enrico Zini <enrico@debian.org> -<span class="lineNum"> 10 </span> : * -<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 15 </span> : * -<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 19 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 20 </span> : * -<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 24 </span> : */ -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 27 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 28 </span> : #include <ept/debtags/maint/serializer.h> -<span class="lineNum"> 29 </span> : #include <ept/debtags/maint/debtagsindexer.h> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <tagcoll/input/stdio.h> -<span class="lineNum"> 32 </span> : #include <tagcoll/TextFormat.h> -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 35 </span> : #include <wibble/string.h> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : #include <iostream> -<span class="lineNum"> 38 </span> : #include <sstream> -<span class="lineNum"> 39 </span> : -<span class="lineNum"> 40 </span> : #include <sys/wait.h> // WIFEXITED WEXITSTATUS -<span class="lineNum"> 41 </span> : #include <sys/types.h> // getpwuid, stat, mkdir, getuid -<span class="lineNum"> 42 </span> : #include <sys/stat.h> // stat, mkdir -<span class="lineNum"> 43 </span> : #include <pwd.h> // getpwuid -<span class="lineNum"> 44 </span> : #include <unistd.h> // stat, getuid -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span> : using namespace std; -<span class="lineNum"> 48 </span> : using namespace tagcoll; -<span class="lineNum"> 49 </span> : using namespace wibble; -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : namespace ept { -<span class="lineNum"> 52 </span> : namespace debtags { -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span><span class="lineCov"> 10 : Debtags::Debtags(bool editable)</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 10 : : m_coll(m_rocoll)</span> -<span class="lineNum"> 56 </span> : { -<span class="lineNum"> 57 </span><span class="lineCov"> 10 : std::string tagfname;</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 10 : std::string idxfname;</span> -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span><span class="lineCov"> 10 : if (!DebtagsIndexer::obtainWorkingDebtags(vocabulary(), tagfname, idxfname))</span> -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : m_timestamp = 0;</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : return;</span> -<span class="lineNum"> 64 </span> : } else { -<span class="lineNum"> 65 </span><span class="lineCov"> 9 : m_timestamp = Path::timestamp(idxfname);</span> -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineCov"> 9 : mastermmap.init(idxfname);</span> -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span> : // Initialize the readonly index -<span class="lineNum"> 70 </span><span class="lineCov"> 9 : m_pkgid.init(mastermmap, 0);</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 9 : m_rocoll.init(mastermmap, 1, 2);</span> -<span class="lineNum"> 72 </span> : } -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : // Initialize the patch collection layer -<span class="lineNum"> 75 </span><span class="lineCov"> 9 : rcdir = Path::debtagsUserSourceDir();</span> -<span class="lineNum"> 76 </span> : -<span class="lineNum"> 77 </span><span class="lineCov"> 9 : string patchFile = str::joinpath(rcdir, "patch");</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 18 : if (Path::access(patchFile, F_OK) == 0)</span> -<span class="lineNum"> 79 </span> : { -<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : input::Stdio in(patchFile);</span> -<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : PatchList<int, int> patch;</span> -<span class="lineNum"> 82 </span><span class="lineNoCov"> 0 : textformat::parsePatch(in, patchStringToInt(m_pkgid, vocabulary(), inserter(patch)));</span> -<span class="lineNum"> 83 </span><span class="lineNoCov"> 0 : m_coll.setChanges(patch);</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 86 </span> : -<span class="lineNum"> 87 </span><span class="lineCov"> 3 : tagcoll::PatchList<std::string, Tag> Debtags::changes() const</span> -<span class="lineNum"> 88 </span> : { -<span class="lineNum"> 89 </span><span class="lineCov"> 3 : tagcoll::PatchList<int, int> patches = m_coll.changes();</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 3 : tagcoll::PatchList<std::string, Tag> res;</span> -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span><span class="lineCov"> 5 : for (tagcoll::PatchList<int, int>::const_iterator i = patches.begin();</span> -<span class="lineNum"> 93 </span> : i != patches.end(); ++i) -<span class="lineNum"> 94 </span> : { -<span class="lineNum"> 95 </span><span class="lineCov"> 2 : std::string pkg = packageByID(i->second.item);</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 2 : if (pkg.empty())</span> -<span class="lineNum"> 97 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 98 </span> : -<span class="lineNum"> 99 </span> : res.addPatch(tagcoll::Patch<std::string, Tag>(pkg, -<span class="lineNum"> 100 </span> : vocabulary().tagsByID(i->second.added), -<span class="lineNum"> 101 </span><span class="lineCov"> 2 : vocabulary().tagsByID(i->second.removed)));</span> -<span class="lineNum"> 102 </span> : } -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span><span class="lineCov"> 3 : return res;</span> -<span class="lineNum"> 105 </span> : } -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : -<span class="lineNum"> 108 </span> : #if 0 -<span class="lineNum"> 109 </span> : bool Debtags::hasTagDatabase() -<span class="lineNum"> 110 </span> : { -<span class="lineNum"> 111 </span> : if (Path::access(Path::tagdb(), R_OK) == -1) -<span class="lineNum"> 112 </span> : { -<span class="lineNum"> 113 </span> : std::cerr << "Missing tag database " << Path::tagdb() << std::endl; -<span class="lineNum"> 114 </span> : return false; -<span class="lineNum"> 115 </span> : } -<span class="lineNum"> 116 </span> : if (Path::access(Path::tagdbIndex(), R_OK) == -1) -<span class="lineNum"> 117 </span> : { -<span class="lineNum"> 118 </span> : std::cerr << "Missing tag database index " << Path::tagdbIndex() << std::endl; -<span class="lineNum"> 119 </span> : return false; -<span class="lineNum"> 120 </span> : } -<span class="lineNum"> 121 </span> : if (Path::access(Path::vocabulary(), R_OK) == -1) -<span class="lineNum"> 122 </span> : { -<span class="lineNum"> 123 </span> : std::cerr << "Missing tag vocabulary " << Path::vocabulary() << std::endl; -<span class="lineNum"> 124 </span> : return false; -<span class="lineNum"> 125 </span> : } -<span class="lineNum"> 126 </span> : if (Path::access(Path::vocabularyIndex(), R_OK) == -1) -<span class="lineNum"> 127 </span> : { -<span class="lineNum"> 128 </span> : std::cerr << "Missing index for tag vocabulary " << Path::vocabularyIndex() << std::endl; -<span class="lineNum"> 129 </span> : return false; -<span class="lineNum"> 130 </span> : } -<span class="lineNum"> 131 </span> : return true; -<span class="lineNum"> 132 </span> : } -<span class="lineNum"> 133 </span> : #endif -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span><span class="lineCov"> 1 : void Debtags::savePatch()</span> -<span class="lineNum"> 137 </span> : { -<span class="lineNum"> 138 </span><span class="lineCov"> 1 : PatchList<std::string, std::string> spatch;</span> -<span class="lineNum"> 139 </span><span class="lineCov"> 1 : m_coll.changes().output(patchIntToString(m_pkgid, vocabulary(), tagcoll::inserter(spatch)));</span> -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : savePatch(spatch);</span> -<span class="lineNum"> 141 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 142 </span> : -<span class="lineNum"> 143 </span><span class="lineCov"> 1 : void Debtags::savePatch(const PatchList<std::string, std::string>& patch)</span> -<span class="lineNum"> 144 </span> : { -<span class="lineNum"> 145 </span><span class="lineCov"> 1 : std::string patchFile = str::joinpath(rcdir, "patch");</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 1 : std::string backup = patchFile + "~";</span> -<span class="lineNum"> 147 </span> : -<span class="lineNum"> 148 </span><span class="lineCov"> 1 : wibble::sys::fs::mkFilePath(patchFile);</span> -<span class="lineNum"> 149 </span> : -<span class="lineNum"> 150 </span><span class="lineCov"> 1 : if (access(patchFile.c_str(), F_OK) == 0)</span> -<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : if (rename(patchFile.c_str(), backup.c_str()) == -1)</span> -<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : throw wibble::exception::System("Can't rename " + patchFile + " to " + backup);</span> -<span class="lineNum"> 153 </span> : -<span class="lineNum"> 154 </span> : try { -<span class="lineNum"> 155 </span><span class="lineCov"> 1 : FILE* out = fopen(patchFile.c_str(), "w");</span> -<span class="lineNum"> 156 </span><span class="lineCov"> 1 : if (out == 0)</span> -<span class="lineNum"> 157 </span><span class="lineNoCov"> 0 : throw wibble::exception::System("Can't write to " + patchFile);</span> -<span class="lineNum"> 158 </span> : -<span class="lineNum"> 159 </span><span class="lineCov"> 1 : textformat::outputPatch(patch, out);</span> -<span class="lineNum"> 160 </span> : -<span class="lineNum"> 161 </span><span class="lineCov"> 1 : fclose(out);</span> -<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : } catch (std::exception& e) {</span> -<span class="lineNum"> 163 </span><span class="lineNoCov"> 0 : if (rename(backup.c_str(), patchFile.c_str()) == -1)</span> -<span class="lineNum"> 164 </span><span class="lineNoCov"> 0 : std::cerr << "Warning: Cannot restore previous backup copy: " << e.what() << std::endl;</span> -<span class="lineNum"> 165 </span><span class="lineNoCov"> 0 : throw;</span> -<span class="lineNum"> 166 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 168 </span> : -<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : void Debtags::savePatch(const PatchList<std::string, Tag>& patch)</span> -<span class="lineNum"> 170 </span> : { -<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : PatchList<std::string, std::string> spatch;</span> -<span class="lineNum"> 172 </span> : // patch.output(patchToString<C>(m_pkgs, m_pkgidx, m_tags, tagcoll::inserter(spatch))); -<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : savePatch(spatch);</span> -<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 175 </span> : -<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch()</span> -<span class="lineNum"> 177 </span> : { -<span class="lineNum"> 178 </span><span class="lineNoCov"> 0 : PatchList<std::string, std::string> spatch;</span> -<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : m_coll.changes().output(patchIntToString(m_pkgid, vocabulary(), tagcoll::inserter(spatch)));</span> -<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : if (!spatch.empty())</span> -<span class="lineNum"> 181 </span> : { -<span class="lineNum"> 182 </span><span class="lineNoCov"> 0 : sendPatch(spatch);</span> -<span class="lineNum"> 183 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 184 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 185 </span> : -<span class="lineNum"> 186 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch(const PatchList<std::string, Tag>& patch)</span> -<span class="lineNum"> 187 </span> : { -<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : PatchList<std::string, std::string> spatch;</span> -<span class="lineNum"> 189 </span> : // patch.output(patchToString<C>(m_pkgs, m_pkgidx, m_tags, tagcoll::inserter(spatch))); -<span class="lineNum"> 190 </span><span class="lineNoCov"> 0 : sendPatch(spatch);</span> -<span class="lineNum"> 191 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 192 </span> : -<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : void Debtags::sendPatch(const PatchList<std::string, std::string>& patch)</span> -<span class="lineNum"> 194 </span> : { -<span class="lineNum"> 195 </span> : static const char* cmd = "/usr/sbin/sendmail -t"; -<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : FILE* out = popen(cmd, "w");</span> -<span class="lineNum"> 197 </span><span class="lineNoCov"> 0 : if (out == 0)</span> -<span class="lineNum"> 198 </span><span class="lineNoCov"> 0 : throw wibble::exception::System(std::string("trying to run `") + cmd + "'");</span> -<span class="lineNum"> 199 </span> : -<span class="lineNum"> 200 </span><span class="lineNoCov"> 0 : struct passwd* udata = getpwuid(getuid());</span> -<span class="lineNum"> 201 </span> : -<span class="lineNum"> 202 </span> : fprintf(out, -<span class="lineNum"> 203 </span> : "To: enrico-debtags@debian.org\n" -<span class="lineNum"> 204 </span> : "Bcc: %s\n" -<span class="lineNum"> 205 </span> : "Subject: Tag patch\n" -<span class="lineNum"> 206 </span> : "Mime-Version: 1.0\n" -<span class="lineNum"> 207 </span> : "Content-Type: multipart/mixed; boundary=\"9amGYk9869ThD9tj\"\n" -<span class="lineNum"> 208 </span> : "Content-Disposition: inline\n" -<span class="lineNum"> 209 </span> : "X-Mailer: debtags-edit\n\n" -<span class="lineNum"> 210 </span> : "This mail contains a Debtags patch for the central archive\n\n" -<span class="lineNum"> 211 </span> : "--9amGYk9869ThD9tj\n" -<span class="lineNum"> 212 </span> : "Content-Type: text/plain; charset=utf-8\n" -<span class="lineNum"> 213 </span> : "Content-Disposition: inline\n\n" -<span class="lineNum"> 214 </span><span class="lineNoCov"> 0 : "-- DEBTAGS DIFF V0.1 --\n", udata->pw_name);</span> -<span class="lineNum"> 215 </span> : -<span class="lineNum"> 216 </span><span class="lineNoCov"> 0 : textformat::outputPatch(patch, out);</span> -<span class="lineNum"> 217 </span> : -<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : fprintf(out, "\n--9amGYk9869ThD9tj\n");</span> -<span class="lineNum"> 219 </span> : -<span class="lineNum"> 220 </span><span class="lineNoCov"> 0 : int res = pclose(out);</span> -<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : if (!WIFEXITED(res) || WEXITSTATUS(res) != 0)</span> -<span class="lineNum"> 222 </span> : { -<span class="lineNum"> 223 </span><span class="lineNoCov"> 0 : std::stringstream str;</span> -<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : str << res;</span> -<span class="lineNum"> 225 </span><span class="lineNoCov"> 0 : throw wibble::exception::Consistency("checking mailer exit status", "sendmail returned nonzero (" + str.str() + "): the mail may have not been sent");</span> -<span class="lineNum"> 226 </span> : } -<span class="lineNum"> 227 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 228 </span> : -<span class="lineNum"> 229 </span> : -<span class="lineNum"> 230 </span> : template<typename OUT> -<span class="lineNum"> 231 </span> : void Debtags::outputSystem(const OUT& cons) -<span class="lineNum"> 232 </span> : { -<span class="lineNum"> 233 </span> : m_rocoll.output(intToPkg(m_pkgid, vocabulary(), cons)); -<span class="lineNum"> 234 </span> : } -<span class="lineNum"> 235 </span> : -<span class="lineNum"> 236 </span> : template<typename OUT> -<span class="lineNum"> 237 </span> : void Debtags::outputPatched(const OUT& cons) -<span class="lineNum"> 238 </span> : { -<span class="lineNum"> 239 </span> : m_coll.output(intToPkg(m_pkgid, vocabulary(), cons)); -<span class="lineNum"> 240 </span> : } -<span class="lineNum"> 241 </span> : -<span class="lineNum"> 242 </span> : } -<span class="lineNum"> 243 </span> : } -<span class="lineNum"> 244 </span> : -<span class="lineNum"> 245 </span> : #include <tagcoll/patch.tcc> -<span class="lineNum"> 246 </span> : #include <tagcoll/coll/patched.tcc> -<span class="lineNum"> 247 </span> : #include <tagcoll/TextFormat.tcc> -<span class="lineNum"> 248 </span> : //#include <tagcoll/stream/filters.tcc> -<span class="lineNum"> 249 </span> : -<span class="lineNum"> 250 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/debtags.h.gcov.html b/rep/ept/debtags/debtags.h.gcov.html deleted file mode 100644 index a115a32..0000000 --- a/rep/ept/debtags/debtags.h.gcov.html +++ /dev/null @@ -1,484 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/debtags.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">72</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">93.1 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">67</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /* @file -<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) <enrico@enricozini.org> -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * libpkg Debtags data provider -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2007 Enrico Zini <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> : #ifndef EPT_DEBTAGS_DEBTAGS_H -<span class="lineNum"> 27 </span> : #define EPT_DEBTAGS_DEBTAGS_H -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : #include <ept/debtags/tag.h> -<span class="lineNum"> 30 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 31 </span> : #include <ept/debtags/maint/pkgid.h> -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : #include <tagcoll/coll/base.h> -<span class="lineNum"> 34 </span> : #include <tagcoll/coll/intdiskindex.h> -<span class="lineNum"> 35 </span> : #include <tagcoll/coll/patched.h> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : namespace ept { -<span class="lineNum"> 38 </span> : namespace debtags { -<span class="lineNum"> 39 </span> : class Debtags; -<span class="lineNum"> 40 </span> : } -<span class="lineNum"> 41 </span> : } -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : namespace tagcoll { -<span class="lineNum"> 44 </span> : template< typename _, typename _1 > class PatchList; -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : namespace coll { -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : template<> -<span class="lineNum"> 49 </span> : struct coll_traits< ept::debtags::Debtags > -<span class="lineNum"> 50 </span> : { -<span class="lineNum"> 51 </span> : typedef std::string item_type; -<span class="lineNum"> 52 </span> : typedef ept::debtags::Tag tag_type; -<span class="lineNum"> 53 </span> : typedef std::set< ept::debtags::Tag > tagset_type; -<span class="lineNum"> 54 </span> : typedef std::set< std::string > itemset_type; -<span class="lineNum"> 55 </span> : }; -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span> : } -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span> : namespace ept { -<span class="lineNum"> 61 </span> : namespace debtags { -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : /** -<span class="lineNum"> 64 </span> : * Access the on-disk Debtags tag database. -<span class="lineNum"> 65 </span> : * -<span class="lineNum"> 66 </span> : * The database is normally found in /var/lib/debtags. -<span class="lineNum"> 67 </span> : * -<span class="lineNum"> 68 </span> : * Tags and Facets are returned as Tag and Facet objects. The objects follow -<span class="lineNum"> 69 </span> : * the flyweight pattern and access the data contained in the Vocabulary -<span class="lineNum"> 70 </span> : * instantiated inside Debtags. -<span class="lineNum"> 71 </span> : * -<span class="lineNum"> 72 </span> : * It is possible to get a reference to the Vocabulary object using the -<span class="lineNum"> 73 </span> : * vocabulary() method. -<span class="lineNum"> 74 </span> : */ -<span class="lineNum"> 75 </span> : class Debtags : public tagcoll::coll::Collection<Debtags> -<span class="lineNum"> 76 </span> : { -<span class="lineNum"> 77 </span> : protected: -<span class="lineNum"> 78 </span> : // Master mmap index container -<span class="lineNum"> 79 </span> : tagcoll::diskindex::MasterMMap mastermmap; -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : // Debtags database -<span class="lineNum"> 82 </span> : tagcoll::coll::IntDiskIndex m_rocoll; -<span class="lineNum"> 83 </span> : tagcoll::coll::Patched< tagcoll::coll::IntDiskIndex > m_coll; -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : // Package name to ID mapping -<span class="lineNum"> 86 </span> : PkgId m_pkgid; -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : // Tag vocabulary -<span class="lineNum"> 89 </span> : Vocabulary m_voc; -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span> : // User rc directory to store patches -<span class="lineNum"> 92 </span> : std::string rcdir; -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : // Last modification timestamp of the index -<span class="lineNum"> 95 </span> : time_t m_timestamp; -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span><span class="lineCov"> 84710 : std::string packageByID(int id) const</span> -<span class="lineNum"> 98 </span> : { -<span class="lineNum"> 99 </span><span class="lineCov"> 84710 : return m_pkgid.byID(id);</span> -<span class="lineNum"> 100 </span> : } -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span> : template<typename IDS> -<span class="lineNum"> 103 </span><span class="lineCov"> 2 : std::set<std::string> packagesById(const IDS& ids) const</span> -<span class="lineNum"> 104 </span> : { -<span class="lineNum"> 105 </span><span class="lineCov"> 2 : std::set<std::string> pkgs;</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 130 : for (typename IDS::const_iterator i = ids.begin();</span> -<span class="lineNum"> 107 </span> : i != ids.end(); ++i) -<span class="lineNum"> 108 </span><span class="lineCov"> 128 : pkgs.insert(packageByID(*i));</span> -<span class="lineNum"> 109 </span><span class="lineNoCov"> 0 : return pkgs;</span> -<span class="lineNum"> 110 </span> : } -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 8 : int idByPackage(const std::string& pkg) const</span> -<span class="lineNum"> 113 </span> : { -<span class="lineNum"> 114 </span><span class="lineCov"> 8 : return m_pkgid.byName(pkg);</span> -<span class="lineNum"> 115 </span> : } -<span class="lineNum"> 116 </span> : -<span class="lineNum"> 117 </span> : template<typename PKGS> -<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::set<int> idsByPackages(const PKGS& pkgs) const</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : std::set<int> ids;</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 2 : for (typename PKGS::const_iterator i = pkgs.begin();</span> -<span class="lineNum"> 122 </span> : i != pkgs.end(); ++i) -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : ids.insert(idByPackage(*i));</span> -<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : return ids;</span> -<span class="lineNum"> 125 </span> : } -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : public: -<span class="lineNum"> 128 </span> : typedef tagcoll::coll::Patched< tagcoll::coll::IntDiskIndex > coll_type; -<span class="lineNum"> 129 </span> : typedef std::pair< std::string, std::set<Tag> > value_type; -<span class="lineNum"> 130 </span> : -<span class="lineNum"> 131 </span> : class const_iterator -<span class="lineNum"> 132 </span> : { -<span class="lineNum"> 133 </span> : const Debtags& coll; -<span class="lineNum"> 134 </span> : Debtags::coll_type::const_iterator ci; -<span class="lineNum"> 135 </span> : mutable const Debtags::value_type* cached_val; -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span> : protected: -<span class="lineNum"> 138 </span> : const_iterator(const Debtags& coll, -<span class="lineNum"> 139 </span><span class="lineCov"> 63443 : const Debtags::coll_type::const_iterator& ci)</span> -<span class="lineNum"> 140 </span><span class="lineCov"> 63443 : : coll(coll), ci(ci), cached_val(0) {}</span> -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span> : public: -<span class="lineNum"> 143 </span><span class="lineCov"> 63443 : ~const_iterator()</span> -<span class="lineNum"> 144 </span> : { -<span class="lineNum"> 145 </span><span class="lineCov"> 63443 : if (cached_val)</span> -<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : delete cached_val;</span> -<span class="lineNum"> 147 </span><span class="lineCov"> 63443 : }</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 84580 : const Debtags::value_type operator*() const</span> -<span class="lineNum"> 149 </span> : { -<span class="lineNum"> 150 </span><span class="lineCov"> 84580 : if (cached_val)</span> -<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : return *cached_val;</span> -<span class="lineNum"> 152 </span> : -<span class="lineNum"> 153 </span><span class="lineCov"> 84580 : return make_pair(coll.packageByID(ci->first), coll.vocabulary().tagsByID(ci->second));</span> -<span class="lineNum"> 154 </span> : } -<span class="lineNum"> 155 </span><span class="lineCov"> 105725 : const Debtags::value_type* operator->() const</span> -<span class="lineNum"> 156 </span> : { -<span class="lineNum"> 157 </span><span class="lineCov"> 105725 : if (cached_val)</span> -<span class="lineNum"> 158 </span><span class="lineCov"> 42290 : return cached_val;</span> -<span class="lineNum"> 159 </span><span class="lineCov"> 63435 : return cached_val = new Debtags::value_type(*(*this));</span> -<span class="lineNum"> 160 </span> : } -<span class="lineNum"> 161 </span><span class="lineCov"> 63435 : const_iterator& operator++()</span> -<span class="lineNum"> 162 </span> : { -<span class="lineNum"> 163 </span><span class="lineCov"> 63435 : ++ci;</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 63435 : if (cached_val)</span> -<span class="lineNum"> 165 </span> : { -<span class="lineNum"> 166 </span><span class="lineCov"> 63435 : delete cached_val;</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 63435 : cached_val = 0;</span> -<span class="lineNum"> 168 </span> : } -<span class="lineNum"> 169 </span><span class="lineCov"> 63435 : return *this;</span> -<span class="lineNum"> 170 </span> : } -<span class="lineNum"> 171 </span><span class="lineCov"> 1 : bool operator==(const const_iterator& iter) const</span> -<span class="lineNum"> 172 </span> : { -<span class="lineNum"> 173 </span><span class="lineCov"> 1 : return ci == iter.ci;</span> -<span class="lineNum"> 174 </span> : } -<span class="lineNum"> 175 </span><span class="lineCov"> 63438 : bool operator!=(const const_iterator& iter) const</span> -<span class="lineNum"> 176 </span> : { -<span class="lineNum"> 177 </span><span class="lineCov"> 63438 : return ci != iter.ci;</span> -<span class="lineNum"> 178 </span> : } -<span class="lineNum"> 179 </span> : -<span class="lineNum"> 180 </span> : friend class Debtags; -<span class="lineNum"> 181 </span> : }; -<span class="lineNum"> 182 </span><span class="lineCov"> 4 : const_iterator begin() const { return const_iterator(*this, m_coll.begin()); }</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 63439 : const_iterator end() const { return const_iterator(*this, m_coll.end()); }</span> -<span class="lineNum"> 184 </span> : -<span class="lineNum"> 185 </span> : /** -<span class="lineNum"> 186 </span> : * Create a new accessor for the on-disk Debtags database -<span class="lineNum"> 187 </span> : * -<span class="lineNum"> 188 </span> : * \param editable -<span class="lineNum"> 189 </span> : * Specifies if recording of modifications should be enabled. If editable -<span class="lineNum"> 190 </span> : * is true, then the local state directory will be created when the object -<span class="lineNum"> 191 </span> : * is instantiated. -<span class="lineNum"> 192 </span> : */ -<span class="lineNum"> 193 </span> : Debtags(bool editable = false); -<span class="lineNum"> 194 </span><span class="lineCov"> 10 : ~Debtags() {}</span> -<span class="lineNum"> 195 </span> : -<span class="lineNum"> 196 </span> : /// Get the timestamp of when the index was last updated -<span class="lineNum"> 197 </span><span class="lineCov"> 1 : time_t timestamp() const { return m_timestamp; }</span> -<span class="lineNum"> 198 </span> : -<span class="lineNum"> 199 </span> : /// Return true if this data source has data, false if it's empty -<span class="lineNum"> 200 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span> -<span class="lineNum"> 201 </span> : -<span class="lineNum"> 202 </span> : coll_type& tagdb() { return m_coll; } -<span class="lineNum"> 203 </span> : const coll_type& tagdb() const { return m_coll; } -<span class="lineNum"> 204 </span> : tagcoll::PatchList<std::string, Tag> changes() const; -<span class="lineNum"> 205 </span> : -<span class="lineNum"> 206 </span> : #if 0 -<span class="lineNum"> 207 </span> : template<typename ITEMS, typename TAGS> -<span class="lineNum"> 208 </span> : void insert(const ITEMS& items, const TAGS& tags) -<span class="lineNum"> 209 </span> : { -<span class="lineNum"> 210 </span> : for (typename ITEMS::const_iterator i = items.begin(); -<span class="lineNum"> 211 </span> : i != items.end(); ++i) -<span class="lineNum"> 212 </span> : m_changes.addPatch(Patch(*i, tags, TagSet())); -<span class="lineNum"> 213 </span> : } -<span class="lineNum"> 214 </span> : -<span class="lineNum"> 215 </span> : template<typename ITEMS> -<span class="lineNum"> 216 </span> : void insert(const ITEMS& items, const wibble::Empty<Tag>& tags) -<span class="lineNum"> 217 </span> : { -<span class="lineNum"> 218 </span> : // Nothing to do in this case -<span class="lineNum"> 219 </span> : } -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span> : /** -<span class="lineNum"> 222 </span> : * Get the changes that have been applied to this collection -<span class="lineNum"> 223 </span> : */ -<span class="lineNum"> 224 </span> : const Patches& changes() const { return m_changes; } -<span class="lineNum"> 225 </span> : -<span class="lineNum"> 226 </span> : /** -<span class="lineNum"> 227 </span> : * Throw away all changes previously applied to this collection -<span class="lineNum"> 228 </span> : */ -<span class="lineNum"> 229 </span> : void resetChanges() { m_changes.clear(); } -<span class="lineNum"> 230 </span> : -<span class="lineNum"> 231 </span> : /** -<span class="lineNum"> 232 </span> : * Set the changes list to a specific patch list -<span class="lineNum"> 233 </span> : */ -<span class="lineNum"> 234 </span> : void setChanges(const Patches& changes); -<span class="lineNum"> 235 </span> : -<span class="lineNum"> 236 </span> : /** -<span class="lineNum"> 237 </span> : * Add a specific patch list to the changes list -<span class="lineNum"> 238 </span> : */ -<span class="lineNum"> 239 </span> : void addChanges(const Patches& changes); -<span class="lineNum"> 240 </span> : #endif -<span class="lineNum"> 241 </span> : -<span class="lineNum"> 242 </span> : bool hasTag(const Tag& tag) const { return m_coll.hasTag(tag.id()); } -<span class="lineNum"> 243 </span> : -<span class="lineNum"> 244 </span><span class="lineCov"> 5 : std::set<Tag> getTagsOfItem(const std::string& item) const</span> -<span class="lineNum"> 245 </span> : { -<span class="lineNum"> 246 </span><span class="lineCov"> 5 : int id = idByPackage(item);</span> -<span class="lineNum"> 247 </span><span class="lineCov"> 5 : if (id == -1) return std::set<Tag>();</span> -<span class="lineNum"> 248 </span><span class="lineCov"> 4 : return vocabulary().tagsByID(m_coll.getTagsOfItem(id));</span> -<span class="lineNum"> 249 </span> : } -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span> : template<typename ITEMS> -<span class="lineNum"> 252 </span><span class="lineCov"> 1 : std::set<Tag> getTagsOfItems(const ITEMS& items) const</span> -<span class="lineNum"> 253 </span> : { -<span class="lineNum"> 254 </span><span class="lineCov"> 1 : return vocabulary().tagsByID(m_coll.getTagsOfItems(idsByPackages(items)));</span> -<span class="lineNum"> 255 </span> : } -<span class="lineNum"> 256 </span> : -<span class="lineNum"> 257 </span> : std::set<std::string> getItemsHavingTag(const Tag& tag) const -<span class="lineNum"> 258 </span> : { -<span class="lineNum"> 259 </span> : return packagesById(m_coll.getItemsHavingTag(tag.id())); -<span class="lineNum"> 260 </span> : } -<span class="lineNum"> 261 </span> : template<typename TAGS> -<span class="lineNum"> 262 </span><span class="lineCov"> 2 : std::set<std::string> getItemsHavingTags(const TAGS& tags) const</span> -<span class="lineNum"> 263 </span> : { -<span class="lineNum"> 264 </span><span class="lineCov"> 2 : std::set<int> itags;</span> -<span class="lineNum"> 265 </span><span class="lineCov"> 11 : for (typename TAGS::const_iterator i = tags.begin();</span> -<span class="lineNum"> 266 </span> : i != tags.end(); ++i) -<span class="lineNum"> 267 </span><span class="lineCov"> 9 : itags.insert(i->id());</span> -<span class="lineNum"> 268 </span><span class="lineCov"> 2 : return packagesById(m_coll.getItemsHavingTags(itags));</span> -<span class="lineNum"> 269 </span> : } -<span class="lineNum"> 270 </span> : -<span class="lineNum"> 271 </span> : #if 0 -<span class="lineNum"> 272 </span> : ItemSet getTaggedItems() const; -<span class="lineNum"> 273 </span> : #endif -<span class="lineNum"> 274 </span><span class="lineCov"> 1 : std::set<Tag> getAllTags() const</span> -<span class="lineNum"> 275 </span> : { -<span class="lineNum"> 276 </span><span class="lineCov"> 1 : return vocabulary().tagsByID(m_coll.getAllTags());</span> -<span class="lineNum"> 277 </span> : } -<span class="lineNum"> 278 </span> : -<span class="lineNum"> 279 </span> : /// Access the vocabulary in use -<span class="lineNum"> 280 </span><span class="lineCov"> 27 : Vocabulary& vocabulary() { return m_voc; }</span> -<span class="lineNum"> 281 </span> : /// Access the vocabulary in use -<span class="lineNum"> 282 </span><span class="lineCov"> 84590 : const Vocabulary& vocabulary() const { return m_voc; }</span> -<span class="lineNum"> 283 </span> : -<span class="lineNum"> 284 </span> : /** -<span class="lineNum"> 285 </span> : * Access the PkgId in use. -<span class="lineNum"> 286 </span> : * -<span class="lineNum"> 287 </span> : * \note Future implementations may not rely on a PkgId -<span class="lineNum"> 288 </span> : */ -<span class="lineNum"> 289 </span><span class="lineCov"> 4 : PkgId& pkgid() { return m_pkgid; }</span> -<span class="lineNum"> 290 </span> : /** -<span class="lineNum"> 291 </span> : * Access the PkgId in use. -<span class="lineNum"> 292 </span> : * -<span class="lineNum"> 293 </span> : * \note Future implementations may not rely on a PkgId -<span class="lineNum"> 294 </span> : */ -<span class="lineNum"> 295 </span> : const PkgId& pkgid() const { return m_pkgid; } -<span class="lineNum"> 296 </span> : -<span class="lineNum"> 297 </span> : int getCardinality(const Tag& tag) const -<span class="lineNum"> 298 </span> : { -<span class="lineNum"> 299 </span> : return m_coll.getCardinality(tag.id()); -<span class="lineNum"> 300 </span> : } -<span class="lineNum"> 301 </span> : -<span class="lineNum"> 302 </span><span class="lineCov"> 2 : void applyChange(const tagcoll::PatchList<std::string, Tag>& change)</span> -<span class="lineNum"> 303 </span> : { -<span class="lineNum"> 304 </span> : using namespace tagcoll; -<span class="lineNum"> 305 </span><span class="lineCov"> 2 : PatchList<int, int> intp;</span> -<span class="lineNum"> 306 </span><span class="lineCov"> 4 : for (PatchList<std::string, Tag>::const_iterator i = change.begin();</span> -<span class="lineNum"> 307 </span> : i != change.end(); ++i) -<span class="lineNum"> 308 </span> : { -<span class="lineNum"> 309 </span><span class="lineCov"> 2 : Patch<int, int> p(idByPackage(i->first));</span> -<span class="lineNum"> 310 </span><span class="lineCov"> 4 : for (std::set<Tag>::const_iterator j = i->second.added.begin();</span> -<span class="lineNum"> 311 </span> : j != i->second.added.end(); ++j) -<span class="lineNum"> 312 </span><span class="lineCov"> 2 : p.add(j->id());</span> -<span class="lineNum"> 313 </span><span class="lineCov"> 2 : for (std::set<Tag>::const_iterator j = i->second.removed.begin();</span> -<span class="lineNum"> 314 </span> : j != i->second.removed.end(); ++j) -<span class="lineNum"> 315 </span><span class="lineNoCov"> 0 : p.remove(j->id());</span> -<span class="lineNum"> 316 </span><span class="lineCov"> 2 : intp.addPatch(p);</span> -<span class="lineNum"> 317 </span> : } -<span class="lineNum"> 318 </span><span class="lineCov"> 2 : m_coll.applyChange(intp);</span> -<span class="lineNum"> 319 </span><span class="lineCov"> 2 : }</span> -<span class="lineNum"> 320 </span> : -<span class="lineNum"> 321 </span> : #if 0 -<span class="lineNum"> 322 </span> : template<typename OUT> -<span class="lineNum"> 323 </span> : void output(OUT out) const -<span class="lineNum"> 324 </span> : { -<span class="lineNum"> 325 </span> : for (const_iterator i = begin(); i != end(); ++i) -<span class="lineNum"> 326 </span> : { -<span class="lineNum"> 327 </span> : *out = *i; -<span class="lineNum"> 328 </span> : ++out; -<span class="lineNum"> 329 </span> : } -<span class="lineNum"> 330 </span> : } -<span class="lineNum"> 331 </span> : #endif -<span class="lineNum"> 332 </span> : -<span class="lineNum"> 333 </span> : -<span class="lineNum"> 334 </span> : -<span class="lineNum"> 335 </span> : /** -<span class="lineNum"> 336 </span> : * Check if the tag database has been created (i.e. if something -<span class="lineNum"> 337 </span> : * equivalend to debtags update has been run) -<span class="lineNum"> 338 </span> : */ -<span class="lineNum"> 339 </span> : //static bool hasTagDatabase(); -<span class="lineNum"> 340 </span> : -<span class="lineNum"> 341 </span> : -<span class="lineNum"> 342 </span> : /** -<span class="lineNum"> 343 </span> : * Save in the state storage directory a patch that can be used to turn -<span class="lineNum"> 344 </span> : * the system database into the collection given -<span class="lineNum"> 345 </span> : */ -<span class="lineNum"> 346 </span> : void savePatch(); -<span class="lineNum"> 347 </span> : -<span class="lineNum"> 348 </span> : /** -<span class="lineNum"> 349 </span> : * Save in the state storage directory a patch to turn the system database -<span class="lineNum"> 350 </span> : * into the collection given -<span class="lineNum"> 351 </span> : */ -<span class="lineNum"> 352 </span> : void savePatch(const tagcoll::PatchList<std::string, std::string>& patch); -<span class="lineNum"> 353 </span> : -<span class="lineNum"> 354 </span> : /** -<span class="lineNum"> 355 </span> : * Save in the state storage directory a patch to turn the system database -<span class="lineNum"> 356 </span> : * into the collection given -<span class="lineNum"> 357 </span> : */ -<span class="lineNum"> 358 </span> : void savePatch(const tagcoll::PatchList<std::string, Tag>& patch); -<span class="lineNum"> 359 </span> : -<span class="lineNum"> 360 </span> : /** -<span class="lineNum"> 361 </span> : * Send to the central archive a patch that can be used to turn -<span class="lineNum"> 362 </span> : * the system database into the collection given -<span class="lineNum"> 363 </span> : */ -<span class="lineNum"> 364 </span> : void sendPatch(); -<span class="lineNum"> 365 </span> : -<span class="lineNum"> 366 </span> : /** -<span class="lineNum"> 367 </span> : * Send the given patch to the central archive -<span class="lineNum"> 368 </span> : */ -<span class="lineNum"> 369 </span> : void sendPatch(const tagcoll::PatchList<std::string, std::string>& patch); -<span class="lineNum"> 370 </span> : -<span class="lineNum"> 371 </span> : /** -<span class="lineNum"> 372 </span> : * Send the given patch to the central archive -<span class="lineNum"> 373 </span> : */ -<span class="lineNum"> 374 </span> : void sendPatch(const tagcoll::PatchList<std::string, Tag>& patch); -<span class="lineNum"> 375 </span> : -<span class="lineNum"> 376 </span> : -<span class="lineNum"> 377 </span> : /** -<span class="lineNum"> 378 </span> : * Output the current Debian tags database to a consumer of <std::string, Tag> -<span class="lineNum"> 379 </span> : * -<span class="lineNum"> 380 </span> : * \note The collection is sent to 'cons' without merging repeated items -<span class="lineNum"> 381 </span> : */ -<span class="lineNum"> 382 </span> : template<typename OUT> -<span class="lineNum"> 383 </span><span class="lineCov"> 2 : void outputSystem(const OUT& cons);</span> -<span class="lineNum"> 384 </span> : -<span class="lineNum"> 385 </span> : /** -<span class="lineNum"> 386 </span> : * Output the given tag file to a consumer of <std::string, Tag> -<span class="lineNum"> 387 </span> : * -<span class="lineNum"> 388 </span> : * \note The collection is sent to 'cons' without merging repeated items -<span class="lineNum"> 389 </span> : */ -<span class="lineNum"> 390 </span> : template<typename OUT> -<span class="lineNum"> 391 </span> : void outputSystem(const std::string& filename, const OUT& out); -<span class="lineNum"> 392 </span> : -<span class="lineNum"> 393 </span> : /** -<span class="lineNum"> 394 </span> : * Output the current Debian tags database, patched with local patch, -<span class="lineNum"> 395 </span> : * to a Consumer of <std::string, Tag> -<span class="lineNum"> 396 </span> : * -<span class="lineNum"> 397 </span> : * \note The collection is sent to 'cons' without merging repeated items -<span class="lineNum"> 398 </span> : */ -<span class="lineNum"> 399 </span> : template<typename OUT> -<span class="lineNum"> 400 </span><span class="lineCov"> 2 : void outputPatched(const OUT& cons);</span> -<span class="lineNum"> 401 </span> : -<span class="lineNum"> 402 </span> : /** -<span class="lineNum"> 403 </span> : * Output the given tag file, patched with local patch, -<span class="lineNum"> 404 </span> : * to a Consumer of <std::string, Tag> -<span class="lineNum"> 405 </span> : * -<span class="lineNum"> 406 </span> : * \note The collection is sent to 'cons' without merging repeated items -<span class="lineNum"> 407 </span> : */ -<span class="lineNum"> 408 </span> : template<typename OUT> -<span class="lineNum"> 409 </span> : void outputPatched(const std::string& filename, const OUT& out); -<span class="lineNum"> 410 </span> : }; -<span class="lineNum"> 411 </span> : -<span class="lineNum"> 412 </span> : -<span class="lineNum"> 413 </span> : } -<span class="lineNum"> 414 </span> : } -<span class="lineNum"> 415 </span> : -<span class="lineNum"> 416 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 417 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/debtags.tcc.gcov.html b/rep/ept/debtags/debtags.tcc.gcov.html deleted file mode 100644 index 3d2907f..0000000 --- a/rep/ept/debtags/debtags.tcc.gcov.html +++ /dev/null @@ -1,156 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/debtags.tcc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.tcc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">4</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%">4</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** -*- C++ -*- -<span class="lineNum"> 2 </span> : * @file -<span class="lineNum"> 3 </span> : * @author Enrico Zini (enrico) <enrico@enricozini.org> -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * libpkg Debtags data provider -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * Copyright (C) 2003-2007 Enrico Zini <enrico@debian.org> -<span class="lineNum"> 10 </span> : * -<span class="lineNum"> 11 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 12 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 13 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 14 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 15 </span> : * -<span class="lineNum"> 16 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 17 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 18 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 19 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 20 </span> : * -<span class="lineNum"> 21 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 22 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 23 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 24 </span> : */ -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #ifndef EPT_DEBTAGS_DEBTAGS_TCC -<span class="lineNum"> 27 </span> : #define EPT_DEBTAGS_DEBTAGS_TCC -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 30 </span> : #include <ept/debtags/maint/serializer.h> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : #include <tagcoll/input/stdio.h> -<span class="lineNum"> 33 </span> : #include <tagcoll/stream/patcher.h> -<span class="lineNum"> 34 </span> : #include <tagcoll/TextFormat.h> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : namespace ept { -<span class="lineNum"> 37 </span> : namespace debtags { -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : template<typename OUT> -<span class="lineNum"> 40 </span> : void Debtags::outputSystem(const OUT& cons) -<span class="lineNum"> 41 </span> : { -<span class="lineNum"> 42 </span><span class="lineCov"> 2 : m_rocoll.output(intToPkg(m_pkgid, vocabulary(), cons));</span> -<span class="lineNum"> 43 </span><span class="lineCov"> 2 : }</span> -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span> : template<typename OUT> -<span class="lineNum"> 46 </span> : void Debtags::outputSystem(const std::string& filename, const OUT& out) -<span class="lineNum"> 47 </span> : { -<span class="lineNum"> 48 </span> : if (filename == "-") -<span class="lineNum"> 49 </span> : { -<span class="lineNum"> 50 </span> : tagcoll::input::Stdio input(stdin, "<stdin>"); -<span class="lineNum"> 51 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, out)); -<span class="lineNum"> 52 </span> : } -<span class="lineNum"> 53 </span> : else -<span class="lineNum"> 54 </span> : { -<span class="lineNum"> 55 </span> : tagcoll::input::Stdio input(filename); -<span class="lineNum"> 56 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, out)); -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span> : } -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span> : template<typename OUT> -<span class="lineNum"> 61 </span> : void Debtags::outputPatched(const OUT& cons) -<span class="lineNum"> 62 </span> : { -<span class="lineNum"> 63 </span><span class="lineCov"> 2 : m_coll.output(intToPkg(m_pkgid, vocabulary(), cons));</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 2 : }</span> -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span> : template<typename OUT> -<span class="lineNum"> 67 </span> : void Debtags::outputPatched(const std::string& filename, const OUT& out) -<span class="lineNum"> 68 </span> : { -<span class="lineNum"> 69 </span> : const tagcoll::PatchList<string, Tag>& patch = m_coll.changes(); -<span class="lineNum"> 70 </span> : if (filename == "-") -<span class="lineNum"> 71 </span> : { -<span class="lineNum"> 72 </span> : tagcoll::input::Stdio input(stdin, "<stdin>"); -<span class="lineNum"> 73 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, patcher(patch, out))); -<span class="lineNum"> 74 </span> : } -<span class="lineNum"> 75 </span> : else -<span class="lineNum"> 76 </span> : { -<span class="lineNum"> 77 </span> : tagcoll::input::Stdio input(filename); -<span class="lineNum"> 78 </span> : tagcoll::textformat::parse(input, ept::debtags::stringToPkg(m_pkgid, m_voc, patcher(patch, out))); -<span class="lineNum"> 79 </span> : } -<span class="lineNum"> 80 </span> : } -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : #include <tagcoll/coll/patched.tcc> -<span class="lineNum"> 86 </span> : -<span class="lineNum"> 87 </span> : #endif -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/debtags.test.h.gcov.html b/rep/ept/debtags/debtags.test.h.gcov.html deleted file mode 100644 index e78c69b..0000000 --- a/rep/ept/debtags/debtags.test.h.gcov.html +++ /dev/null @@ -1,350 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/debtags.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - debtags.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">103</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%">103</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /** -<span class="lineNum"> 3 </span> : * @file -<span class="lineNum"> 4 </span> : * @author Enrico Zini (enrico) <enrico@enricozini.org> -<span class="lineNum"> 5 </span> : */ -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : /* -<span class="lineNum"> 8 </span> : * Test for the Debtags data provider -<span class="lineNum"> 9 </span> : * -<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini <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> : -<span class="lineNum"> 28 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 29 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <tagcoll/coll/simple.h> -<span class="lineNum"> 32 </span> : #include <tagcoll/stream/sink.h> -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : #include <wibble/operators.h> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : #include <ept/test.h> -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : #ifndef EPT_DEBTAGS_TESTH -<span class="lineNum"> 39 </span> : #define EPT_DEBTAGS_TESTH -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : using namespace tagcoll; -<span class="lineNum"> 42 </span> : using namespace std; -<span class="lineNum"> 43 </span> : using namespace ept; -<span class="lineNum"> 44 </span> : using namespace ept::debtags; -<span class="lineNum"> 45 </span> : using namespace wibble::operators; -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span> : struct TestDebtags : DebtagsTestEnvironment -<span class="lineNum"> 48 </span><span class="lineCov"> 5 : {</span> -<span class="lineNum"> 49 </span> : Debtags debtags; -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 5 : TestDebtags() {}</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineCov"> 10 : Vocabulary& voc() { return debtags.vocabulary(); }</span> -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : Test _1() {</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 21146 : for (Debtags::const_iterator i = debtags.begin(); i != debtags.end(); ++i)</span> -<span class="lineNum"> 57 </span> : { -<span class="lineNum"> 58 </span><span class="lineCov"> 21145 : *i;</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 21145 : i->first;</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 21145 : i->second;</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : int items = 0, tags = 0;</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : debtags.outputSystem(stream::countingSink(items, tags));</span> -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : int pitems = 0, ptags = 0;</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : debtags.outputPatched(stream::countingSink(pitems, ptags));</span> -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span><span class="lineCov"> 2 : assert(items > 10);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(tags > 10);</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert(items <= pitems);</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert(tags <= ptags);</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : Test _2()</span> -<span class="lineNum"> 75 </span> : { -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : string p("debtags");</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : std::set<Tag> tags = debtags.getTagsOfItem(p);</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert( !tags.empty() );</span> -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span> : #if 0 -<span class="lineNum"> 81 </span> : for ( std::set< Tag >::iterator i = tags.begin(); i != tags.end(); ++ i ) { -<span class="lineNum"> 82 </span> : std::cerr << i->id() << ": " << i->fullname() << std::endl; -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : std::cerr << "---" << std::endl; -<span class="lineNum"> 85 </span> : Tag t = voc().tagByName( "interface::commandline" ); -<span class="lineNum"> 86 </span> : std::cerr << t.id() << ": " << t.fullname() << std::endl; -<span class="lineNum"> 87 </span> : #endif -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert_eq( tags.size(), 8u );</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert( voc().tagByName( "devel::buildtools" ) <= tags );</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert( voc().tagByName( "implemented-in::c++" ) <= tags );</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert( voc().tagByName( "interface::commandline" ) <= tags );</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert( voc().tagByName( "role::program" ) <= tags );</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 2 : assert( voc().tagByName( "scope::application" ) <= tags );</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 2 : assert( voc().tagByName( "suite::debian" ) <= tags );</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 2 : assert( voc().tagByName( "use::searching" ) <= tags );</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 2 : assert( voc().tagByName( "works-with::software:package" ) <= tags );</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : Test _3()</span> -<span class="lineNum"> 101 </span> : { -<span class="lineNum"> 102 </span> : using namespace std; -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span> : /* Get the 'debtags' package */ -<span class="lineNum"> 105 </span><span class="lineCov"> 1 : string p("debtags");</span> -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : /* Get its tags */ -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : std::set<Tag> tags = debtags.getTagsOfItem(p);</span> -<span class="lineNum"> 109 </span><span class="lineCov"> 1 : assert(!tags.empty());</span> -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span> : /* -<span class="lineNum"> 112 </span> : cerr << "Intersection size: " << endl; -<span class="lineNum"> 113 </span> : using namespace wibble::operators; -<span class="lineNum"> 114 </span> : std::set<Tag>::const_iterator dbgi = tags.begin(); -<span class="lineNum"> 115 </span> : cerr << "* " << dbgi->fullname() << ": " << dbgi->id() << endl; -<span class="lineNum"> 116 </span> : std::set<int> dbgres = debtags.tagdb().getItemsHavingTag(dbgi->id()); -<span class="lineNum"> 117 </span> : std::set<Package> dbgpres = debtags.getItemsHavingTag(*dbgi); -<span class="lineNum"> 118 </span> : cerr << " #pkgs " << dbgres.size() << " == " << dbgpres.size() << endl; -<span class="lineNum"> 119 </span> : cerr << " #isec " << dbgres.size() << " == " << dbgpres.size() << endl; -<span class="lineNum"> 120 </span> : cerr << " "; ppset(dbgpres); cerr << endl; -<span class="lineNum"> 121 </span> : cerr << " "; piset(dbgres); cerr << endl; -<span class="lineNum"> 122 </span> : for (++dbgi ; dbgi != tags.end(); ++dbgi) -<span class="lineNum"> 123 </span> : { -<span class="lineNum"> 124 </span> : cerr << "* " << dbgi->fullname() << ": " << dbgi->id() << endl; -<span class="lineNum"> 125 </span> : std::set<Package> dbgpkgs = debtags.getItemsHavingTag(*dbgi); -<span class="lineNum"> 126 </span> : std::set<int> dbgids = debtags.tagdb().getItemsHavingTag(dbgi->id()); -<span class="lineNum"> 127 </span> : cerr << " "; ppset(dbgpkgs); cerr << endl; -<span class="lineNum"> 128 </span> : cerr << " "; piset(dbgids); cerr << endl; -<span class="lineNum"> 129 </span> : cerr << " #pkgs " << dbgpkgs.size() << " == " << dbgids.size() << endl; -<span class="lineNum"> 130 </span> : dbgres &= dbgids; -<span class="lineNum"> 131 </span> : dbgpres &= dbgpkgs; -<span class="lineNum"> 132 </span> : cerr << " #isec " << dbgres.size() << " == " << dbgpres.size() << endl; -<span class="lineNum"> 133 </span> : } -<span class="lineNum"> 134 </span> : cerr << " " << dbgres.size() << endl << "Results: " << endl; -<span class="lineNum"> 135 </span> : for (std::set<int>::const_iterator i = dbgres.begin(); i != dbgres.end(); ++i) -<span class="lineNum"> 136 </span> : cerr << " " << *i << endl; -<span class="lineNum"> 137 </span> : */ -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : -<span class="lineNum"> 140 </span> : // cerr << "Tags of debtags: "; -<span class="lineNum"> 141 </span> : // for (std::set<Tag>::const_iterator i = tags.begin(); i != tags.end(); ++i) -<span class="lineNum"> 142 </span> : // { -<span class="lineNum"> 143 </span> : // cerr << " " + i->fullname() << endl; -<span class="lineNum"> 144 </span> : // std::set<Package> packages = debtags.getItemsHavingTag(*i); -<span class="lineNum"> 145 </span> : // for (std::set<Package>::const_iterator p = packages.begin(); -<span class="lineNum"> 146 </span> : // p != packages.end(); ++p) -<span class="lineNum"> 147 </span> : // cerr << " PKG " << p->name() << endl; -<span class="lineNum"> 148 </span> : // } -<span class="lineNum"> 149 </span> : // cerr << endl; -<span class="lineNum"> 150 </span> : -<span class="lineNum"> 151 </span> : /* Get the items for the tagset of 'debtags' */ -<span class="lineNum"> 152 </span><span class="lineCov"> 1 : std::set<string> packages = debtags.getItemsHavingTags(tags);</span> -<span class="lineNum"> 153 </span> : //cerr << packages.size() << endl; -<span class="lineNum"> 154 </span><span class="lineCov"> 1 : assert(!packages.empty());</span> -<span class="lineNum"> 155 </span> : /* -<span class="lineNum"> 156 </span> : for ( std::set< Package >::iterator i = packages.begin(); i != packages.end(); ++ i ) -<span class="lineNum"> 157 </span> : std::cerr << i->name() << std::endl; -<span class="lineNum"> 158 </span> : std::cerr << "---" << std::endl; -<span class="lineNum"> 159 </span> : std::cerr << p.name() << std::endl; -<span class="lineNum"> 160 </span> : */ -<span class="lineNum"> 161 </span> : /* They should at least contain 'debtags' */ -<span class="lineNum"> 162 </span><span class="lineCov"> 2 : assert( p <= packages );</span> -<span class="lineNum"> 163 </span> : -<span class="lineNum"> 164 </span> : /* Get one of the tags of 'debtags' */ -<span class="lineNum"> 165 </span><span class="lineCov"> 2 : Tag tag = *tags.begin();</span> -<span class="lineNum"> 166 </span><span class="lineCov"> 1 : assert(tag);</span> -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span> : /* Get its items */ -<span class="lineNum"> 169 </span> : { -<span class="lineNum"> 170 </span> : /* Need this workaround until I figure out how to tell the new GCC -<span class="lineNum"> 171 </span> : * that TagDB is a TDBReadonlyDiskIndex and should behave as such -<span class="lineNum"> 172 </span> : */ -<span class="lineNum"> 173 </span><span class="lineCov"> 1 : std::set<Tag> ts;</span> -<span class="lineNum"> 174 </span><span class="lineCov"> 1 : ts.insert(tag);</span> -<span class="lineNum"> 175 </span><span class="lineCov"> 1 : packages = debtags.getItemsHavingTags(ts);</span> -<span class="lineNum"> 176 </span> : } -<span class="lineNum"> 177 </span> : //packages = c.debtags().tagdb().getItems(tag); -<span class="lineNum"> 178 </span><span class="lineCov"> 1 : assert(!packages.empty());</span> -<span class="lineNum"> 179 </span> : /* They should at least contain 'debtags' */ -<span class="lineNum"> 180 </span><span class="lineCov"> 2 : assert( p <= packages );</span> -<span class="lineNum"> 181 </span> : -<span class="lineNum"> 182 </span> : //c.debtags().getTags(""); // XXX HACK AWW! -<span class="lineNum"> 183 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 184 </span> : -<span class="lineNum"> 185 </span><span class="lineCov"> 1 : Test _4()</span> -<span class="lineNum"> 186 </span> : { -<span class="lineNum"> 187 </span><span class="lineCov"> 1 : std::string patchfile = Path::debtagsUserSourceDir() + "patch";</span> -<span class="lineNum"> 188 </span><span class="lineCov"> 1 : unlink(patchfile.c_str());</span> -<span class="lineNum"> 189 </span> : -<span class="lineNum"> 190 </span><span class="lineCov"> 1 : string p("debtags");</span> -<span class="lineNum"> 191 </span> : -<span class="lineNum"> 192 </span> : /* Get its tags */ -<span class="lineNum"> 193 </span><span class="lineCov"> 1 : std::set<Tag> tags = debtags.getTagsOfItem(p);</span> -<span class="lineNum"> 194 </span><span class="lineCov"> 1 : assert(!tags.empty());</span> -<span class="lineNum"> 195 </span> : -<span class="lineNum"> 196 </span> : // Ensure that it's not tagged with gameplaying -<span class="lineNum"> 197 </span><span class="lineCov"> 2 : Tag t = voc().tagByName("use::gameplaying");</span> -<span class="lineNum"> 198 </span><span class="lineCov"> 2 : assert(! (t <= tags) );</span> -<span class="lineNum"> 199 </span> : -<span class="lineNum"> 200 </span> : // Add the gameplaying tag -<span class="lineNum"> 201 </span><span class="lineCov"> 1 : PatchList<string, Tag> change;</span> -<span class="lineNum"> 202 </span><span class="lineCov"> 1 : change.addPatch(Patch<string, Tag>(p, wibble::singleton(t), wibble::Empty<Tag>()));</span> -<span class="lineNum"> 203 </span><span class="lineCov"> 1 : debtags.applyChange(change);</span> -<span class="lineNum"> 204 </span> : -<span class="lineNum"> 205 </span> : // See that the patch is non empty -<span class="lineNum"> 206 </span><span class="lineCov"> 1 : PatchList<string, Tag> tmp = debtags.changes();</span> -<span class="lineNum"> 207 </span><span class="lineCov"> 1 : assert(tmp.size() > 0);</span> -<span class="lineNum"> 208 </span><span class="lineCov"> 2 : assert_eq(tmp.size(), 1u);</span> -<span class="lineNum"> 209 </span> : -<span class="lineNum"> 210 </span> : // Ensure that the tag has been added -<span class="lineNum"> 211 </span><span class="lineCov"> 2 : tags = debtags.getTagsOfItem(p);</span> -<span class="lineNum"> 212 </span><span class="lineCov"> 1 : assert(!tags.empty());</span> -<span class="lineNum"> 213 </span> : -<span class="lineNum"> 214 </span><span class="lineCov"> 2 : t = voc().tagByName("use::gameplaying");</span> -<span class="lineNum"> 215 </span><span class="lineCov"> 2 : assert( t <= tags );</span> -<span class="lineNum"> 216 </span> : -<span class="lineNum"> 217 </span> : // Save the patch -<span class="lineNum"> 218 </span><span class="lineCov"> 1 : debtags.savePatch();</span> -<span class="lineNum"> 219 </span> : -<span class="lineNum"> 220 </span> : // Check that the saved patch is correct -<span class="lineNum"> 221 </span><span class="lineCov"> 1 : FILE* in = fopen(patchfile.c_str(), "r");</span> -<span class="lineNum"> 222 </span><span class="lineCov"> 1 : string writtenPatch;</span> -<span class="lineNum"> 223 </span> : int c; -<span class="lineNum"> 224 </span><span class="lineCov"> 29 : while ((c = getc(in)) != EOF)</span> -<span class="lineNum"> 225 </span><span class="lineCov"> 27 : writtenPatch += c;</span> -<span class="lineNum"> 226 </span><span class="lineCov"> 1 : fclose(in);</span> -<span class="lineNum"> 227 </span> : -<span class="lineNum"> 228 </span><span class="lineCov"> 1 : assert_eq(writtenPatch, string("debtags: +use::gameplaying\n"));</span> -<span class="lineNum"> 229 </span> : -<span class="lineNum"> 230 </span><span class="lineCov"> 2 : unlink(patchfile.c_str());</span> -<span class="lineNum"> 231 </span> : -<span class="lineNum"> 232 </span> : // Reapply the patch and see that it doesn't disrept things -<span class="lineNum"> 233 </span><span class="lineCov"> 1 : debtags.applyChange(change);</span> -<span class="lineNum"> 234 </span> : -<span class="lineNum"> 235 </span> : // The patch should not have changed -<span class="lineNum"> 236 </span><span class="lineCov"> 1 : tmp = debtags.changes();</span> -<span class="lineNum"> 237 </span><span class="lineCov"> 1 : assert_eq(tmp.size(), 1u);</span> -<span class="lineNum"> 238 </span><span class="lineCov"> 2 : assert_eq(tmp.begin()->first, p);</span> -<span class="lineNum"> 239 </span><span class="lineCov"> 1 : assert_eq(tmp.begin()->second.item, p);</span> -<span class="lineNum"> 240 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 241 </span> : -<span class="lineNum"> 242 </span> : // If there is no data, Debtags should work as an empty collection -<span class="lineNum"> 243 </span><span class="lineCov"> 1 : Test _5()</span> -<span class="lineNum"> 244 </span> : { -<span class="lineNum"> 245 </span><span class="lineCov"> 1 : Path::OverrideDebtagsSourceDir odsd("./empty");</span> -<span class="lineNum"> 246 </span><span class="lineCov"> 2 : Path::OverrideDebtagsIndexDir odid("./empty");</span> -<span class="lineNum"> 247 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserSourceDir odusd("./empty");</span> -<span class="lineNum"> 248 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserIndexDir oduid("./empty");</span> -<span class="lineNum"> 249 </span><span class="lineCov"> 1 : Debtags empty;</span> -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span><span class="lineCov"> 1 : assert(empty.begin() == empty.end());</span> -<span class="lineNum"> 252 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span> -<span class="lineNum"> 253 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span> -<span class="lineNum"> 254 </span> : -<span class="lineNum"> 255 </span><span class="lineCov"> 1 : tagcoll::PatchList<std::string, Tag> patches = empty.changes();</span> -<span class="lineNum"> 256 </span><span class="lineCov"> 1 : assert(patches.empty());</span> -<span class="lineNum"> 257 </span> : -<span class="lineNum"> 258 </span><span class="lineCov"> 2 : set<Tag> res = empty.getTagsOfItem("apt");</span> -<span class="lineNum"> 259 </span><span class="lineCov"> 2 : assert(res.empty());</span> -<span class="lineNum"> 260 </span><span class="lineCov"> 2 : res = empty.getTagsOfItems(wibble::singleton(string("apt")));</span> -<span class="lineNum"> 261 </span><span class="lineCov"> 2 : assert(res.empty());</span> -<span class="lineNum"> 262 </span> : -<span class="lineNum"> 263 </span><span class="lineCov"> 2 : res = empty.getAllTags();</span> -<span class="lineNum"> 264 </span><span class="lineCov"> 1 : assert(res.empty());</span> -<span class="lineNum"> 265 </span> : -<span class="lineNum"> 266 </span><span class="lineCov"> 1 : tagcoll::coll::Simple<string, Tag> coll;</span> -<span class="lineNum"> 267 </span><span class="lineCov"> 1 : empty.outputSystem(tagcoll::coll::inserter(coll));</span> -<span class="lineNum"> 268 </span><span class="lineCov"> 1 : assert_eq(coll.itemCount(), 0u);</span> -<span class="lineNum"> 269 </span> : -<span class="lineNum"> 270 </span><span class="lineCov"> 1 : coll.clear();</span> -<span class="lineNum"> 271 </span> : -<span class="lineNum"> 272 </span><span class="lineCov"> 1 : empty.outputPatched(tagcoll::coll::inserter(coll));</span> -<span class="lineNum"> 273 </span><span class="lineCov"> 1 : assert_eq(coll.itemCount(), 0u);</span> -<span class="lineNum"> 274 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 275 </span> : -<span class="lineNum"> 276 </span> : }; -<span class="lineNum"> 277 </span> : -<span class="lineNum"> 278 </span> : #include <ept/debtags/debtags.tcc> -<span class="lineNum"> 279 </span> : #include <tagcoll/coll/simple.tcc> -<span class="lineNum"> 280 </span> : -<span class="lineNum"> 281 </span> : #endif -<span class="lineNum"> 282 </span> : -<span class="lineNum"> 283 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/expression.cc.gcov.html b/rep/ept/debtags/expression.cc.gcov.html deleted file mode 100644 index 08ed2aa..0000000 --- a/rep/ept/debtags/expression.cc.gcov.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/expression.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - expression.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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> : /** \file -<span class="lineNum"> 2 </span> : * Match tag expressions against sets of Debtags Tags -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /* -<span class="lineNum"> 6 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini <enrico@debian.org> -<span class="lineNum"> 7 </span> : * -<span class="lineNum"> 8 </span> : * This program is free software; you can redistribute it and/or modify -<span class="lineNum"> 9 </span> : * it under the terms of the GNU General Public License as published by -<span class="lineNum"> 10 </span> : * the Free Software Foundation; either version 2 of the License, or -<span class="lineNum"> 11 </span> : * (at your option) any later version. -<span class="lineNum"> 12 </span> : * -<span class="lineNum"> 13 </span> : * This program is distributed in the hope that it will be useful, -<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -<span class="lineNum"> 16 </span> : * GNU General Public License for more details. -<span class="lineNum"> 17 </span> : * -<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU General Public License -<span class="lineNum"> 19 </span> : * along with this program; if not, write to the Free Software -<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 21 </span> : */ -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <ept/debtags/expression.h> -<span class="lineNum"> 24 </span> : #include <string> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : namespace tagcoll -<span class="lineNum"> 27 </span> : { -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : template<> -<span class="lineNum"> 30 </span><span class="lineCov"> 12 : bool Expression::operator()(const std::set<ept::debtags::Tag>& tags) const</span> -<span class="lineNum"> 31 </span> : { -<span class="lineNum"> 32 </span><span class="lineCov"> 12 : std::set<std::string> names;</span> -<span class="lineNum"> 33 </span><span class="lineCov"> 48 : for (std::set<ept::debtags::Tag>::const_iterator i = tags.begin();</span> -<span class="lineNum"> 34 </span> : i != tags.end(); ++i) -<span class="lineNum"> 35 </span><span class="lineCov"> 36 : names.insert(i->fullname());</span> -<span class="lineNum"> 36 </span><span class="lineCov"> 12 : return this->m_impl->eval(names);</span> -<span class="lineNum"> 37 </span> : } -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : template<> -<span class="lineNum"> 40 </span> : bool Expression::operator()(const std::set<ept::debtags::Facet>& tags) const -<span class="lineNum"> 41 </span> : { -<span class="lineNum"> 42 </span> : std::set<std::string> names; -<span class="lineNum"> 43 </span> : for (std::set<ept::debtags::Facet>::const_iterator i = tags.begin(); -<span class="lineNum"> 44 </span> : i != tags.end(); ++i) -<span class="lineNum"> 45 </span> : names.insert(i->name()); -<span class="lineNum"> 46 </span> : return this->m_impl->eval(names); -<span class="lineNum"> 47 </span> : } -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span> : }; -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/expression.test.h.gcov.html b/rep/ept/debtags/expression.test.h.gcov.html deleted file mode 100644 index 3a099a8..0000000 --- a/rep/ept/debtags/expression.test.h.gcov.html +++ /dev/null @@ -1,150 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/expression.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - expression.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">32</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%">32</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Match tag expressions against sets of Debtags Tags -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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/path.h> -<span class="lineNum"> 23 </span> : #include <ept/debtags/expression.h> -<span class="lineNum"> 24 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #include "debtags.test.h" -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : using namespace tagcoll; -<span class="lineNum"> 29 </span> : using namespace std; -<span class="lineNum"> 30 </span> : using namespace ept::debtags; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 2 : struct TestExpression : DebtagsTestEnvironment {</span> -<span class="lineNum"> 33 </span> : Vocabulary voc; -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span><span class="lineCov"> 1 : Test _1()</span> -<span class="lineNum"> 36 </span> : { -<span class="lineNum"> 37 </span><span class="lineCov"> 1 : set<Tag> test;</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : test.insert(voc.tagByName("use::editing"));</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 2 : test.insert(voc.tagByName("use::viewing"));</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 2 : test.insert(voc.tagByName("works-with::text"));</span> -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span><span class="lineCov"> 2 : assert_eq(test.size(), 3u);</span> -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineCov"> 2 : Expression e1("use::editing");</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineCov"> 2 : Expression e2("use::editing && use::viewing");</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 2 : assert(e2(test));</span> -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span><span class="lineCov"> 2 : e1 = Expression("!use::editing");</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 2 : assert(!e1(test));</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineCov"> 2 : e1 = Expression("use::editing || sugo");</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span><span class="lineCov"> 2 : e1 = Expression("use::editing && !sugo");</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span><span class="lineCov"> 2 : e1 = Expression("use::editing && !use::viewing");</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 2 : assert(!e1(test));</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 2 : e1 = Expression("(use::editing || sugo) && (use::viewing && works-with::text)");</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span><span class="lineCov"> 2 : e1 = Expression("!(use::editinuse::editingra && works-with::text)");</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span><span class="lineCov"> 2 : e1 = Expression("works-with::*");</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span><span class="lineCov"> 2 : e1 = Expression("*::text");</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : e1 = Expression("!*::antani");</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 2 : assert(e1(test));</span> -<span class="lineNum"> 76 </span> : -<span class="lineNum"> 77 </span><span class="lineCov"> 2 : e1 = Expression("*::antani");</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 2 : assert(!e1(test));</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : }; -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/index.html b/rep/ept/debtags/index.html deleted file mode 100644 index 1f5c5bd..0000000 --- a/rep/ept/debtags/index.html +++ /dev/null @@ -1,173 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/debtags</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">702</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">89.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">626</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="debtags.cc.gcov.html">debtags.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../amber.png" width=48 height=10 alt="48.1%"><img src="../../snow.png" width=52 height=10 alt="48.1%"></td></tr></table> - </td> - <td class="coverPerMed">48.1 %</td> - <td class="coverNumMed">39 / 81 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="debtags.h.gcov.html">debtags.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=93 height=10 alt="93.1%"><img src="../../snow.png" width=7 height=10 alt="93.1%"></td></tr></table> - </td> - <td class="coverPerHi">93.1 %</td> - <td class="coverNumHi">67 / 72 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="debtags.tcc.gcov.html">debtags.tcc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">4 / 4 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="debtags.test.h.gcov.html">debtags.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">103 / 103 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="expression.cc.gcov.html">expression.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">5 / 5 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="expression.test.h.gcov.html">expression.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">32 / 32 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="tag.cc.gcov.html">tag.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=75 height=10 alt="74.6%"><img src="../../snow.png" width=25 height=10 alt="74.6%"></td></tr></table> - </td> - <td class="coverPerHi">74.6 %</td> - <td class="coverNumHi">44 / 59 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="tag.h.gcov.html">tag.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=94 height=10 alt="93.8%"><img src="../../snow.png" width=6 height=10 alt="93.8%"></td></tr></table> - </td> - <td class="coverPerHi">93.8 %</td> - <td class="coverNumHi">15 / 16 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="vocabulary.cc.gcov.html">vocabulary.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=95 height=10 alt="95.1%"><img src="../../snow.png" width=5 height=10 alt="95.1%"></td></tr></table> - </td> - <td class="coverPerHi">95.1 %</td> - <td class="coverNumHi">97 / 102 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="vocabulary.h.gcov.html">vocabulary.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="87.3%"><img src="../../snow.png" width=13 height=10 alt="87.3%"></td></tr></table> - </td> - <td class="coverPerHi">87.3 %</td> - <td class="coverNumHi">48 / 55 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="vocabulary.test.h.gcov.html">vocabulary.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=99 height=10 alt="99.4%"><img src="../../snow.png" width=1 height=10 alt="99.4%"></td></tr></table> - </td> - <td class="coverPerHi">99.4 %</td> - <td class="coverNumHi">172 / 173 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/maint/debdbparser.cc.gcov.html b/rep/ept/debtags/maint/debdbparser.cc.gcov.html deleted file mode 100644 index df9b37c..0000000 --- a/rep/ept/debtags/maint/debdbparser.cc.gcov.html +++ /dev/null @@ -1,255 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/maint/debdbparser.cc</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current 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> diff --git a/rep/ept/debtags/tag.cc.gcov.html b/rep/ept/debtags/tag.cc.gcov.html deleted file mode 100644 index 180196e..0000000 --- a/rep/ept/debtags/tag.cc.gcov.html +++ /dev/null @@ -1,205 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/tag.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - tag.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">59</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">74.6 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">44</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -*- C++ -*- -<span class="lineNum"> 2 </span> : * Copyright (C) 2005,2006 Enrico Zini <enrico@debian.org> -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * This program is free software; you can redistribute it and/or modify -<span class="lineNum"> 5 </span> : * it under the terms of the GNU General Public License as published by -<span class="lineNum"> 6 </span> : * the Free Software Foundation; either version 2 of the License, or -<span class="lineNum"> 7 </span> : * (at your option) any later version. -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This program is distributed in the hope that it will be useful, -<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -<span class="lineNum"> 12 </span> : * GNU General Public License for more details. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU General Public License -<span class="lineNum"> 15 </span> : * along with this program; if not, write to the Free Software -<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 17 </span> : */ -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span> : #include <ept/debtags/tag.h> -<span class="lineNum"> 20 </span> : #include <ept/debtags/vocabulary.h> -<span class="lineNum"> 21 </span> : #include <stdexcept> -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : namespace ept { -<span class="lineNum"> 24 </span> : namespace debtags { -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : static inline std::string constget(const std::map<std::string, std::string>& m, -<span class="lineNum"> 27 </span><span class="lineCov"> 3898 : const std::string& key)</span> -<span class="lineNum"> 28 </span> : { -<span class="lineNum"> 29 </span><span class="lineCov"> 3898 : std::map<std::string, std::string>::const_iterator i = m.find(key);</span> -<span class="lineNum"> 30 </span><span class="lineCov"> 3898 : if (i == m.end())</span> -<span class="lineNum"> 31 </span><span class="lineCov"> 4 : return std::string();</span> -<span class="lineNum"> 32 </span> : else -<span class="lineNum"> 33 </span><span class="lineCov"> 3894 : return i->second;</span> -<span class="lineNum"> 34 </span> : } -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 59 : std::string Facet::name() const</span> -<span class="lineNum"> 37 </span> : { -<span class="lineNum"> 38 </span><span class="lineCov"> 59 : if (valid())</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 59 : return m_tags->facetName(m_id);</span> -<span class="lineNum"> 40 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No name for this facet" );</span> -<span class="lineNum"> 41 </span> : } -<span class="lineNum"> 42 </span><span class="lineCov"> 29 : std::string Facet::name(const std::string& d) const</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span><span class="lineCov"> 29 : return valid() ? m_tags->facetName(m_id) : d;</span> -<span class="lineNum"> 45 </span> : } -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineCov"> 59 : std::string Facet::shortDescription() const</span> -<span class="lineNum"> 48 </span> : { -<span class="lineNum"> 49 </span><span class="lineCov"> 59 : if (valid())</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 59 : return constget(m_tags->facetData(m_id), "_SD_");</span> -<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No short description for this facet" );</span> -<span class="lineNum"> 52 </span> : } -<span class="lineNum"> 53 </span><span class="lineCov"> 29 : std::string Facet::shortDescription(const std::string& d) const</span> -<span class="lineNum"> 54 </span> : { -<span class="lineNum"> 55 </span><span class="lineCov"> 29 : return valid() ? constget(m_tags->facetData(m_id), "_SD_") : d;</span> -<span class="lineNum"> 56 </span> : } -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span><span class="lineCov"> 59 : std::string Facet::longDescription() const</span> -<span class="lineNum"> 59 </span> : { -<span class="lineNum"> 60 </span><span class="lineCov"> 59 : if (valid())</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 59 : return constget(m_tags->facetData(m_id), "Description");</span> -<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No long description for this facet" );</span> -<span class="lineNum"> 63 </span> : } -<span class="lineNum"> 64 </span><span class="lineCov"> 29 : std::string Facet::longDescription(const std::string& d) const</span> -<span class="lineNum"> 65 </span> : { -<span class="lineNum"> 66 </span><span class="lineCov"> 29 : return valid() ? constget(m_tags->facetData(m_id), "Description") : d;</span> -<span class="lineNum"> 67 </span> : } -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : bool Facet::hasTag(const std::string& name) const</span> -<span class="lineNum"> 70 </span> : { -<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : if (!valid())</span> -<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "hasTag() called on an invalid facet" );</span> -<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : return m_tags->hasTag(this->name() + "::" + name);</span> -<span class="lineNum"> 74 </span> : } -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 89 : std::set< Tag > Facet::tags() const</span> -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span><span class="lineCov"> 89 : if (!valid())</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 1 : throw std::out_of_range( "tags() called on an invalid facet" );</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 88 : return m_tags->tags(m_id);</span> -<span class="lineNum"> 81 </span> : } -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : Facet Tag::facet() const</span> -<span class="lineNum"> 85 </span> : { -<span class="lineNum"> 86 </span><span class="lineNoCov"> 0 : if (valid())</span> -<span class="lineNum"> 87 </span><span class="lineNoCov"> 0 : return m_tags->facetByTag(m_id);</span> -<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No facet for this tag" );</span> -<span class="lineNum"> 89 </span> : } -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span><span class="lineCov"> 1243 : std::string Tag::name() const</span> -<span class="lineNum"> 92 </span> : { -<span class="lineNum"> 93 </span><span class="lineCov"> 1243 : if (valid())</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 1243 : return m_tags->tagShortName(m_id);</span> -<span class="lineNum"> 95 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No name for this tag" );</span> -<span class="lineNum"> 96 </span> : } -<span class="lineNum"> 97 </span><span class="lineCov"> 620 : std::string Tag::name(const std::string& d) const</span> -<span class="lineNum"> 98 </span> : { -<span class="lineNum"> 99 </span><span class="lineCov"> 620 : return valid() ? m_tags->tagShortName(m_id) : d;</span> -<span class="lineNum"> 100 </span> : } -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span><span class="lineCov"> 1284 : std::string Tag::fullname() const</span> -<span class="lineNum"> 103 </span> : { -<span class="lineNum"> 104 </span><span class="lineCov"> 1284 : if (valid())</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 1284 : return m_tags->tagName(m_id);</span> -<span class="lineNum"> 106 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No full name for this tag" );</span> -<span class="lineNum"> 107 </span> : } -<span class="lineNum"> 108 </span><span class="lineCov"> 620 : std::string Tag::fullname(const std::string& d) const</span> -<span class="lineNum"> 109 </span> : { -<span class="lineNum"> 110 </span><span class="lineCov"> 620 : return valid() ? m_tags->tagName(m_id) : d;</span> -<span class="lineNum"> 111 </span> : } -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span><span class="lineCov"> 1242 : std::string Tag::shortDescription() const</span> -<span class="lineNum"> 114 </span> : { -<span class="lineNum"> 115 </span><span class="lineCov"> 1242 : if (valid())</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 1242 : return constget(m_tags->tagData(m_id), "_SD_");</span> -<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No short description for this tag" );</span> -<span class="lineNum"> 118 </span> : } -<span class="lineNum"> 119 </span><span class="lineCov"> 620 : std::string Tag::shortDescription(const std::string& d) const</span> -<span class="lineNum"> 120 </span> : { -<span class="lineNum"> 121 </span><span class="lineCov"> 620 : return valid() ? constget(m_tags->tagData(m_id), "_SD_") : d;</span> -<span class="lineNum"> 122 </span> : } -<span class="lineNum"> 123 </span> : -<span class="lineNum"> 124 </span><span class="lineCov"> 1240 : std::string Tag::longDescription() const</span> -<span class="lineNum"> 125 </span> : { -<span class="lineNum"> 126 </span><span class="lineCov"> 1240 : if (valid())</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 1240 : return constget(m_tags->tagData(m_id), "Description");</span> -<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : throw std::out_of_range( "No long description for this tag" );</span> -<span class="lineNum"> 129 </span> : } -<span class="lineNum"> 130 </span><span class="lineCov"> 620 : std::string Tag::longDescription(const std::string& d) const</span> -<span class="lineNum"> 131 </span> : { -<span class="lineNum"> 132 </span><span class="lineCov"> 620 : return valid() ? constget(m_tags->tagData(m_id), "Description") : d;</span> -<span class="lineNum"> 133 </span> : } -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span> : } -<span class="lineNum"> 137 </span> : -<span class="lineNum"> 138 </span> : // vim:set ts=3 sw=3: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/tag.h.gcov.html b/rep/ept/debtags/tag.h.gcov.html deleted file mode 100644 index 0695c3c..0000000 --- a/rep/ept/debtags/tag.h.gcov.html +++ /dev/null @@ -1,318 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/tag.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - tag.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">16</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">93.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">15</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #ifndef EPT_DEBTAGS_TAG_H -<span class="lineNum"> 3 </span> : #define EPT_DEBTAGS_TAG_H -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /** \file -<span class="lineNum"> 6 </span> : * Debtags facets and tags -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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 <set> -<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 Vocabulary; -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : class Tag; -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : /** -<span class="lineNum"> 38 </span> : * Representation of a facet. -<span class="lineNum"> 39 </span> : * -<span class="lineNum"> 40 </span> : * ept::debtags::Facet represents a Facet with all its informations. -<span class="lineNum"> 41 </span> : * It is guaranteed to have fast value-copy semantics, so it can be passed -<span class="lineNum"> 42 </span> : * around freely and efficiently without worrying about memory management -<span class="lineNum"> 43 </span> : * issues. -<span class="lineNum"> 44 </span> : * -<span class="lineNum"> 45 </span> : * The class is normally instantiated using a Vocabulary: -<span class="lineNum"> 46 </span> : * \code -<span class="lineNum"> 47 </span> : * Facet facet = vocabulary.faceByName("made-of"); -<span class="lineNum"> 48 </span> : * \endcode -<span class="lineNum"> 49 </span> : * -<span class="lineNum"> 50 </span> : * Facets can contain an "invalid" value, in which case using any of their -<span class="lineNum"> 51 </span> : * methods will likely produce segfault. The "invalid" facets are useful as -<span class="lineNum"> 52 </span> : * "none" return values: -<span class="lineNum"> 53 </span> : * -<span class="lineNum"> 54 </span> : * \code -<span class="lineNum"> 55 </span> : * Facet facet = vocabulary.facetByName("made-of"); -<span class="lineNum"> 56 </span> : * if (!facet) -<span class="lineNum"> 57 </span> : * throw SomeException("facet \"made-of\" has not been defined"); -<span class="lineNum"> 58 </span> : * \endcode -<span class="lineNum"> 59 </span> : */ -<span class="lineNum"> 60 </span> : class Facet -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span> : protected: -<span class="lineNum"> 63 </span> : const Vocabulary* m_tags; -<span class="lineNum"> 64 </span> : int m_id; -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineCov"> 120 : Facet(const Vocabulary* tags, int id) : m_tags(tags), m_id(id) {}</span> -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span> : public: -<span class="lineNum"> 69 </span> : Facet() : m_tags(0), m_id(-1) {} -<span class="lineNum"> 70 </span><span class="lineCov"> 265 : ~Facet() {}</span> -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span><span class="lineCov"> 29 : bool operator==(const Facet& f) const { return m_id == f.m_id; }</span> -<span class="lineNum"> 73 </span> : bool operator!=(const Facet& f) const { return m_id != f.m_id; } -<span class="lineNum"> 74 </span><span class="lineCov"> 600 : bool operator<(const Facet& f) const { return m_id < f.m_id; }</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span> : /** -<span class="lineNum"> 77 </span> : * Return true if the facet is valid -<span class="lineNum"> 78 </span> : */ -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : operator bool() const { return m_id != -1; }</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 353 : bool valid() const { return m_id != -1; }</span> -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span> : /** -<span class="lineNum"> 83 </span> : * Return the name of the facet -<span class="lineNum"> 84 </span> : * @throws std::out_of_range if the facet is not valid -<span class="lineNum"> 85 </span> : */ -<span class="lineNum"> 86 </span> : std::string name() const; -<span class="lineNum"> 87 </span> : /** -<span class="lineNum"> 88 </span> : * Return the name of the facet -<span class="lineNum"> 89 </span> : * -<span class="lineNum"> 90 </span> : * Returns d if the facet is not valid. -<span class="lineNum"> 91 </span> : */ -<span class="lineNum"> 92 </span> : std::string name(const std::string& d) const; -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : /** -<span class="lineNum"> 95 </span> : * Return the short description of the facet -<span class="lineNum"> 96 </span> : * @throws std::out_of_range if the facet is not valid -<span class="lineNum"> 97 </span> : */ -<span class="lineNum"> 98 </span> : std::string shortDescription() const; -<span class="lineNum"> 99 </span> : /** -<span class="lineNum"> 100 </span> : * Return the short description of the facet -<span class="lineNum"> 101 </span> : * -<span class="lineNum"> 102 </span> : * Returns d if the facet is not valid. -<span class="lineNum"> 103 </span> : */ -<span class="lineNum"> 104 </span> : std::string shortDescription(const std::string& d) const; -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span> : /** -<span class="lineNum"> 107 </span> : * Return the long description of the facet -<span class="lineNum"> 108 </span> : * @throws std::out_of_range if the facet is not valid -<span class="lineNum"> 109 </span> : */ -<span class="lineNum"> 110 </span> : std::string longDescription() const; -<span class="lineNum"> 111 </span> : /** -<span class="lineNum"> 112 </span> : * Return the long description of the facet -<span class="lineNum"> 113 </span> : * -<span class="lineNum"> 114 </span> : * Returns d if the facet is not valid. -<span class="lineNum"> 115 </span> : */ -<span class="lineNum"> 116 </span> : std::string longDescription(const std::string& d) const; -<span class="lineNum"> 117 </span> : -<span class="lineNum"> 118 </span> : /** -<span class="lineNum"> 119 </span> : * Return true if the facet has a tag with the given name (name, not fullname) -<span class="lineNum"> 120 </span> : */ -<span class="lineNum"> 121 </span> : bool hasTag(const std::string& name) const; -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : /** -<span class="lineNum"> 124 </span> : * Return the list of tags in this facet -<span class="lineNum"> 125 </span> : */ -<span class="lineNum"> 126 </span> : std::set<Tag> tags() const; -<span class="lineNum"> 127 </span> : -<span class="lineNum"> 128 </span> : /** -<span class="lineNum"> 129 </span> : * Return the ID of this facet -<span class="lineNum"> 130 </span> : * -<span class="lineNum"> 131 </span> : * @warning This method is exported to help in writing tests, but it is not -<span class="lineNum"> 132 </span> : * part of the normal API: do not use it, because future implementations may -<span class="lineNum"> 133 </span> : * not be based on IDs and therefore not have this method. -<span class="lineNum"> 134 </span> : */ -<span class="lineNum"> 135 </span><span class="lineCov"> 58 : int id() const { return m_id; }</span> -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span> : friend class Vocabulary; -<span class="lineNum"> 138 </span> : }; -<span class="lineNum"> 139 </span> : -<span class="lineNum"> 140 </span> : /** -<span class="lineNum"> 141 </span> : * Representation of a tag. -<span class="lineNum"> 142 </span> : * -<span class="lineNum"> 143 </span> : * ept::debtags::Tag represents a Tag with all its informations. -<span class="lineNum"> 144 </span> : * It is guaranteed to have fast value-copy semantics, so it can be passed -<span class="lineNum"> 145 </span> : * around freely and efficiently without worrying about memory management -<span class="lineNum"> 146 </span> : * issues. -<span class="lineNum"> 147 </span> : * -<span class="lineNum"> 148 </span> : * The class is normally instantiated using a Vocabulary: -<span class="lineNum"> 149 </span> : * \code -<span class="lineNum"> 150 </span> : * Tag tag = vocabulary.tagByName("made-of::lang:c++"); -<span class="lineNum"> 151 </span> : * \endcode -<span class="lineNum"> 152 </span> : * -<span class="lineNum"> 153 </span> : * Tags can contain an "invalid" value, in which case using any of their -<span class="lineNum"> 154 </span> : * methods will likely produce segfault. The "invalid" facets are useful as -<span class="lineNum"> 155 </span> : * "none" return values: -<span class="lineNum"> 156 </span> : * -<span class="lineNum"> 157 </span> : * \code -<span class="lineNum"> 158 </span> : * Tag tag = vocabulary.tagByName("made-of"); -<span class="lineNum"> 159 </span> : * if (!tag) -<span class="lineNum"> 160 </span> : * throw SomeException("tag \"mytag\" has not been defined"); -<span class="lineNum"> 161 </span> : * \endcode -<span class="lineNum"> 162 </span> : */ -<span class="lineNum"> 163 </span> : class Tag -<span class="lineNum"> 164 </span> : { -<span class="lineNum"> 165 </span> : protected: -<span class="lineNum"> 166 </span> : const Vocabulary* m_tags; -<span class="lineNum"> 167 </span> : int m_id; -<span class="lineNum"> 168 </span> : -<span class="lineNum"> 169 </span><span class="lineCov"> 745056 : Tag(const Vocabulary* tags, int id) : m_tags(tags), m_id(id) {}</span> -<span class="lineNum"> 170 </span> : -<span class="lineNum"> 171 </span> : public: -<span class="lineNum"> 172 </span> : typedef std::set< Tag > Set; -<span class="lineNum"> 173 </span> : -<span class="lineNum"> 174 </span><span class="lineCov"> 2 : Tag() : m_tags(0), m_id(-1) {}</span> -<span class="lineNum"> 175 </span><span class="lineCov"> 2229812 : ~Tag() {}</span> -<span class="lineNum"> 176 </span> : -<span class="lineNum"> 177 </span><span class="lineCov"> 1228 : bool operator==(const Tag& f) const { return m_id == f.m_id; }</span> -<span class="lineNum"> 178 </span><span class="lineCov"> 5 : bool operator!=(const Tag& f) const { return m_id != f.m_id; }</span> -<span class="lineNum"> 179 </span><span class="lineCov"> 2300524 : bool operator<(const Tag& f) const { return m_id < f.m_id; }</span> -<span class="lineNum"> 180 </span> : -<span class="lineNum"> 181 </span><span class="lineCov"> 1 : operator bool() const { return m_id != -1; }</span> -<span class="lineNum"> 182 </span><span class="lineCov"> 324422 : bool valid() const { return m_id != -1; }</span> -<span class="lineNum"> 183 </span> : -<span class="lineNum"> 184 </span> : Facet facet() const; -<span class="lineNum"> 185 </span> : -<span class="lineNum"> 186 </span> : /** -<span class="lineNum"> 187 </span> : * Return the name of the tag, without the facet:: prefix -<span class="lineNum"> 188 </span> : * @throws std::out_of_range if the tag is not valid -<span class="lineNum"> 189 </span> : */ -<span class="lineNum"> 190 </span> : std::string name() const; -<span class="lineNum"> 191 </span> : /** -<span class="lineNum"> 192 </span> : * Return the short description of the tag -<span class="lineNum"> 193 </span> : * -<span class="lineNum"> 194 </span> : * Returns d if the tag is not valid. -<span class="lineNum"> 195 </span> : */ -<span class="lineNum"> 196 </span> : std::string name(const std::string& d) const; -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span> : /** -<span class="lineNum"> 199 </span> : * Return the name of the tag, with the facet:: prefix -<span class="lineNum"> 200 </span> : * @throws std::out_of_range if the tag is not valid -<span class="lineNum"> 201 </span> : */ -<span class="lineNum"> 202 </span> : std::string fullname() const; -<span class="lineNum"> 203 </span> : /** -<span class="lineNum"> 204 </span> : * Return the short description of the tag -<span class="lineNum"> 205 </span> : * -<span class="lineNum"> 206 </span> : * Returns d if the tag is not valid. -<span class="lineNum"> 207 </span> : */ -<span class="lineNum"> 208 </span> : std::string fullname(const std::string& d) const; -<span class="lineNum"> 209 </span> : -<span class="lineNum"> 210 </span> : /** -<span class="lineNum"> 211 </span> : * Return the short description of the tag -<span class="lineNum"> 212 </span> : * @throws std::out_of_range if the tag is not valid -<span class="lineNum"> 213 </span> : */ -<span class="lineNum"> 214 </span> : std::string shortDescription() const; -<span class="lineNum"> 215 </span> : /** -<span class="lineNum"> 216 </span> : * Return the short description of the tag -<span class="lineNum"> 217 </span> : * -<span class="lineNum"> 218 </span> : * Returns d if the tag is not valid. -<span class="lineNum"> 219 </span> : */ -<span class="lineNum"> 220 </span> : std::string shortDescription(const std::string& d) const; -<span class="lineNum"> 221 </span> : -<span class="lineNum"> 222 </span> : /** -<span class="lineNum"> 223 </span> : * Return the long description of the tag -<span class="lineNum"> 224 </span> : * -<span class="lineNum"> 225 </span> : * @throws std::out_of_range if the tag is not valid -<span class="lineNum"> 226 </span> : */ -<span class="lineNum"> 227 </span> : std::string longDescription() const; -<span class="lineNum"> 228 </span> : /** -<span class="lineNum"> 229 </span> : * Return the long description of the tag -<span class="lineNum"> 230 </span> : * -<span class="lineNum"> 231 </span> : * Returns d if the tag is not valid. -<span class="lineNum"> 232 </span> : */ -<span class="lineNum"> 233 </span> : std::string longDescription(const std::string& d) const; -<span class="lineNum"> 234 </span> : -<span class="lineNum"> 235 </span> : /** -<span class="lineNum"> 236 </span> : * Return the ID of this tag -<span class="lineNum"> 237 </span> : * -<span class="lineNum"> 238 </span> : * @warning This method is exported to help in writing tests, but it is not -<span class="lineNum"> 239 </span> : * part of the normal API: do not use it, because future implementations may -<span class="lineNum"> 240 </span> : * not be based on IDs and therefore not have this method. -<span class="lineNum"> 241 </span> : */ -<span class="lineNum"> 242 </span><span class="lineCov"> 106853 : int id() const { return m_id; }</span> -<span class="lineNum"> 243 </span> : -<span class="lineNum"> 244 </span> : friend class Vocabulary; -<span class="lineNum"> 245 </span> : }; -<span class="lineNum"> 246 </span> : -<span class="lineNum"> 247 </span> : } -<span class="lineNum"> 248 </span> : } -<span class="lineNum"> 249 </span> : -<span class="lineNum"> 250 </span> : // vim:set ts=3 sw=3: -<span class="lineNum"> 251 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/vocabulary.cc.gcov.html b/rep/ept/debtags/vocabulary.cc.gcov.html deleted file mode 100644 index 9ebdb82..0000000 --- a/rep/ept/debtags/vocabulary.cc.gcov.html +++ /dev/null @@ -1,297 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/vocabulary.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">102</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">95.1 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">97</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -*- C++ -*- -<span class="lineNum"> 2 </span> : * Tag vocabulary access -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * Copyright (C) 2003--2007 Enrico Zini <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 <ept/debtags/vocabulary.h> -<span class="lineNum"> 22 </span> : #include <ept/debtags/maint/vocabularyindexer.h> -<span class="lineNum"> 23 </span> : #include <ept/debtags/maint/debdbparser.h> -<span class="lineNum"> 24 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #include <tagcoll/input/memory.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <cstring> -<span class="lineNum"> 29 </span> : #include <sstream> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <sys/types.h> -<span class="lineNum"> 32 </span> : #include <sys/stat.h> -<span class="lineNum"> 33 </span> : #include <fcntl.h> -<span class="lineNum"> 34 </span> : #include <sys/mman.h> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : using namespace tagcoll; -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : namespace ept { -<span class="lineNum"> 39 </span> : namespace debtags { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 9 : int Vocabulary::FacetIndex::id(const char* name) const</span> -<span class="lineNum"> 42 </span> : { -<span class="lineNum"> 43 </span><span class="lineCov"> 9 : if (size() == 0) return -1;</span> -<span class="lineNum"> 44 </span> : int begin, end; -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : /* Binary search */ -<span class="lineNum"> 47 </span><span class="lineCov"> 9 : begin = -1, end = size();</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 62 : while (end - begin > 1)</span> -<span class="lineNum"> 49 </span> : { -<span class="lineNum"> 50 </span><span class="lineCov"> 44 : int cur = (end + begin) / 2;</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 44 : if (strcmp(item(cur)->name, name) > 0)</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 16 : end = cur;</span> -<span class="lineNum"> 53 </span> : else -<span class="lineNum"> 54 </span><span class="lineCov"> 28 : begin = cur;</span> -<span class="lineNum"> 55 </span> : } -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span><span class="lineCov"> 9 : if (begin == -1 || strcmp(item(begin)->name, name) != 0)</span> -<span class="lineNum"> 58 </span> : //throw NotFoundException(string("looking for the ID of string ") + str); -<span class="lineNum"> 59 </span><span class="lineCov"> 3 : return -1;</span> -<span class="lineNum"> 60 </span> : else -<span class="lineNum"> 61 </span><span class="lineCov"> 6 : return begin;</span> -<span class="lineNum"> 62 </span> : } -<span class="lineNum"> 63 </span> : -<span class="lineNum"> 64 </span><span class="lineCov"> 1105769 : int tagcmp(const char* tag1, const char* tag2)</span> -<span class="lineNum"> 65 </span> : { -<span class="lineNum"> 66 </span><span class="lineCov"> 1105769 : const char* tsep1 = strstr(tag1, "::");</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1105769 : if (tsep1 == NULL) return strcmp(tag1, tag2);</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1105766 : const char* tsep2 = strstr(tag2, "::");</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 1105766 : if (tsep2 == NULL) return strcmp(tag1, tag2);</span> -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span> : // See what is the length of the shortest facet -<span class="lineNum"> 72 </span><span class="lineCov"> 1105766 : int len1 = tsep1 - tag1;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 1105766 : int len2 = tsep2 - tag2;</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 1105766 : int minlen = len1 < len2 ? len1 : len2;</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 1105766 : int res = strncmp(tag1, tag2, minlen);</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1105766 : if (res != 0)</span> -<span class="lineNum"> 78 </span> : // Different facets -<span class="lineNum"> 79 </span><span class="lineCov"> 454813 : return res;</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 650953 : if (len1 == len2)</span> -<span class="lineNum"> 82 </span> : // If the facet is the same, compare the tags -<span class="lineNum"> 83 </span><span class="lineCov"> 639402 : return strcmp(tsep1 + 2, tsep2 + 2);</span> -<span class="lineNum"> 84 </span> : else -<span class="lineNum"> 85 </span> : // Two facets with similar prefixes -<span class="lineNum"> 86 </span><span class="lineCov"> 11551 : return len1 < len2 ? -1 : 1;</span> -<span class="lineNum"> 87 </span> : } -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span><span class="lineCov"> 106377 : int Vocabulary::TagIndex::id(const char* name) const</span> -<span class="lineNum"> 90 </span> : { -<span class="lineNum"> 91 </span><span class="lineCov"> 106377 : if (size() == 0) return -1;</span> -<span class="lineNum"> 92 </span> : int begin, end; -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : /* Binary search */ -<span class="lineNum"> 95 </span><span class="lineCov"> 106377 : begin = -1, end = size();</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 1212130 : while (end - begin > 1)</span> -<span class="lineNum"> 97 </span> : { -<span class="lineNum"> 98 </span><span class="lineCov"> 999376 : int cur = (end + begin) / 2;</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 999376 : if (tagcmp(item(cur)->name, name) > 0)</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 432389 : end = cur;</span> -<span class="lineNum"> 101 </span> : else -<span class="lineNum"> 102 </span><span class="lineCov"> 566987 : begin = cur;</span> -<span class="lineNum"> 103 </span> : } -<span class="lineNum"> 104 </span> : -<span class="lineNum"> 105 </span><span class="lineCov"> 106377 : if (begin == -1 || tagcmp(item(begin)->name, name) != 0)</span> -<span class="lineNum"> 106 </span> : //throw NotFoundException(string("looking for the ID of string ") + str); -<span class="lineNum"> 107 </span><span class="lineCov"> 132 : return -1;</span> -<span class="lineNum"> 108 </span> : else -<span class="lineNum"> 109 </span><span class="lineCov"> 106245 : return begin;</span> -<span class="lineNum"> 110 </span> : } -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 31 : Vocabulary::Vocabulary()</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 31 : : voc_fd(-1), voc_size(0), voc_buf(0)</span> -<span class="lineNum"> 114 </span> : { -<span class="lineNum"> 115 </span><span class="lineCov"> 31 : std::string vocfname;</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 31 : std::string idxfname;</span> -<span class="lineNum"> 117 </span> : -<span class="lineNum"> 118 </span><span class="lineCov"> 31 : if (!VocabularyIndexer::obtainWorkingVocabulary(vocfname, idxfname))</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span><span class="lineCov"> 2 : m_timestamp = 0;</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 2 : return;</span> -<span class="lineNum"> 122 </span> : } -<span class="lineNum"> 123 </span> : -<span class="lineNum"> 124 </span><span class="lineCov"> 29 : m_timestamp = Path::timestamp(idxfname);</span> -<span class="lineNum"> 125 </span> : -<span class="lineNum"> 126 </span><span class="lineCov"> 29 : mastermmap.init(idxfname);</span> -<span class="lineNum"> 127 </span> : -<span class="lineNum"> 128 </span> : // Initialize the facet and tag indexes -<span class="lineNum"> 129 </span><span class="lineCov"> 29 : findex.init(mastermmap, 0);</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 29 : tindex.init(mastermmap, 1);</span> -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span> : // MMap the vocabulary -<span class="lineNum"> 133 </span> : -<span class="lineNum"> 134 </span> : // Open the file -<span class="lineNum"> 135 </span><span class="lineCov"> 29 : voc_fname = vocfname;</span> -<span class="lineNum"> 136 </span><span class="lineCov"> 29 : if ((voc_fd = open(voc_fname.c_str(), O_RDONLY)) == -1)</span> -<span class="lineNum"> 137 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, "opening vocabulary file");</span> -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span><span class="lineCov"> 29 : off_t size = lseek(voc_fd, 0, SEEK_END);</span> -<span class="lineNum"> 140 </span><span class="lineCov"> 29 : if (size == (off_t)-1)</span> -<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, "reading the size of vocabulary file");</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 29 : voc_size = size;</span> -<span class="lineNum"> 143 </span> : -<span class="lineNum"> 144 </span> : // Map the file into memory -<span class="lineNum"> 145 </span><span class="lineCov"> 29 : if ((voc_buf = (const char*)mmap(0, voc_size, PROT_READ, MAP_PRIVATE, voc_fd, 0)) == MAP_FAILED)</span> -<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(voc_fname, "mmapping vocabulary file");</span> -<span class="lineNum"> 147 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 148 </span> : -<span class="lineNum"> 149 </span><span class="lineCov"> 31 : Vocabulary::~Vocabulary()</span> -<span class="lineNum"> 150 </span> : { -<span class="lineNum"> 151 </span> : // Unmap and close the file -<span class="lineNum"> 152 </span><span class="lineCov"> 31 : if (voc_buf)</span> -<span class="lineNum"> 153 </span><span class="lineCov"> 29 : munmap((void*)voc_buf, voc_size);</span> -<span class="lineNum"> 154 </span><span class="lineCov"> 31 : if (voc_fd != -1)</span> -<span class="lineNum"> 155 </span><span class="lineCov"> 29 : close(voc_fd);</span> -<span class="lineNum"> 156 </span><span class="lineCov"> 31 : }</span> -<span class="lineNum"> 157 </span> : -<span class="lineNum"> 158 </span><span class="lineCov"> 120 : Facet Vocabulary::facetByID(int id) const</span> -<span class="lineNum"> 159 </span> : { -<span class="lineNum"> 160 </span><span class="lineCov"> 120 : return Facet(this, id);</span> -<span class="lineNum"> 161 </span> : } -<span class="lineNum"> 162 </span> : -<span class="lineNum"> 163 </span><span class="lineCov"> 745056 : Tag Vocabulary::tagByID(int id) const</span> -<span class="lineNum"> 164 </span> : { -<span class="lineNum"> 165 </span><span class="lineCov"> 745056 : return Tag(this, id);</span> -<span class="lineNum"> 166 </span> : } -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span><span class="lineCov"> 1301 : void Vocabulary::parseVocBuf(std::map<std::string, std::string>& res, size_t ofs, size_t len) const</span> -<span class="lineNum"> 169 </span> : { -<span class="lineNum"> 170 </span> : // Access the right part of the mmapped buffer -<span class="lineNum"> 171 </span><span class="lineCov"> 1301 : std::stringstream name;</span> -<span class="lineNum"> 172 </span><span class="lineCov"> 1301 : name << voc_fname << '+' << ofs << '-' << len;</span> -<span class="lineNum"> 173 </span><span class="lineCov"> 1301 : input::Memory in(name.str(), voc_buf + ofs, len);</span> -<span class="lineNum"> 174 </span><span class="lineCov"> 1301 : DebDBParser parser(in);</span> -<span class="lineNum"> 175 </span> : // Parse the raw string data and store it in the cache vector -<span class="lineNum"> 176 </span><span class="lineCov"> 1301 : parser.nextRecord(res);</span> -<span class="lineNum"> 177 </span> : -<span class="lineNum"> 178 </span><span class="lineCov"> 1301 : std::string desc = res["Description"];</span> -<span class="lineNum"> 179 </span><span class="lineCov"> 2602 : if (!desc.empty())</span> -<span class="lineNum"> 180 </span> : { -<span class="lineNum"> 181 </span><span class="lineCov"> 1298 : size_t pos = desc.find('\n');</span> -<span class="lineNum"> 182 </span><span class="lineCov"> 1298 : if (pos == std::string::npos)</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 849 : res["_SD_"] = desc;</span> -<span class="lineNum"> 184 </span> : else -<span class="lineNum"> 185 </span><span class="lineCov"> 449 : res["_SD_"] = desc.substr(0, pos);</span> -<span class="lineNum"> 186 </span><span class="lineCov"> 1301 : }</span> -<span class="lineNum"> 187 </span><span class="lineCov"> 1301 : }</span> -<span class="lineNum"> 188 </span> : -<span class="lineNum"> 189 </span><span class="lineCov"> 1863 : std::string Vocabulary::tagShortName(int id) const</span> -<span class="lineNum"> 190 </span> : { -<span class="lineNum"> 191 </span><span class="lineCov"> 1863 : const char* fullname = tindex.name(id);</span> -<span class="lineNum"> 192 </span><span class="lineCov"> 1863 : char* sub = strstr(fullname, "::");</span> -<span class="lineNum"> 193 </span><span class="lineCov"> 1863 : if (sub != NULL)</span> -<span class="lineNum"> 194 </span><span class="lineCov"> 1863 : return sub + 2;</span> -<span class="lineNum"> 195 </span> : else -<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : return fullname;</span> -<span class="lineNum"> 197 </span> : } -<span class="lineNum"> 198 </span> : -<span class="lineNum"> 199 </span><span class="lineCov"> 176 : const std::map<std::string, std::string>& Vocabulary::facetData(int id) const</span> -<span class="lineNum"> 200 </span> : { -<span class="lineNum"> 201 </span><span class="lineCov"> 176 : if (id < 0) return emptyData;</span> -<span class="lineNum"> 202 </span> : -<span class="lineNum"> 203 </span> : // Enlarge the cache vector if needed -<span class="lineNum"> 204 </span><span class="lineCov"> 176 : if ((unsigned)id >= m_facetData.size())</span> -<span class="lineNum"> 205 </span><span class="lineCov"> 59 : m_facetData.resize(id + 1);</span> -<span class="lineNum"> 206 </span> : -<span class="lineNum"> 207 </span><span class="lineCov"> 176 : if (m_facetData[id].empty())</span> -<span class="lineNum"> 208 </span><span class="lineCov"> 59 : parseVocBuf(m_facetData[id], findex.offset(id), findex.size(id));</span> -<span class="lineNum"> 209 </span> : -<span class="lineNum"> 210 </span><span class="lineCov"> 176 : return m_facetData[id];</span> -<span class="lineNum"> 211 </span> : } -<span class="lineNum"> 212 </span> : -<span class="lineNum"> 213 </span><span class="lineCov"> 3722 : const std::map<std::string, std::string>& Vocabulary::tagData(int id) const</span> -<span class="lineNum"> 214 </span> : { -<span class="lineNum"> 215 </span><span class="lineCov"> 3722 : if (id < 0) return emptyData;</span> -<span class="lineNum"> 216 </span> : -<span class="lineNum"> 217 </span> : // Enlarge the cache vector if needed -<span class="lineNum"> 218 </span><span class="lineCov"> 3722 : if ((unsigned)id >= m_tagData.size())</span> -<span class="lineNum"> 219 </span><span class="lineCov"> 1242 : m_tagData.resize(id + 1);</span> -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span><span class="lineCov"> 3722 : if (m_tagData[id].empty())</span> -<span class="lineNum"> 222 </span><span class="lineCov"> 1242 : parseVocBuf(m_tagData[id], tindex.offset(id), tindex.size(id));</span> -<span class="lineNum"> 223 </span> : -<span class="lineNum"> 224 </span><span class="lineCov"> 3722 : return m_tagData[id];</span> -<span class="lineNum"> 225 </span> : } -<span class="lineNum"> 226 </span> : -<span class="lineNum"> 227 </span> : } -<span class="lineNum"> 228 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 229 </span> : -<span class="lineNum"> 230 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/vocabulary.h.gcov.html b/rep/ept/debtags/vocabulary.h.gcov.html deleted file mode 100644 index b110f8c..0000000 --- a/rep/ept/debtags/vocabulary.h.gcov.html +++ /dev/null @@ -1,349 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/vocabulary.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">55</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">87.3 %</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> : #ifndef EPT_DEBTAGS_VOCABULARY_H -<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_VOCABULARY_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Debtags vocabulary access -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini <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/tag.h> -<span class="lineNum"> 28 </span> : #include <tagcoll/diskindex/mmap.h> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : #include <string> -<span class="lineNum"> 31 </span> : #include <vector> -<span class="lineNum"> 32 </span> : #include <map> -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : namespace ept { -<span class="lineNum"> 35 </span> : namespace debtags { -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : class Vocabulary -<span class="lineNum"> 38 </span> : { -<span class="lineNum"> 39 </span> : public: -<span class="lineNum"> 40 </span> : class FacetIndex : public tagcoll::diskindex::MMap -<span class="lineNum"> 41 </span> : { -<span class="lineNum"> 42 </span> : protected: -<span class="lineNum"> 43 </span> : // Layout of the data in the index -<span class="lineNum"> 44 </span> : struct Item { -<span class="lineNum"> 45 </span> : int offset; -<span class="lineNum"> 46 </span> : int size; -<span class="lineNum"> 47 </span> : int firsttag; -<span class="lineNum"> 48 </span> : int lasttag; -<span class="lineNum"> 49 </span> : const char name[]; -<span class="lineNum"> 50 </span> : }; -<span class="lineNum"> 51 </span><span class="lineCov"> 2393 : inline Item* item(int id) const</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 2393 : if (id >= 0 && (unsigned)id < size())</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 2392 : return (Item*)(m_buf + ((int*)m_buf)[id]);</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : return NULL;</span> -<span class="lineNum"> 56 </span> : } -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : public: -<span class="lineNum"> 59 </span><span class="lineCov"> 31 : FacetIndex() : tagcoll::diskindex::MMap() {}</span> -<span class="lineNum"> 60 </span> : FacetIndex(const tagcoll::diskindex::MasterMMap& master, size_t idx) -<span class="lineNum"> 61 </span> : : tagcoll::diskindex::MMap(master, idx) {} -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : /// Get the number of facets in the index -<span class="lineNum"> 64 </span><span class="lineCov"> 2501 : size_t size() const { return m_size == 0 ? 0 : *(int*)m_buf / sizeof(int); }</span> -<span class="lineNum"> 65 </span> : /// Get the offset of the facet data in the vocabulary for this facet -<span class="lineNum"> 66 </span><span class="lineCov"> 59 : size_t offset(int id) const { Item* i = item(id); return i == NULL ? 0 : i->offset; }</span> -<span class="lineNum"> 67 </span> : /// Get the size of the facet data in the vocabulary for this facet -<span class="lineNum"> 68 </span><span class="lineCov"> 59 : size_t size(int id) const { Item* i = item(id); return i == NULL ? 0 : i->size; }</span> -<span class="lineNum"> 69 </span> : /// Get the id of the first tag for this facet -<span class="lineNum"> 70 </span><span class="lineCov"> 91 : int firsttag(int id) const { Item* i = item(id); return i == NULL ? -1 : i->firsttag; }</span> -<span class="lineNum"> 71 </span> : /// Get the id of the last tag for this facet -<span class="lineNum"> 72 </span><span class="lineCov"> 2043 : int lasttag(int id) const { Item* i = item(id); return i == NULL ? -1 : i->lasttag; }</span> -<span class="lineNum"> 73 </span> : /// Get the name of this facet -<span class="lineNum"> 74 </span><span class="lineCov"> 88 : const char* name(int id) const { Item* i = item(id); return i == NULL ? "" : i->name; }</span> -<span class="lineNum"> 75 </span> : /// Get the ID of the facet with this name -<span class="lineNum"> 76 </span> : int id(const char* name) const; -<span class="lineNum"> 77 </span><span class="lineCov"> 7 : int id(const std::string& name) const { return id(name.c_str()); }</span> -<span class="lineNum"> 78 </span> : }; -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span> : class TagIndex : public tagcoll::diskindex::MMap -<span class="lineNum"> 81 </span> : { -<span class="lineNum"> 82 </span> : protected: -<span class="lineNum"> 83 </span> : // Layout of the data in the index -<span class="lineNum"> 84 </span> : struct Item { -<span class="lineNum"> 85 </span> : int offset; -<span class="lineNum"> 86 </span> : int size; -<span class="lineNum"> 87 </span> : int facet; -<span class="lineNum"> 88 </span> : const char name[]; -<span class="lineNum"> 89 </span> : }; -<span class="lineNum"> 90 </span><span class="lineCov"> 1112004 : inline Item* item(int id) const</span> -<span class="lineNum"> 91 </span> : { -<span class="lineNum"> 92 </span><span class="lineCov"> 1112004 : if (id >= 0 && (unsigned)id < size())</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1112004 : return (Item*)(m_buf + ((int*)m_buf)[id]);</span> -<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : return NULL;</span> -<span class="lineNum"> 95 </span> : } -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span> : public: -<span class="lineNum"> 98 </span><span class="lineCov"> 31 : TagIndex() : tagcoll::diskindex::MMap() {}</span> -<span class="lineNum"> 99 </span> : TagIndex(const tagcoll::diskindex::MasterMMap& master, size_t idx) -<span class="lineNum"> 100 </span> : : tagcoll::diskindex::MMap(master, idx) {} -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span> : /// Get the number of tags in the index -<span class="lineNum"> 103 </span><span class="lineCov"> 1327864 : size_t size() const { return m_size == 0 ? 0 : *(int*)m_buf / sizeof(int); }</span> -<span class="lineNum"> 104 </span> : /// Get the offset of the facet data in the vocabulary for this tag -<span class="lineNum"> 105 </span><span class="lineCov"> 1242 : size_t offset(int id) const { Item* i = item(id); return i == NULL ? 0 : i->offset; }</span> -<span class="lineNum"> 106 </span> : /// Get the size of the facet data in the vocabulary for this tag -<span class="lineNum"> 107 </span><span class="lineCov"> 1242 : size_t size(int id) const { Item* i = item(id); return i == NULL ? 0 : i->size; }</span> -<span class="lineNum"> 108 </span> : /// Get the id of the facet for this tag -<span class="lineNum"> 109 </span><span class="lineNoCov"> 0 : int facet(int id) const { Item* i = item(id); return i == NULL ? -1 : i->facet; }</span> -<span class="lineNum"> 110 </span> : /// Get the name of this tag -<span class="lineNum"> 111 </span><span class="lineCov"> 3767 : const char* name(int id) const { Item* i = item(id); return i == NULL ? "" : i->name; }</span> -<span class="lineNum"> 112 </span> : /// Get the ID of the tag with this name -<span class="lineNum"> 113 </span> : int id(const char* name) const; -<span class="lineNum"> 114 </span><span class="lineCov"> 105755 : int id(const std::string& name) const { return id(name.c_str()); }</span> -<span class="lineNum"> 115 </span> : }; -<span class="lineNum"> 116 </span> : -<span class="lineNum"> 117 </span> : protected: -<span class="lineNum"> 118 </span> : // Master MMap index container -<span class="lineNum"> 119 </span> : tagcoll::diskindex::MasterMMap mastermmap; -<span class="lineNum"> 120 </span> : -<span class="lineNum"> 121 </span> : time_t m_timestamp; -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : // Mmapped vocabulary file -<span class="lineNum"> 124 </span> : std::string voc_fname; -<span class="lineNum"> 125 </span> : int voc_fd; -<span class="lineNum"> 126 </span> : size_t voc_size; -<span class="lineNum"> 127 </span> : const char* voc_buf; -<span class="lineNum"> 128 </span> : -<span class="lineNum"> 129 </span> : // Facet and tag indexes -<span class="lineNum"> 130 </span> : FacetIndex findex; -<span class="lineNum"> 131 </span> : TagIndex tindex; -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : // Cached parsed facet and tag records -<span class="lineNum"> 134 </span> : mutable std::vector< std::map<std::string, std::string> > m_facetData; -<span class="lineNum"> 135 </span> : mutable std::vector< std::map<std::string, std::string> > m_tagData; -<span class="lineNum"> 136 </span> : // Empty parsed data to return when data is asked for IDs == -1 -<span class="lineNum"> 137 </span> : std::map<std::string, std::string> emptyData; -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : void parseVocBuf(std::map<std::string, std::string>& res, size_t ofs, size_t len) const; -<span class="lineNum"> 140 </span> : -<span class="lineNum"> 141 </span> : public: -<span class="lineNum"> 142 </span> : Vocabulary(); -<span class="lineNum"> 143 </span> : ~Vocabulary(); -<span class="lineNum"> 144 </span> : -<span class="lineNum"> 145 </span> : /// Get the timestamp of when the index was last updated -<span class="lineNum"> 146 </span> : time_t timestamp() const { return m_timestamp; } -<span class="lineNum"> 147 </span> : -<span class="lineNum"> 148 </span> : /// Return true if this data source has data, false if it's empty -<span class="lineNum"> 149 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span> -<span class="lineNum"> 150 </span> : -<span class="lineNum"> 151 </span> : const FacetIndex& facetIndex() const { return findex; } -<span class="lineNum"> 152 </span> : const TagIndex& tagIndex() const { return tindex; } -<span class="lineNum"> 153 </span> : -<span class="lineNum"> 154 </span> : /** -<span class="lineNum"> 155 </span> : * Check if the vocabulary contains the facet `name' -<span class="lineNum"> 156 </span> : */ -<span class="lineNum"> 157 </span><span class="lineCov"> 2 : bool hasFacet(const std::string& name) const</span> -<span class="lineNum"> 158 </span> : { -<span class="lineNum"> 159 </span><span class="lineCov"> 2 : return findex.id(name.c_str()) != -1;</span> -<span class="lineNum"> 160 </span> : } -<span class="lineNum"> 161 </span> : -<span class="lineNum"> 162 </span> : /** -<span class="lineNum"> 163 </span> : * Check if the vocabulary contains the tag `fullname' -<span class="lineNum"> 164 </span> : */ -<span class="lineNum"> 165 </span><span class="lineCov"> 622 : bool hasTag(const std::string& fullname) const</span> -<span class="lineNum"> 166 </span> : { -<span class="lineNum"> 167 </span><span class="lineCov"> 622 : return tindex.id(fullname.c_str()) != -1;</span> -<span class="lineNum"> 168 </span> : } -<span class="lineNum"> 169 </span> : -<span class="lineNum"> 170 </span> : /** -<span class="lineNum"> 171 </span> : * Return the facet with the given name -<span class="lineNum"> 172 </span> : */ -<span class="lineNum"> 173 </span> : Facet facetByID(int id) const; -<span class="lineNum"> 174 </span> : -<span class="lineNum"> 175 </span> : /** -<span class="lineNum"> 176 </span> : * Return the tag with the given full name -<span class="lineNum"> 177 </span> : */ -<span class="lineNum"> 178 </span> : Tag tagByID(int id) const; -<span class="lineNum"> 179 </span> : -<span class="lineNum"> 180 </span> : template<typename IDS> -<span class="lineNum"> 181 </span><span class="lineCov"> 84590 : std::set<Tag> tagsByID(const IDS& ids) const</span> -<span class="lineNum"> 182 </span> : { -<span class="lineNum"> 183 </span><span class="lineCov"> 84590 : std::set<Tag> res;</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 507017 : for (typename IDS::const_iterator i = ids.begin();</span> -<span class="lineNum"> 185 </span> : i != ids.end(); ++i) -<span class="lineNum"> 186 </span><span class="lineCov"> 422427 : res.insert(tagByID(*i));</span> -<span class="lineNum"> 187 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 188 </span> : } -<span class="lineNum"> 189 </span> : -<span class="lineNum"> 190 </span> : /** -<span class="lineNum"> 191 </span> : * Return the facet for the tag with the given ID -<span class="lineNum"> 192 </span> : */ -<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : Facet facetByTag(int id) const { return facetByID(tindex.facet(id)); }</span> -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span> : /** -<span class="lineNum"> 196 </span> : * Return the facet with the given name -<span class="lineNum"> 197 </span> : */ -<span class="lineNum"> 198 </span><span class="lineCov"> 4 : Facet facetByName(const std::string& name) const { return facetByID(findex.id(name)); }</span> -<span class="lineNum"> 199 </span> : -<span class="lineNum"> 200 </span> : /** -<span class="lineNum"> 201 </span> : * Return the tag with the given full name -<span class="lineNum"> 202 </span> : */ -<span class="lineNum"> 203 </span><span class="lineCov"> 105755 : Tag tagByName(const std::string& fullname) const { return tagByID(tindex.id(fullname)); }</span> -<span class="lineNum"> 204 </span> : -<span class="lineNum"> 205 </span> : /** -<span class="lineNum"> 206 </span> : * Return all the facets in the vocabulary -<span class="lineNum"> 207 </span> : */ -<span class="lineNum"> 208 </span><span class="lineCov"> 4 : std::set< Facet > facets() const</span> -<span class="lineNum"> 209 </span> : { -<span class="lineNum"> 210 </span><span class="lineCov"> 4 : std::set< Facet > res;</span> -<span class="lineNum"> 211 </span><span class="lineCov"> 91 : for (size_t i = 0; i < findex.size(); i++)</span> -<span class="lineNum"> 212 </span><span class="lineCov"> 87 : res.insert(facetByID(i));</span> -<span class="lineNum"> 213 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 214 </span> : } -<span class="lineNum"> 215 </span> : -<span class="lineNum"> 216 </span> : /** -<span class="lineNum"> 217 </span> : * Return all the tags in the vocabulary -<span class="lineNum"> 218 </span> : */ -<span class="lineNum"> 219 </span><span class="lineCov"> 6 : std::set< Tag > tags() const</span> -<span class="lineNum"> 220 </span> : { -<span class="lineNum"> 221 </span><span class="lineCov"> 6 : std::set< Tag > res;</span> -<span class="lineNum"> 222 </span><span class="lineCov"> 3106 : for (size_t i = 0; i < tindex.size(); i++)</span> -<span class="lineNum"> 223 </span><span class="lineCov"> 3100 : res.insert(tagByID(i));</span> -<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 225 </span> : } -<span class="lineNum"> 226 </span> : -<span class="lineNum"> 227 </span> : /** -<span class="lineNum"> 228 </span> : * Return the tags in the given facet -<span class="lineNum"> 229 </span> : */ -<span class="lineNum"> 230 </span><span class="lineCov"> 91 : std::set< Tag > tags(int facet) const</span> -<span class="lineNum"> 231 </span> : { -<span class="lineNum"> 232 </span><span class="lineCov"> 91 : std::set< Tag > res;</span> -<span class="lineNum"> 233 </span><span class="lineCov"> 2044 : for (int i = findex.firsttag(facet); i != -1 && i <= findex.lasttag(facet); i++)</span> -<span class="lineNum"> 234 </span><span class="lineCov"> 1953 : res.insert(tagByID(i));</span> -<span class="lineNum"> 235 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 236 </span> : } -<span class="lineNum"> 237 </span> : -<span class="lineNum"> 238 </span><span class="lineCov"> 3 : std::set< Tag > tags(const std::string& facetName) const</span> -<span class="lineNum"> 239 </span> : { -<span class="lineNum"> 240 </span><span class="lineCov"> 3 : return tags(findex.id(facetName));</span> -<span class="lineNum"> 241 </span> : } -<span class="lineNum"> 242 </span> : -<span class="lineNum"> 243 </span> : std::set< Tag > tags(const Facet& facet) const -<span class="lineNum"> 244 </span> : { -<span class="lineNum"> 245 </span> : return tags(facet.id()); -<span class="lineNum"> 246 </span> : } -<span class="lineNum"> 247 </span> : -<span class="lineNum"> 248 </span> : #if 0 -<span class="lineNum"> 249 </span> : /// Get the DerivedTagList with the Equates: expressions read from the vocabulary -<span class="lineNum"> 250 </span> : const DerivedTagList& getEquations() const throw () { return equations; } -<span class="lineNum"> 251 </span> : -<span class="lineNum"> 252 </span> : /// Get a set with all the facets present in the vocabulary that are matched by `filter' -<span class="lineNum"> 253 </span> : FacetSet facets(const FacetMatcher& filter) const throw () { return getFiltered(filter); } -<span class="lineNum"> 254 </span> : #endif -<span class="lineNum"> 255 </span> : -<span class="lineNum"> 256 </span> : #if 0 -<span class="lineNum"> 257 </span> : // These functions are here just to be used by Facet and Tag. I'm not -<span class="lineNum"> 258 </span> : // making them private because I don't want Facet and Tag to access other -<span class="lineNum"> 259 </span> : // Vocabulary member, and other classes can't use these anyway as Facet::Data and -<span class="lineNum"> 260 </span> : // Tag::Data are protected -<span class="lineNum"> 261 </span> : const Facet::Data& facetData(int idx) { return m_facets[idx]; } -<span class="lineNum"> 262 </span> : const Tag::Data& tagData(int idx) { return m_tags[idx]; } -<span class="lineNum"> 263 </span> : #endif -<span class="lineNum"> 264 </span> : -<span class="lineNum"> 265 </span> : /// Get the facet name given the facet id -<span class="lineNum"> 266 </span><span class="lineCov"> 88 : std::string facetName(int id) const { return findex.name(id); }</span> -<span class="lineNum"> 267 </span> : -<span class="lineNum"> 268 </span> : /// Get the tag name given the tag id -<span class="lineNum"> 269 </span><span class="lineCov"> 1904 : std::string tagName(int id) const { return tindex.name(id); }</span> -<span class="lineNum"> 270 </span> : -<span class="lineNum"> 271 </span> : /// Get the tag name given the tag id -<span class="lineNum"> 272 </span> : std::string tagShortName(int id) const; -<span class="lineNum"> 273 </span> : -<span class="lineNum"> 274 </span> : const std::map<std::string, std::string>& facetData(int id) const; -<span class="lineNum"> 275 </span> : const std::map<std::string, std::string>& tagData(int id) const; -<span class="lineNum"> 276 </span> : }; -<span class="lineNum"> 277 </span> : -<span class="lineNum"> 278 </span> : } -<span class="lineNum"> 279 </span> : } -<span class="lineNum"> 280 </span> : -<span class="lineNum"> 281 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 282 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/vocabulary.test.h.gcov.html b/rep/ept/debtags/vocabulary.test.h.gcov.html deleted file mode 100644 index b5b697a..0000000 --- a/rep/ept/debtags/vocabulary.test.h.gcov.html +++ /dev/null @@ -1,385 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/vocabulary.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/debtags</a> - vocabulary.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">173</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">99.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">172</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Tag vocabulary access -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * Copyright (C) 2003--2007 Enrico Zini <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/vocabulary.h> -<span class="lineNum"> 23 </span> : #include <ept/debtags/maint/vocabularymerger.h> -<span class="lineNum"> 24 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 25 </span> : #include <tagcoll/utils/set.h> -<span class="lineNum"> 26 </span> : #include <tagcoll/input/stdio.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include "debtags.test.h" -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : // This is not exported by default -<span class="lineNum"> 31 </span> : namespace ept { -<span class="lineNum"> 32 </span> : namespace debtags { -<span class="lineNum"> 33 </span> : int tagcmp(const char* tag1, const char* tag2); -<span class="lineNum"> 34 </span> : } -<span class="lineNum"> 35 </span> : } -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : using namespace std; -<span class="lineNum"> 38 </span> : using namespace tagcoll::utils; -<span class="lineNum"> 39 </span> : using namespace ept::debtags; -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : struct TestVocabulary : DebtagsTestEnvironment -<span class="lineNum"> 42 </span><span class="lineCov"> 38 : {</span> -<span class="lineNum"> 43 </span> : Vocabulary m_tags; -<span class="lineNum"> 44 </span><span class="lineCov"> 1298 : Vocabulary& tags() { return m_tags; }</span> -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span><span class="lineCov"> 1 : Test _1()</span> -<span class="lineNum"> 47 </span> : { -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : tags(); // this will throw if the open above didn't work</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test _2()</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert( tags().hasFacet( "works-with" ) );</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert( !tags().hasFacet( "blah" ) );</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : Test _3()</span> -<span class="lineNum"> 58 </span> : { -<span class="lineNum"> 59 </span><span class="lineCov"> 1 : assert( tags().hasTag( "works-with::people" ) );</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 2 : assert( !tags().hasTag( "works-with::midgets" ) );</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : Test _4()</span> -<span class="lineNum"> 64 </span> : { -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : Tag people = tags().tagByName( "works-with::people" ),</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 2 : midgets = tags().tagByName( "works-with::midgets" ),</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 2 : blahg = tags().tagByName( "works-with::blahg" ),</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 2 : text = tags().tagByName( "works-with::text" ),</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 2 : people2 = tags().tagByName( "works-with::people" );</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert( people != midgets );</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert( people != text );</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 2 : assert( people != blahg );</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 2 : assert( midgets == blahg );</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert( midgets == midgets );</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 2 : assert( people == people2 );</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 2 : assert( people == people );</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span><span class="lineCov"> 1 : Test _5()</span> -<span class="lineNum"> 80 </span> : { -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : Tag a = tags().tagByName( "works-with::people" ),</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 2 : b = tags().tagByName( "works-with::midgets" );</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 2 : std::set< Tag > s = tags().tags(),</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 1 : f = tags().tags( "works-with" ),</span> -<span class="lineNum"> 85 </span><span class="lineCov"> 2 : n = tags().tags( "nonsense" );</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert( set_contains(s, a) );</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert( set_contains(f, a) );</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert( set_contains(s, f) );</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert( !set_contains(s, b) );</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert( !set_contains(f, b) );</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert( n.empty() );</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : Test _6()</span> -<span class="lineNum"> 95 </span> : { -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( "works-with" );</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 2 : Tag t = tags().tagByName( "works-with::people" );</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert_eq(f.name(), "works-with");</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert_eq(t.name(), "people");</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert_eq(t.fullname(), "works-with::people");</span> -<span class="lineNum"> 101 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 102 </span> : -<span class="lineNum"> 103 </span><span class="lineCov"> 1 : Test _7()</span> -<span class="lineNum"> 104 </span> : { -<span class="lineNum"> 105 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( "works-with" );</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 2 : std::set< Tag > x = tags().tags( "works-with" );</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 2 : assert( x == f.tags() );</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span><span class="lineCov"> 1 : Test _8()</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( "does-not-work-with" );</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 1 : int x = 1;</span> -<span class="lineNum"> 114 </span> : try { -<span class="lineNum"> 115 </span><span class="lineCov"> 1 : f.tags();</span> -<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : x = 2;</span> -<span class="lineNum"> 117 </span><span class="lineCov"> 2 : } catch (...) {</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 1 : x = 3;</span> -<span class="lineNum"> 119 </span> : } -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : assert_eq( x, 3 );</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : Test _9()</span> -<span class="lineNum"> 124 </span> : { -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : Facet f = tags().facetByName( "legacy" );</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 2 : assert_eq(f.shortDescription(), "");</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 1 : assert_eq(f.longDescription(), "");</span> -<span class="lineNum"> 128 </span> : //assert_eq(f.shortDescription( "weehee" ), "weehee"); -<span class="lineNum"> 129 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 130 </span> : -<span class="lineNum"> 131 </span> : Test _10() -<span class="lineNum"> 132 </span> : { -<span class="lineNum"> 133 </span> : // assert that one-character tag names are parsed correctly -<span class="lineNum"> 134 </span> : assert( tags().hasTag( "implemented-in::c" ) ); -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span><span class="lineCov"> 1 : Test _11()</span> -<span class="lineNum"> 138 </span> : { -<span class="lineNum"> 139 </span> : // assert that all tags are somehow working -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : std::set<Facet> facets = tags().facets();</span> -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span><span class="lineCov"> 30 : for (std::set<Facet>::const_iterator i = facets.begin();</span> -<span class="lineNum"> 143 </span> : i != facets.end(); i++) -<span class="lineNum"> 144 </span> : { -<span class="lineNum"> 145 </span><span class="lineCov"> 29 : i->name(string("foo"));</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 58 : i->shortDescription(string("foo"));</span> -<span class="lineNum"> 147 </span><span class="lineCov"> 58 : i->longDescription(string("foo"));</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 58 : i->tags();</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 151 </span> : -<span class="lineNum"> 152 </span><span class="lineCov"> 1 : Test _12()</span> -<span class="lineNum"> 153 </span> : { -<span class="lineNum"> 154 </span> : // assert that all tags are somehow working -<span class="lineNum"> 155 </span><span class="lineCov"> 1 : std::set<Tag> tags = this->tags().tags();</span> -<span class="lineNum"> 156 </span> : -<span class="lineNum"> 157 </span><span class="lineCov"> 1242 : for (std::set<Tag>::const_iterator i = tags.begin();</span> -<span class="lineNum"> 158 </span> : i != tags.end(); i++) -<span class="lineNum"> 159 </span> : { -<span class="lineNum"> 160 </span><span class="lineCov"> 620 : i->name(string("foo"));</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 1240 : i->fullname(string("foo"));</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 1240 : i->shortDescription(string("foo"));</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 1240 : i->longDescription(string("foo"));</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 165 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 166 </span> : -<span class="lineNum"> 167 </span> : // Check for correctness of the first and last tag in the vocabulary -<span class="lineNum"> 168 </span><span class="lineCov"> 1 : Test _13()</span> -<span class="lineNum"> 169 </span> : { -<span class="lineNum"> 170 </span><span class="lineCov"> 1 : Vocabulary& tags = this->tags();</span> -<span class="lineNum"> 171 </span> : -<span class="lineNum"> 172 </span><span class="lineCov"> 1 : Tag first = tags.tagByName("accessibility::TODO");</span> -<span class="lineNum"> 173 </span><span class="lineCov"> 2 : assert(first != Tag());</span> -<span class="lineNum"> 174 </span><span class="lineCov"> 1 : assert_eq(first.fullname(), string("accessibility::TODO"));</span> -<span class="lineNum"> 175 </span><span class="lineCov"> 2 : assert_eq(first.name(), string("TODO"));</span> -<span class="lineNum"> 176 </span><span class="lineCov"> 2 : assert_eq(first.shortDescription(), string("Need an extra tag"));</span> -<span class="lineNum"> 177 </span> : -<span class="lineNum"> 178 </span><span class="lineCov"> 2 : Tag last = tags.tagByName("x11::xserver");</span> -<span class="lineNum"> 179 </span><span class="lineCov"> 2 : assert(last != Tag());</span> -<span class="lineNum"> 180 </span><span class="lineCov"> 1 : assert_eq(last.fullname(), string("x11::xserver"));</span> -<span class="lineNum"> 181 </span><span class="lineCov"> 2 : assert_eq(last.name(), string("xserver"));</span> -<span class="lineNum"> 182 </span><span class="lineCov"> 2 : assert_eq(last.shortDescription(), string("X Server"));</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 184 </span> : -<span class="lineNum"> 185 </span><span class="lineCov"> 1 : Test _14()</span> -<span class="lineNum"> 186 </span> : { -<span class="lineNum"> 187 </span> : // assert that it's possible to go from facet to ID and back -<span class="lineNum"> 188 </span><span class="lineCov"> 1 : std::set<Facet> facets = tags().facets();</span> -<span class="lineNum"> 189 </span> : -<span class="lineNum"> 190 </span><span class="lineCov"> 30 : for (std::set<Facet>::const_iterator i = facets.begin();</span> -<span class="lineNum"> 191 </span> : i != facets.end(); i++) -<span class="lineNum"> 192 </span> : { -<span class="lineNum"> 193 </span><span class="lineCov"> 29 : Facet f = tags().facetByID(i->id());</span> -<span class="lineNum"> 194 </span><span class="lineCov"> 29 : assert_eq(*i, f);</span> -<span class="lineNum"> 195 </span><span class="lineCov"> 29 : assert_eq(i->name(), f.name());</span> -<span class="lineNum"> 196 </span><span class="lineCov"> 29 : assert_eq(i->shortDescription(), f.shortDescription());</span> -<span class="lineNum"> 197 </span><span class="lineCov"> 29 : assert_eq(i->longDescription(), f.longDescription());</span> -<span class="lineNum"> 198 </span><span class="lineCov"> 29 : assert_eq(i->tags().size(), f.tags().size());</span> -<span class="lineNum"> 199 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 200 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 201 </span> : -<span class="lineNum"> 202 </span><span class="lineCov"> 1 : Test _15()</span> -<span class="lineNum"> 203 </span> : { -<span class="lineNum"> 204 </span> : // assert that it's possible to go from tag to ID and back -<span class="lineNum"> 205 </span><span class="lineCov"> 1 : std::set<Tag> tags = this->tags().tags();</span> -<span class="lineNum"> 206 </span> : -<span class="lineNum"> 207 </span><span class="lineCov"> 621 : for (std::set<Tag>::const_iterator i = tags.begin();</span> -<span class="lineNum"> 208 </span> : i != tags.end(); i++) -<span class="lineNum"> 209 </span> : { -<span class="lineNum"> 210 </span><span class="lineCov"> 620 : Tag t = this->tags().tagByID(i->id());</span> -<span class="lineNum"> 211 </span><span class="lineCov"> 620 : assert_eq(*i, t);</span> -<span class="lineNum"> 212 </span><span class="lineCov"> 620 : assert_eq(i->name(), t.name());</span> -<span class="lineNum"> 213 </span><span class="lineCov"> 620 : assert_eq(i->fullname(), t.fullname());</span> -<span class="lineNum"> 214 </span><span class="lineCov"> 620 : assert_eq(i->shortDescription(), t.shortDescription());</span> -<span class="lineNum"> 215 </span><span class="lineCov"> 620 : assert_eq(i->longDescription(), t.longDescription());</span> -<span class="lineNum"> 216 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 217 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 218 </span> : -<span class="lineNum"> 219 </span><span class="lineCov"> 1 : Test _16()</span> -<span class="lineNum"> 220 </span> : { -<span class="lineNum"> 221 </span> : // assert that facet IDs are distinct -<span class="lineNum"> 222 </span><span class="lineCov"> 1 : std::set<Facet> facets = tags().facets();</span> -<span class="lineNum"> 223 </span><span class="lineCov"> 1 : std::set<int> ids;</span> -<span class="lineNum"> 224 </span><span class="lineCov"> 30 : for (std::set<Facet>::const_iterator i = facets.begin();</span> -<span class="lineNum"> 225 </span> : i != facets.end(); i++) -<span class="lineNum"> 226 </span><span class="lineCov"> 29 : ids.insert(i->id());</span> -<span class="lineNum"> 227 </span> : -<span class="lineNum"> 228 </span><span class="lineCov"> 1 : assert_eq(facets.size(), ids.size());</span> -<span class="lineNum"> 229 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 230 </span> : -<span class="lineNum"> 231 </span><span class="lineCov"> 1 : Test _17()</span> -<span class="lineNum"> 232 </span> : { -<span class="lineNum"> 233 </span> : // assert that tag IDs are distinct -<span class="lineNum"> 234 </span><span class="lineCov"> 1 : std::set<Tag> tags = this->tags().tags();</span> -<span class="lineNum"> 235 </span><span class="lineCov"> 1 : std::set<int> ids;</span> -<span class="lineNum"> 236 </span><span class="lineCov"> 621 : for (std::set<Tag>::const_iterator i = tags.begin();</span> -<span class="lineNum"> 237 </span> : i != tags.end(); i++) -<span class="lineNum"> 238 </span><span class="lineCov"> 620 : ids.insert(i->id());</span> -<span class="lineNum"> 239 </span> : -<span class="lineNum"> 240 </span><span class="lineCov"> 1 : assert_eq(tags.size(), ids.size());</span> -<span class="lineNum"> 241 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 242 </span> : -<span class="lineNum"> 243 </span><span class="lineCov"> 1 : Test _18()</span> -<span class="lineNum"> 244 </span> : { -<span class="lineNum"> 245 </span> : // assert that all the tags are indexed -<span class="lineNum"> 246 </span><span class="lineCov"> 1 : ept::debtags::VocabularyMerger voc;</span> -<span class="lineNum"> 247 </span><span class="lineCov"> 1 : tagcoll::input::Stdio in(ept::debtags::Path::vocabulary());</span> -<span class="lineNum"> 248 </span><span class="lineCov"> 1 : voc.read(in);</span> -<span class="lineNum"> 249 </span><span class="lineCov"> 1 : std::set<std::string> all = voc.tagNames();</span> -<span class="lineNum"> 250 </span><span class="lineCov"> 1242 : for (std::set<std::string>::const_iterator i = all.begin();</span> -<span class="lineNum"> 251 </span> : i != all.end(); ++i) -<span class="lineNum"> 252 </span><span class="lineCov"> 620 : assert(this->tags().hasTag(*i));</span> -<span class="lineNum"> 253 </span> : -<span class="lineNum"> 254 </span> : // There should be the same amount of tags in both -<span class="lineNum"> 255 </span><span class="lineCov"> 1 : std::set<Tag> allTags = this->tags().tags();</span> -<span class="lineNum"> 256 </span><span class="lineCov"> 1 : assert_eq(all.size(), allTags.size());</span> -<span class="lineNum"> 257 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 258 </span> : -<span class="lineNum"> 259 </span><span class="lineCov"> 1 : Test _19()</span> -<span class="lineNum"> 260 </span> : { -<span class="lineNum"> 261 </span> : // test the tagcmp function -<span class="lineNum"> 262 </span> : -<span class="lineNum"> 263 </span> : // If unfaceted, same as strcmp -<span class="lineNum"> 264 </span><span class="lineCov"> 1 : assert(ept::debtags::tagcmp("antani", "blinda") < 0);</span> -<span class="lineNum"> 265 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("blinda", "antani") > 0);</span> -<span class="lineNum"> 266 </span><span class="lineCov"> 2 : assert_eq(ept::debtags::tagcmp("antani", "antani"), 0);</span> -<span class="lineNum"> 267 </span> : -<span class="lineNum"> 268 </span> : // If the same and faceted, should work -<span class="lineNum"> 269 </span><span class="lineCov"> 2 : assert_eq(ept::debtags::tagcmp("antani::blinda", "antani::blinda"), 0);</span> -<span class="lineNum"> 270 </span> : -<span class="lineNum"> 271 </span> : // With different facet names, work just as strcmp -<span class="lineNum"> 272 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("antani::blinda", "blinda::blinda") < 0);</span> -<span class="lineNum"> 273 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("blinda::blinda", "antani::blinda") > 0);</span> -<span class="lineNum"> 274 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("anta::blinda", "antani::blinda") < 0);</span> -<span class="lineNum"> 275 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("antani::blinda", "anta::blinda") > 0);</span> -<span class="lineNum"> 276 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("anta::blinda", "anta-ni::blinda") < 0);</span> -<span class="lineNum"> 277 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("anta-ni::blinda", "anta::blinda") > 0);</span> -<span class="lineNum"> 278 </span> : -<span class="lineNum"> 279 </span> : // With same facet names, work just as strcmp on the tags -<span class="lineNum"> 280 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::antani", "a::blinda") < 0);</span> -<span class="lineNum"> 281 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::blinda", "a::antani") > 0);</span> -<span class="lineNum"> 282 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::anta", "a::antani") < 0);</span> -<span class="lineNum"> 283 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::antani", "a::anta") > 0);</span> -<span class="lineNum"> 284 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::anta", "a::anta-ni") < 0);</span> -<span class="lineNum"> 285 </span><span class="lineCov"> 2 : assert(ept::debtags::tagcmp("a::anta-ni", "a::anta") > 0);</span> -<span class="lineNum"> 286 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 287 </span> : -<span class="lineNum"> 288 </span> : Test _20() -<span class="lineNum"> 289 </span> : { -<span class="lineNum"> 290 </span> : // check that we're seeing all the tags for a facet -<span class="lineNum"> 291 </span> : std::set<Tag> t = tags().tags("accessibility"); -<span class="lineNum"> 292 </span> : assert_eq(t.size(), 10u); -<span class="lineNum"> 293 </span> : -<span class="lineNum"> 294 </span> : t = tags().tags("works-with-format"); -<span class="lineNum"> 295 </span> : assert_eq(t.size(), 33u); -<span class="lineNum"> 296 </span> : } -<span class="lineNum"> 297 </span> : -<span class="lineNum"> 298 </span> : // If there is no data, Vocabulary should work as an empty vocabulary -<span class="lineNum"> 299 </span><span class="lineCov"> 1 : Test _21()</span> -<span class="lineNum"> 300 </span> : { -<span class="lineNum"> 301 </span><span class="lineCov"> 1 : Path::OverrideDebtagsSourceDir odsd("./empty");</span> -<span class="lineNum"> 302 </span><span class="lineCov"> 2 : Path::OverrideDebtagsIndexDir odid("./empty");</span> -<span class="lineNum"> 303 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserSourceDir odusd("./empty");</span> -<span class="lineNum"> 304 </span><span class="lineCov"> 2 : Path::OverrideDebtagsUserIndexDir oduid("./empty");</span> -<span class="lineNum"> 305 </span><span class="lineCov"> 1 : Vocabulary empty;</span> -<span class="lineNum"> 306 </span> : -<span class="lineNum"> 307 </span><span class="lineCov"> 1 : assert(!empty.hasData());</span> -<span class="lineNum"> 308 </span> : -<span class="lineNum"> 309 </span><span class="lineCov"> 1 : set<Facet> facets = empty.facets();</span> -<span class="lineNum"> 310 </span><span class="lineCov"> 1 : assert_eq(facets.size(), 0u);</span> -<span class="lineNum"> 311 </span> : -<span class="lineNum"> 312 </span><span class="lineCov"> 1 : set<Tag> tags = empty.tags();</span> -<span class="lineNum"> 313 </span><span class="lineCov"> 1 : assert_eq(tags.size(), 0u);</span> -<span class="lineNum"> 314 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 315 </span> : -<span class="lineNum"> 316 </span> : }; -<span class="lineNum"> 317 </span> : -<span class="lineNum"> 318 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> |