diff options
Diffstat (limited to 'rep/ept')
93 files changed, 0 insertions, 20364 deletions
diff --git a/rep/ept/apt/apt.cc.gcov.html b/rep/ept/apt/apt.cc.gcov.html deleted file mode 100644 index ee60a5c..0000000 --- a/rep/ept/apt/apt.cc.gcov.html +++ /dev/null @@ -1,707 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/apt.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">323</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">76.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">248</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file -<span class="lineNum"> 2 </span> : * High-level front-end to libapt-pkg, as a data provider for the ept framework. -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /* -<span class="lineNum"> 6 </span> : * Copyright (C) 2007,2008 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 7 </span> : * -<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 12 </span> : * -<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 16 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 17 </span> : * -<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 21 </span> : */ -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <ept/apt/apt.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <apt-pkg/error.h> -<span class="lineNum"> 26 </span> : #include <apt-pkg/init.h> -<span class="lineNum"> 27 </span> : #include <apt-pkg/progress.h> -<span class="lineNum"> 28 </span> : #include <apt-pkg/sourcelist.h> -<span class="lineNum"> 29 </span> : #include <apt-pkg/pkgcachegen.h> -<span class="lineNum"> 30 </span> : #include <apt-pkg/policy.h> -<span class="lineNum"> 31 </span> : #include <apt-pkg/cachefile.h> -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 34 </span> : #include <sys/stat.h> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : #include <vector> -<span class="lineNum"> 37 </span> : #include <algorithm> -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : #include <iostream> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : using namespace std; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : namespace ept { -<span class="lineNum"> 44 </span> : namespace apt { -<span class="lineNum"> 45 </span> : using core::aptTimestamp; -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : Exception::Exception(const std::string& context) throw ()</span> -<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : : Generic(context)</span> -<span class="lineNum"> 49 </span> : { -<span class="lineNum"> 50 </span> : // Concatenate all errors and warnings found -<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : string err;</span> -<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : while (!_error->empty())</span> -<span class="lineNum"> 53 </span> : { -<span class="lineNum"> 54 </span><span class="lineNoCov"> 0 : bool type = _error->PopMessage(err);</span> -<span class="lineNum"> 55 </span><span class="lineNoCov"> 0 : if (type)</span> -<span class="lineNum"> 56 </span><span class="lineNoCov"> 0 : m_message += "E: " + err + "\n";</span> -<span class="lineNum"> 57 </span> : else -<span class="lineNum"> 58 </span><span class="lineNoCov"> 0 : m_message += "W: " + err + "\n";</span> -<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 29 : static void aptInit ()</span> -<span class="lineNum"> 63 </span> : { -<span class="lineNum"> 64 </span><span class="lineCov"> 29 : if (_config->FindB("Initialized"))</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 29 : return;</span> -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : if (!pkgInitConfig (*_config))</span> -<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : throw Exception("initialising apt configuration");</span> -<span class="lineNum"> 69 </span> : -<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : _config->Set("Initialized", 1);</span> -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span> : /* -<span class="lineNum"> 73 </span> : _config->Set("Dir", CACHE_DIR); -<span class="lineNum"> 74 </span> : _config->Set("Dir::Cache", "cache"); -<span class="lineNum"> 75 </span> : _config->Set("Dir::State", "state"); -<span class="lineNum"> 76 </span> : _config->Set("Dir::Etc", "etc"); -<span class="lineNum"> 77 </span> : _config->Set("Dir::State::status", CACHE_DIR "dpkg-status"); -<span class="lineNum"> 78 </span> : */ -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : if (!pkgInitSystem (*_config, _system))</span> -<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : throw Exception("initialising apt system");</span> -<span class="lineNum"> 81 </span> : } -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : struct AptImplementation -<span class="lineNum"> 84 </span> : { -<span class="lineNum"> 85 </span> : pkgSourceList* m_list; -<span class="lineNum"> 86 </span> : MMap *m; -<span class="lineNum"> 87 </span> : OpProgress progress; -<span class="lineNum"> 88 </span> : pkgCache* m_cache; -<span class="lineNum"> 89 </span> : pkgPolicy* m_policy; -<span class="lineNum"> 90 </span> : pkgCacheFile* m_depcache; -<span class="lineNum"> 91 </span> : time_t m_open_timestamp; -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span><span class="lineCov"> 29 : AptImplementation() : m_list(0), m(0), m_cache(0), m_policy(0), m_depcache(0), m_open_timestamp(0)</span> -<span class="lineNum"> 94 </span> : { -<span class="lineNum"> 95 </span> : // Init the apt library if needed -<span class="lineNum"> 96 </span><span class="lineCov"> 29 : aptInit();</span> -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span><span class="lineCov"> 29 : m_open_timestamp = aptTimestamp();</span> -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span><span class="lineCov"> 29 : m_list = new pkgSourceList;</span> -<span class="lineNum"> 101 </span><span class="lineCov"> 58 : if (!m_list->ReadMainList())</span> -<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : throw Exception("reading list of sources");</span> -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span><span class="lineCov"> 29 : bool res = pkgMakeStatusCache(*m_list, progress, &m, true);</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 29 : progress.Done();</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 29 : if (!res)</span> -<span class="lineNum"> 107 </span><span class="lineNoCov"> 0 : throw Exception("Reading the package lists or status file");</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span><span class="lineCov"> 29 : m_cache = new pkgCache(m);</span> -<span class="lineNum"> 110 </span><span class="lineCov"> 58 : m_policy = new pkgPolicy(m_cache);</span> -<span class="lineNum"> 111 </span><span class="lineCov"> 58 : if (!ReadPinFile(*m_policy))</span> -<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : throw Exception("Reading the policy pin file");</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 29 : }</span> -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span><span class="lineCov"> 29 : ~AptImplementation()</span> -<span class="lineNum"> 116 </span> : { -<span class="lineNum"> 117 </span><span class="lineCov"> 29 : if (m_depcache) delete m_depcache;</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 29 : if (m_policy) delete m_policy;</span> -<span class="lineNum"> 119 </span><span class="lineCov"> 29 : if (m_cache) delete m_cache;</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 29 : if (m) delete m;</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 29 : if (m_list) delete m_list;</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 29 : }</span> -<span class="lineNum"> 123 </span> : -<span class="lineNum"> 124 </span><span class="lineCov"> 3980 : pkgCache& cache()</span> -<span class="lineNum"> 125 </span> : { -<span class="lineNum"> 126 </span><span class="lineCov"> 3980 : return *m_cache;</span> -<span class="lineNum"> 127 </span> : } -<span class="lineNum"> 128 </span> : -<span class="lineNum"> 129 </span><span class="lineCov"> 16099 : pkgPolicy& policy()</span> -<span class="lineNum"> 130 </span> : { -<span class="lineNum"> 131 </span><span class="lineCov"> 16099 : return *m_policy;</span> -<span class="lineNum"> 132 </span> : } -<span class="lineNum"> 133 </span> : -<span class="lineNum"> 134 </span><span class="lineCov"> 1 : pkgCacheFile& depcache()</span> -<span class="lineNum"> 135 </span> : { -<span class="lineNum"> 136 </span><span class="lineCov"> 1 : if (!m_depcache)</span> -<span class="lineNum"> 137 </span> : { -<span class="lineNum"> 138 </span><span class="lineCov"> 1 : m_depcache = new pkgCacheFile;</span> -<span class="lineNum"> 139 </span><span class="lineCov"> 1 : if (!m_depcache->Open(progress, false))</span> -<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : throw Exception("Opening the cache file");</span> -<span class="lineNum"> 141 </span> : } -<span class="lineNum"> 142 </span><span class="lineCov"> 1 : return *m_depcache;</span> -<span class="lineNum"> 143 </span> : } -<span class="lineNum"> 144 </span> : }; -<span class="lineNum"> 145 </span> : -<span class="lineNum"> 146 </span> : // Sort a version list by package file locality -<span class="lineNum"> 147 </span><span class="lineCov"> 39519 : bool localityCompare(const pkgCache::VerFile* a, const pkgCache::VerFile* b)</span> -<span class="lineNum"> 148 </span> : { -<span class="lineNum"> 149 </span><span class="lineCov"> 39519 : if (a == 0 && b == 0)</span> -<span class="lineNum"> 150 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 151 </span><span class="lineCov"> 39519 : if (a == 0)</span> -<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 153 </span><span class="lineCov"> 39519 : if (b == 0)</span> -<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 155 </span> : -<span class="lineNum"> 156 </span><span class="lineCov"> 39519 : if (a->File == b->File)</span> -<span class="lineNum"> 157 </span><span class="lineCov"> 39060 : return a->Offset < b->Offset;</span> -<span class="lineNum"> 158 </span><span class="lineCov"> 459 : return a->File < b->File;</span> -<span class="lineNum"> 159 </span> : } -<span class="lineNum"> 160 </span> : -<span class="lineNum"> 161 </span> : // Iterate records using the algorithm used by apt-cache dumpavail -<span class="lineNum"> 162 </span> : struct RecordIteratorImpl -<span class="lineNum"> 163 </span> : { -<span class="lineNum"> 164 </span> : mutable int _ref; -<span class="lineNum"> 165 </span> : AptImplementation& apt; -<span class="lineNum"> 166 </span> : vector<pkgCache::VerFile*> vflist; -<span class="lineNum"> 167 </span> : pkgCache::PkgFileIterator lastFile; -<span class="lineNum"> 168 </span> : FileFd file; -<span class="lineNum"> 169 </span> : size_t lastOffset; -<span class="lineNum"> 170 </span> : -<span class="lineNum"> 171 </span><span class="lineCov"> 9 : RecordIteratorImpl(AptImplementation& apt) : _ref(0), apt(apt), vflist(0)</span> -<span class="lineNum"> 172 </span> : { -<span class="lineNum"> 173 </span> : // We already have an estimate of how many versions we're about to find -<span class="lineNum"> 174 </span><span class="lineCov"> 9 : vflist.reserve(apt.cache().HeaderP->PackageCount + 1);</span> -<span class="lineNum"> 175 </span> : -<span class="lineNum"> 176 </span> : // Populate the vector of versions to print -<span class="lineNum"> 177 </span><span class="lineCov"> 34002 : for (pkgCache::PkgIterator pi = apt.cache().PkgBegin(); !pi.end(); ++pi)</span> -<span class="lineNum"> 178 </span> : { -<span class="lineNum"> 179 </span><span class="lineCov"> 33993 : if (pi->VersionList == 0)</span> -<span class="lineNum"> 180 </span><span class="lineCov"> 17901 : continue;</span> -<span class="lineNum"> 181 </span> : -<span class="lineNum"> 182 </span> : /* Get the candidate version or fallback on the installed version, -<span class="lineNum"> 183 </span> : * as usual */ -<span class="lineNum"> 184 </span><span class="lineCov"> 16092 : pkgCache::VerIterator vi = apt.policy().GetCandidateVer(pi);</span> -<span class="lineNum"> 185 </span><span class="lineCov"> 16092 : if (vi.end() == true)</span> -<span class="lineNum"> 186 </span> : { -<span class="lineNum"> 187 </span><span class="lineCov"> 1926 : if (pi->CurrentVer == 0)</span> -<span class="lineNum"> 188 </span><span class="lineCov"> 1926 : continue;</span> -<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : vi = pi.CurrentVer();</span> -<span class="lineNum"> 190 </span> : } -<span class="lineNum"> 191 </span> : -<span class="lineNum"> 192 </span> : // Choose a valid file that contains the record for this version -<span class="lineNum"> 193 </span><span class="lineCov"> 14166 : pkgCache::VerFileIterator vfi = vi.FileList();</span> -<span class="lineNum"> 194 </span><span class="lineCov"> 24507 : for ( ; !vfi.end(); ++vfi)</span> -<span class="lineNum"> 195 </span><span class="lineCov"> 14166 : if ((vfi.File()->Flags & pkgCache::Flag::NotSource) == 0)</span> -<span class="lineNum"> 196 </span><span class="lineCov"> 3825 : break;</span> -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span> : // Handle packages whose candidate version is currently installed -<span class="lineNum"> 199 </span> : // from outside the archives (like from a locally built .deb -<span class="lineNum"> 200 </span><span class="lineCov"> 14166 : if (vfi.end() == true)</span> -<span class="lineNum"> 201 </span> : { -<span class="lineNum"> 202 </span><span class="lineCov"> 20682 : for (pkgCache::VerIterator cur = pi.VersionList(); cur.end() != true; cur++)</span> -<span class="lineNum"> 203 </span> : { -<span class="lineNum"> 204 </span><span class="lineCov"> 20763 : for (vfi = cur.FileList(); vfi.end() == false; vfi++)</span> -<span class="lineNum"> 205 </span> : { -<span class="lineNum"> 206 </span><span class="lineCov"> 10422 : if ((vfi.File()->Flags & pkgCache::Flag::NotSource) == 0)</span> -<span class="lineNum"> 207 </span> : { -<span class="lineNum"> 208 </span><span class="lineCov"> 81 : vfi = vi.FileList();</span> -<span class="lineNum"> 209 </span><span class="lineCov"> 81 : break;</span> -<span class="lineNum"> 210 </span> : } -<span class="lineNum"> 211 </span> : } -<span class="lineNum"> 212 </span> : -<span class="lineNum"> 213 </span><span class="lineCov"> 10422 : if (vfi.end() == false)</span> -<span class="lineNum"> 214 </span><span class="lineCov"> 81 : break;</span> -<span class="lineNum"> 215 </span> : } -<span class="lineNum"> 216 </span> : } -<span class="lineNum"> 217 </span><span class="lineCov"> 14166 : if (!vfi.end())</span> -<span class="lineNum"> 218 </span><span class="lineCov"> 3906 : vflist.push_back(vfi);</span> -<span class="lineNum"> 219 </span> : } -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span> : //cerr << vflist.size() << " versions found" << endl; -<span class="lineNum"> 222 </span> : -<span class="lineNum"> 223 </span><span class="lineCov"> 9 : sort(vflist.begin(), vflist.end(), localityCompare);</span> -<span class="lineNum"> 224 </span> : -<span class="lineNum"> 225 </span> : //for (size_t i = 0; i < vflist.size(); ++i) -<span class="lineNum"> 226 </span> : //{ -<span class="lineNum"> 227 </span> : // pkgCache::PkgFileIterator fi(apt.cache(), vflist[i]->File + apt.cache().PkgFileP); -<span class="lineNum"> 228 </span> : // cerr << i << ": " << fi.FileName() << ":" << vflist[i]->Offset << "-" << vflist[i]->Size << endl; -<span class="lineNum"> 229 </span> : //} -<span class="lineNum"> 230 </span> : //cerr << "Done indexing." << endl; -<span class="lineNum"> 231 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 232 </span> : -<span class="lineNum"> 233 </span><span class="lineCov"> 9 : ~RecordIteratorImpl()</span> -<span class="lineNum"> 234 </span> : { -<span class="lineNum"> 235 </span><span class="lineCov"> 9 : if (file.IsOpen())</span> -<span class="lineNum"> 236 </span><span class="lineCov"> 9 : file.Close();</span> -<span class="lineNum"> 237 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 238 </span> : -<span class="lineNum"> 239 </span><span class="lineCov"> 14 : void ref() { ++_ref; }</span> -<span class="lineNum"> 240 </span><span class="lineCov"> 14 : bool unref() { return --_ref == 0; }</span> -<span class="lineNum"> 241 </span> : -<span class="lineNum"> 242 </span><span class="lineCov"> 3906 : size_t size() { return vflist.size(); }</span> -<span class="lineNum"> 243 </span> : -<span class="lineNum"> 244 </span><span class="lineCov"> 3906 : string record(size_t idx)</span> -<span class="lineNum"> 245 </span> : { -<span class="lineNum"> 246 </span> : //cerr << "Access record " << idx << endl; -<span class="lineNum"> 247 </span> : //cerr << "lastfile: " << (lastFile.Cache() != 0) << endl; -<span class="lineNum"> 248 </span> : // We can't reuse the file that was already open: open the new one -<span class="lineNum"> 249 </span><span class="lineCov"> 3906 : if ((lastFile.Cache() == 0) || vflist[idx]->File + apt.cache().PkgFileP != lastFile)</span> -<span class="lineNum"> 250 </span> : { -<span class="lineNum"> 251 </span> : //cerr << "Needs open/reopen" << endl; -<span class="lineNum"> 252 </span><span class="lineCov"> 18 : lastFile = pkgCache::PkgFileIterator(apt.cache(), vflist[idx]->File + apt.cache().PkgFileP);</span> -<span class="lineNum"> 253 </span><span class="lineCov"> 18 : if (!lastFile.IsOk())</span> -<span class="lineNum"> 254 </span><span class="lineNoCov"> 0 : throw Exception(string("Reading the data record for a package from file ") + lastFile.FileName());</span> -<span class="lineNum"> 255 </span> : //cerr << "Ok for " << lastFile.FileName() << endl; -<span class="lineNum"> 256 </span><span class="lineCov"> 18 : if (file.IsOpen())</span> -<span class="lineNum"> 257 </span><span class="lineCov"> 9 : file.Close();</span> -<span class="lineNum"> 258 </span><span class="lineCov"> 18 : if (!file.Open(lastFile.FileName(), FileFd::ReadOnly))</span> -<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : throw Exception(string("Opening file ") + lastFile.FileName());</span> -<span class="lineNum"> 260 </span> : //cerr << "Opened " << lastFile.FileName() << endl; -<span class="lineNum"> 261 </span><span class="lineCov"> 18 : lastOffset = 0;</span> -<span class="lineNum"> 262 </span> : } -<span class="lineNum"> 263 </span> : -<span class="lineNum"> 264 </span> : //cerr << "Reading from " << lastFile.FileName() << ":" << vflist[idx]->Offset << "-" << vflist[idx]->Size << " (lastOffset: " << lastOffset << ")" << endl; -<span class="lineNum"> 265 </span> : -<span class="lineNum"> 266 </span> : // If we start near were we ended, avoid a seek and enlarge the read a bit -<span class="lineNum"> 267 </span><span class="lineCov"> 3906 : size_t slack = vflist[idx]->Offset - lastOffset;</span> -<span class="lineNum"> 268 </span> : //cerr << "Slack: " << slack << endl; -<span class="lineNum"> 269 </span><span class="lineCov"> 3906 : if (slack > 8)</span> -<span class="lineNum"> 270 </span> : { -<span class="lineNum"> 271 </span> : //cerr << "Slack too big: seek to " << vflist[idx]->Offset << endl; -<span class="lineNum"> 272 </span><span class="lineCov"> 171 : slack = 0;</span> -<span class="lineNum"> 273 </span><span class="lineCov"> 171 : if (!file.Seek(vflist[idx]->Offset))</span> -<span class="lineNum"> 274 </span><span class="lineNoCov"> 0 : throw Exception(string("Cannot seek to package record in file ") + lastFile.FileName());</span> -<span class="lineNum"> 275 </span> : } -<span class="lineNum"> 276 </span> : -<span class="lineNum"> 277 </span><span class="lineCov"> 3906 : char buffer[vflist[idx]->Size + slack + 1];</span> -<span class="lineNum"> 278 </span><span class="lineCov"> 3906 : if (!file.Read(buffer, vflist[idx]->Size + slack))</span> -<span class="lineNum"> 279 </span><span class="lineNoCov"> 0 : throw Exception(string("Cannot read package record in file ") + lastFile.FileName());</span> -<span class="lineNum"> 280 </span><span class="lineCov"> 3906 : buffer[vflist[idx]->Size + slack] = '\n';</span> -<span class="lineNum"> 281 </span> : //cerr << "Data read (slack: " << slack << ")" << endl; -<span class="lineNum"> 282 </span> : -<span class="lineNum"> 283 </span><span class="lineCov"> 3906 : lastOffset = vflist[idx]->Offset + vflist[idx]->Size;</span> -<span class="lineNum"> 284 </span> : -<span class="lineNum"> 285 </span><span class="lineCov"> 3906 : return string(buffer+slack);</span> -<span class="lineNum"> 286 </span> : } -<span class="lineNum"> 287 </span> : }; -<span class="lineNum"> 288 </span> : -<span class="lineNum"> 289 </span><span class="lineCov"> 20 : Apt::Iterator::Iterator(const Iterator& i)</span> -<span class="lineNum"> 290 </span> : { -<span class="lineNum"> 291 </span><span class="lineCov"> 20 : if (i.cur)</span> -<span class="lineNum"> 292 </span> : { -<span class="lineNum"> 293 </span><span class="lineCov"> 10 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span> -<span class="lineNum"> 294 </span><span class="lineCov"> 10 : *p = *static_cast<pkgCache::PkgIterator*>(i.cur);</span> -<span class="lineNum"> 295 </span><span class="lineCov"> 10 : cur = p;</span> -<span class="lineNum"> 296 </span> : } else -<span class="lineNum"> 297 </span><span class="lineCov"> 10 : cur = 0;</span> -<span class="lineNum"> 298 </span><span class="lineCov"> 20 : }</span> -<span class="lineNum"> 299 </span> : -<span class="lineNum"> 300 </span><span class="lineNoCov"> 0 : Apt::Iterator& Apt::Iterator::operator=(const Iterator& i)</span> -<span class="lineNum"> 301 </span> : { -<span class="lineNum"> 302 </span><span class="lineNoCov"> 0 : if (cur != i.cur)</span> -<span class="lineNum"> 303 </span> : { -<span class="lineNum"> 304 </span><span class="lineNoCov"> 0 : if (cur) delete static_cast<pkgCache::PkgIterator*>(cur);</span> -<span class="lineNum"> 305 </span><span class="lineNoCov"> 0 : if (i.cur)</span> -<span class="lineNum"> 306 </span> : { -<span class="lineNum"> 307 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span> -<span class="lineNum"> 308 </span><span class="lineNoCov"> 0 : *p = *static_cast<pkgCache::PkgIterator*>(i.cur);</span> -<span class="lineNum"> 309 </span><span class="lineNoCov"> 0 : cur = p;</span> -<span class="lineNum"> 310 </span> : } else -<span class="lineNum"> 311 </span><span class="lineNoCov"> 0 : cur = 0;</span> -<span class="lineNum"> 312 </span> : } -<span class="lineNum"> 313 </span><span class="lineNoCov"> 0 : return *this;</span> -<span class="lineNum"> 314 </span> : } -<span class="lineNum"> 315 </span> : -<span class="lineNum"> 316 </span><span class="lineCov"> 3605 : Apt::Iterator::~Iterator()</span> -<span class="lineNum"> 317 </span> : { -<span class="lineNum"> 318 </span><span class="lineCov"> 3605 : if (cur) delete static_cast<pkgCache::PkgIterator*>(cur);</span> -<span class="lineNum"> 319 </span><span class="lineCov"> 3605 : }</span> -<span class="lineNum"> 320 </span><span class="lineCov"> 5364 : std::string Apt::Iterator::operator*()</span> -<span class="lineNum"> 321 </span> : { -<span class="lineNum"> 322 </span><span class="lineCov"> 5364 : return static_cast<pkgCache::PkgIterator*>(cur)->Name();</span> -<span class="lineNum"> 323 </span> : } -<span class="lineNum"> 324 </span><span class="lineCov"> 7152 : Apt::Iterator& Apt::Iterator::operator++()</span> -<span class="lineNum"> 325 </span> : { -<span class="lineNum"> 326 </span><span class="lineCov"> 7152 : pkgCache::PkgIterator* iter = static_cast<pkgCache::PkgIterator*>(cur);</span> -<span class="lineNum"> 327 </span><span class="lineCov"> 7152 : ++*iter;</span> -<span class="lineNum"> 328 </span><span class="lineCov"> 22260 : while (!iter->end() && (*iter)->VersionList == 0)</span> -<span class="lineNum"> 329 </span><span class="lineCov"> 7956 : ++*iter;</span> -<span class="lineNum"> 330 </span><span class="lineCov"> 7152 : if (iter->end())</span> -<span class="lineNum"> 331 </span> : { -<span class="lineNum"> 332 </span><span class="lineCov"> 4 : delete iter;</span> -<span class="lineNum"> 333 </span><span class="lineCov"> 4 : cur = 0;</span> -<span class="lineNum"> 334 </span> : } -<span class="lineNum"> 335 </span><span class="lineCov"> 7152 : return *this;</span> -<span class="lineNum"> 336 </span> : } -<span class="lineNum"> 337 </span><span class="lineNoCov"> 0 : bool Apt::Iterator::operator==(const Iterator& i) const</span> -<span class="lineNum"> 338 </span> : { -<span class="lineNum"> 339 </span><span class="lineNoCov"> 0 : if (cur == 0 && i.cur == 0)</span> -<span class="lineNum"> 340 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 341 </span><span class="lineNoCov"> 0 : if (cur == 0 || i.cur == 0)</span> -<span class="lineNum"> 342 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 343 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter1 = static_cast<pkgCache::PkgIterator*>(cur);</span> -<span class="lineNum"> 344 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter2 = static_cast<pkgCache::PkgIterator*>(i.cur);</span> -<span class="lineNum"> 345 </span><span class="lineNoCov"> 0 : return *iter1 == *iter2;</span> -<span class="lineNum"> 346 </span> : } -<span class="lineNum"> 347 </span><span class="lineCov"> 7157 : bool Apt::Iterator::operator!=(const Iterator& i) const</span> -<span class="lineNum"> 348 </span> : { -<span class="lineNum"> 349 </span><span class="lineCov"> 7157 : if (cur == 0 && i.cur == 0)</span> -<span class="lineNum"> 350 </span><span class="lineCov"> 4 : return false;</span> -<span class="lineNum"> 351 </span><span class="lineCov"> 7153 : if (cur == 0 || i.cur == 0)</span> -<span class="lineNum"> 352 </span><span class="lineCov"> 7153 : return true;</span> -<span class="lineNum"> 353 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter1 = static_cast<pkgCache::PkgIterator*>(cur);</span> -<span class="lineNum"> 354 </span><span class="lineNoCov"> 0 : pkgCache::PkgIterator* iter2 = static_cast<pkgCache::PkgIterator*>(i.cur);</span> -<span class="lineNum"> 355 </span><span class="lineNoCov"> 0 : return *iter1 != *iter2;</span> -<span class="lineNum"> 356 </span> : } -<span class="lineNum"> 357 </span> : -<span class="lineNum"> 358 </span> : -<span class="lineNum"> 359 </span><span class="lineCov"> 9 : Apt::RecordIterator::RecordIterator(RecordIteratorImpl* impl, size_t pos)</span> -<span class="lineNum"> 360 </span><span class="lineCov"> 9 : : impl(impl), pos(pos), cur_pos(pos)</span> -<span class="lineNum"> 361 </span> : { -<span class="lineNum"> 362 </span><span class="lineCov"> 9 : if (impl)</span> -<span class="lineNum"> 363 </span> : { -<span class="lineNum"> 364 </span><span class="lineCov"> 9 : impl->ref();</span> -<span class="lineNum"> 365 </span><span class="lineCov"> 9 : cur = impl->record(pos);</span> -<span class="lineNum"> 366 </span><span class="lineCov"> 9 : cur_pos = pos;</span> -<span class="lineNum"> 367 </span> : } -<span class="lineNum"> 368 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 369 </span><span class="lineCov"> 10 : Apt::RecordIterator::RecordIterator(const RecordIterator& r)</span> -<span class="lineNum"> 370 </span><span class="lineCov"> 10 : : impl(r.impl), pos(r.pos), cur(r.cur), cur_pos(r.cur_pos)</span> -<span class="lineNum"> 371 </span> : { -<span class="lineNum"> 372 </span><span class="lineCov"> 10 : if (impl)</span> -<span class="lineNum"> 373 </span><span class="lineCov"> 5 : impl->ref();</span> -<span class="lineNum"> 374 </span><span class="lineCov"> 10 : }</span> -<span class="lineNum"> 375 </span><span class="lineCov"> 3500 : Apt::RecordIterator::~RecordIterator()</span> -<span class="lineNum"> 376 </span> : { -<span class="lineNum"> 377 </span><span class="lineCov"> 3500 : if (impl && impl->unref())</span> -<span class="lineNum"> 378 </span><span class="lineCov"> 1 : delete impl;</span> -<span class="lineNum"> 379 </span><span class="lineCov"> 3500 : }</span> -<span class="lineNum"> 380 </span><span class="lineCov"> 3906 : std::string Apt::RecordIterator::operator*()</span> -<span class="lineNum"> 381 </span> : { -<span class="lineNum"> 382 </span><span class="lineCov"> 3906 : if (cur_pos != pos)</span> -<span class="lineNum"> 383 </span> : { -<span class="lineNum"> 384 </span><span class="lineCov"> 3464 : cur = impl->record(pos);</span> -<span class="lineNum"> 385 </span><span class="lineCov"> 3464 : cur_pos = pos;</span> -<span class="lineNum"> 386 </span> : } -<span class="lineNum"> 387 </span><span class="lineCov"> 3906 : return cur;</span> -<span class="lineNum"> 388 </span> : } -<span class="lineNum"> 389 </span><span class="lineCov"> 868 : std::string* Apt::RecordIterator::operator->()</span> -<span class="lineNum"> 390 </span> : { -<span class="lineNum"> 391 </span><span class="lineCov"> 868 : if (cur_pos != pos)</span> -<span class="lineNum"> 392 </span> : { -<span class="lineNum"> 393 </span><span class="lineCov"> 433 : cur = impl->record(pos);</span> -<span class="lineNum"> 394 </span><span class="lineCov"> 433 : cur_pos = pos;</span> -<span class="lineNum"> 395 </span> : } -<span class="lineNum"> 396 </span><span class="lineCov"> 868 : return &cur;</span> -<span class="lineNum"> 397 </span> : } -<span class="lineNum"> 398 </span><span class="lineCov"> 3906 : Apt::RecordIterator& Apt::RecordIterator::operator++()</span> -<span class="lineNum"> 399 </span> : { -<span class="lineNum"> 400 </span><span class="lineCov"> 3906 : ++pos;</span> -<span class="lineNum"> 401 </span><span class="lineCov"> 3906 : if (pos >= impl->size())</span> -<span class="lineNum"> 402 </span> : { -<span class="lineNum"> 403 </span> : // If we reach the end, we become an end iterator -<span class="lineNum"> 404 </span><span class="lineCov"> 9 : if (impl && impl->unref())</span> -<span class="lineNum"> 405 </span><span class="lineCov"> 8 : delete impl;</span> -<span class="lineNum"> 406 </span><span class="lineCov"> 9 : impl = 0;</span> -<span class="lineNum"> 407 </span><span class="lineCov"> 9 : pos = 0;</span> -<span class="lineNum"> 408 </span> : } -<span class="lineNum"> 409 </span><span class="lineCov"> 3906 : return *this;</span> -<span class="lineNum"> 410 </span> : } -<span class="lineNum"> 411 </span><span class="lineNoCov"> 0 : Apt::RecordIterator& Apt::RecordIterator::operator=(const RecordIterator& r)</span> -<span class="lineNum"> 412 </span> : { -<span class="lineNum"> 413 </span> : // Increment first, to avoid it reaching zero on assignment to self -<span class="lineNum"> 414 </span><span class="lineNoCov"> 0 : if (r.impl) r.impl->ref();</span> -<span class="lineNum"> 415 </span><span class="lineNoCov"> 0 : if (impl && impl->unref())</span> -<span class="lineNum"> 416 </span><span class="lineNoCov"> 0 : delete impl;</span> -<span class="lineNum"> 417 </span><span class="lineNoCov"> 0 : impl = r.impl;</span> -<span class="lineNum"> 418 </span><span class="lineNoCov"> 0 : pos = r.pos;</span> -<span class="lineNum"> 419 </span><span class="lineNoCov"> 0 : cur = r.cur;</span> -<span class="lineNum"> 420 </span><span class="lineNoCov"> 0 : cur_pos = r.cur_pos;</span> -<span class="lineNum"> 421 </span><span class="lineNoCov"> 0 : return *this;</span> -<span class="lineNum"> 422 </span> : } -<span class="lineNum"> 423 </span><span class="lineNoCov"> 0 : bool Apt::RecordIterator::operator==(const RecordIterator& ri) const</span> -<span class="lineNum"> 424 </span> : { -<span class="lineNum"> 425 </span><span class="lineNoCov"> 0 : return impl == ri.impl && pos == ri.pos;</span> -<span class="lineNum"> 426 </span> : } -<span class="lineNum"> 427 </span><span class="lineCov"> 3915 : bool Apt::RecordIterator::operator!=(const RecordIterator& ri) const</span> -<span class="lineNum"> 428 </span> : { -<span class="lineNum"> 429 </span><span class="lineCov"> 3915 : return impl != ri.impl || pos != ri.pos;</span> -<span class="lineNum"> 430 </span> : } -<span class="lineNum"> 431 </span> : -<span class="lineNum"> 432 </span> : -<span class="lineNum"> 433 </span><span class="lineCov"> 28 : Apt::Apt() : impl(new AptImplementation()) {}</span> -<span class="lineNum"> 434 </span><span class="lineCov"> 28 : Apt::~Apt() { delete impl; }</span> -<span class="lineNum"> 435 </span> : -<span class="lineNum"> 436 </span><span class="lineCov"> 4 : Apt::iterator Apt::begin() const</span> -<span class="lineNum"> 437 </span> : { -<span class="lineNum"> 438 </span><span class="lineCov"> 4 : pkgCache::PkgIterator* p = new pkgCache::PkgIterator;</span> -<span class="lineNum"> 439 </span><span class="lineCov"> 4 : *p = impl->cache().PkgBegin();</span> -<span class="lineNum"> 440 </span><span class="lineCov"> 4 : return Apt::Iterator(p);</span> -<span class="lineNum"> 441 </span> : } -<span class="lineNum"> 442 </span> : -<span class="lineNum"> 443 </span><span class="lineCov"> 3581 : Apt::iterator Apt::end() const</span> -<span class="lineNum"> 444 </span> : { -<span class="lineNum"> 445 </span><span class="lineCov"> 3581 : return Apt::Iterator();</span> -<span class="lineNum"> 446 </span> : } -<span class="lineNum"> 447 </span> : -<span class="lineNum"> 448 </span><span class="lineCov"> 9 : Apt::record_iterator Apt::recordBegin() const</span> -<span class="lineNum"> 449 </span> : { -<span class="lineNum"> 450 </span><span class="lineCov"> 9 : return Apt::RecordIterator(new RecordIteratorImpl(*impl));</span> -<span class="lineNum"> 451 </span> : } -<span class="lineNum"> 452 </span> : -<span class="lineNum"> 453 </span><span class="lineCov"> 3481 : Apt::record_iterator Apt::recordEnd() const</span> -<span class="lineNum"> 454 </span> : { -<span class="lineNum"> 455 </span><span class="lineCov"> 3481 : return Apt::RecordIterator();</span> -<span class="lineNum"> 456 </span> : } -<span class="lineNum"> 457 </span> : -<span class="lineNum"> 458 </span><span class="lineNoCov"> 0 : size_t Apt::size() const</span> -<span class="lineNum"> 459 </span> : { -<span class="lineNum"> 460 </span><span class="lineNoCov"> 0 : return impl->cache().HeaderP->PackageCount;</span> -<span class="lineNum"> 461 </span> : } -<span class="lineNum"> 462 </span> : -<span class="lineNum"> 463 </span><span class="lineCov"> 16 : time_t Apt::timestamp()</span> -<span class="lineNum"> 464 </span> : { -<span class="lineNum"> 465 </span><span class="lineCov"> 16 : return aptTimestamp();</span> -<span class="lineNum"> 466 </span> : } -<span class="lineNum"> 467 </span> : -<span class="lineNum"> 468 </span><span class="lineCov"> 5 : bool Apt::isValid(const std::string& pkg) const</span> -<span class="lineNum"> 469 </span> : { -<span class="lineNum"> 470 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = impl->cache().FindPkg(pkg);</span> -<span class="lineNum"> 471 </span><span class="lineCov"> 5 : return !pi.end();</span> -<span class="lineNum"> 472 </span> : } -<span class="lineNum"> 473 </span> : -<span class="lineNum"> 474 </span><span class="lineCov"> 4 : Version Apt::validate(const Version& ver) const</span> -<span class="lineNum"> 475 </span> : { -<span class="lineNum"> 476 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl->cache().FindPkg(ver.name());</span> -<span class="lineNum"> 477 </span><span class="lineCov"> 5 : if (pi.end()) return Version();</span> -<span class="lineNum"> 478 </span><span class="lineCov"> 4 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); vi++)</span> -<span class="lineNum"> 479 </span> : { -<span class="lineNum"> 480 </span><span class="lineCov"> 3 : const char* v = vi.VerStr();</span> -<span class="lineNum"> 481 </span><span class="lineCov"> 3 : if (v == 0) continue;</span> -<span class="lineNum"> 482 </span><span class="lineCov"> 3 : if (ver.version() == v)</span> -<span class="lineNum"> 483 </span><span class="lineCov"> 2 : return ver;</span> -<span class="lineNum"> 484 </span> : } -<span class="lineNum"> 485 </span><span class="lineCov"> 1 : return Version();</span> -<span class="lineNum"> 486 </span> : } -<span class="lineNum"> 487 </span> : -<span class="lineNum"> 488 </span><span class="lineCov"> 4 : Version Apt::candidateVersion(const std::string& pkg) const</span> -<span class="lineNum"> 489 </span> : { -<span class="lineNum"> 490 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl->cache().FindPkg(pkg);</span> -<span class="lineNum"> 491 </span><span class="lineCov"> 4 : if (pi.end()) return Version();</span> -<span class="lineNum"> 492 </span><span class="lineCov"> 3 : pkgCache::VerIterator vi = impl->policy().GetCandidateVer(pi);</span> -<span class="lineNum"> 493 </span><span class="lineCov"> 3 : if (vi.end()) return Version();</span> -<span class="lineNum"> 494 </span><span class="lineCov"> 3 : return Version(pkg, vi.VerStr());</span> -<span class="lineNum"> 495 </span> : } -<span class="lineNum"> 496 </span> : -<span class="lineNum"> 497 </span><span class="lineCov"> 2 : Version Apt::installedVersion(const std::string& pkg) const</span> -<span class="lineNum"> 498 </span> : { -<span class="lineNum"> 499 </span><span class="lineCov"> 2 : pkgCache::PkgIterator pi = impl->cache().FindPkg(pkg);</span> -<span class="lineNum"> 500 </span><span class="lineCov"> 2 : if (pi.end()) return Version();</span> -<span class="lineNum"> 501 </span><span class="lineCov"> 1 : if (pi->CurrentVer == 0) return Version();</span> -<span class="lineNum"> 502 </span><span class="lineCov"> 1 : pkgCache::VerIterator vi = pi.CurrentVer();</span> -<span class="lineNum"> 503 </span><span class="lineCov"> 1 : if (vi.end()) return Version();</span> -<span class="lineNum"> 504 </span><span class="lineCov"> 1 : return Version(pkg, vi.VerStr());</span> -<span class="lineNum"> 505 </span> : } -<span class="lineNum"> 506 </span> : -<span class="lineNum"> 507 </span><span class="lineCov"> 4 : Version Apt::anyVersion(const std::string& pkg) const</span> -<span class="lineNum"> 508 </span> : { -<span class="lineNum"> 509 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl->cache().FindPkg(pkg);</span> -<span class="lineNum"> 510 </span><span class="lineCov"> 4 : if (pi.end()) return Version();</span> -<span class="lineNum"> 511 </span> : -<span class="lineNum"> 512 </span><span class="lineCov"> 3 : pkgCache::VerIterator vi = impl->policy().GetCandidateVer(pi);</span> -<span class="lineNum"> 513 </span><span class="lineCov"> 3 : if (vi.end())</span> -<span class="lineNum"> 514 </span> : { -<span class="lineNum"> 515 </span><span class="lineNoCov"> 0 : if (pi->CurrentVer == 0) return Version();</span> -<span class="lineNum"> 516 </span><span class="lineNoCov"> 0 : vi = pi.CurrentVer();</span> -<span class="lineNum"> 517 </span><span class="lineNoCov"> 0 : if (vi.end()) return Version();</span> -<span class="lineNum"> 518 </span> : } -<span class="lineNum"> 519 </span><span class="lineCov"> 3 : return Version(pkg, vi.VerStr());</span> -<span class="lineNum"> 520 </span> : } -<span class="lineNum"> 521 </span> : -<span class="lineNum"> 522 </span><span class="lineCov"> 2 : PackageState Apt::state(const std::string& pkg) const</span> -<span class="lineNum"> 523 </span> : { -<span class="lineNum"> 524 </span><span class="lineCov"> 2 : pkgCache::PkgIterator pi = impl->cache().FindPkg(pkg);</span> -<span class="lineNum"> 525 </span><span class="lineCov"> 2 : if (pi.end()) return PackageState();</span> -<span class="lineNum"> 526 </span><span class="lineCov"> 1 : pkgDepCache::StateCache sc = impl->depcache()[pi];</span> -<span class="lineNum"> 527 </span> : -<span class="lineNum"> 528 </span><span class="lineCov"> 1 : unsigned int flags = PackageState::Valid;</span> -<span class="lineNum"> 529 </span> : -<span class="lineNum"> 530 </span> : // Check if the package is installed -<span class="lineNum"> 531 </span><span class="lineCov"> 1 : if (pi->CurrentState != pkgCache::State::ConfigFiles &&</span> -<span class="lineNum"> 532 </span> : pi->CurrentState != pkgCache::State::NotInstalled && -<span class="lineNum"> 533 </span> : pi->CurrentVer != 0) -<span class="lineNum"> 534 </span> : { -<span class="lineNum"> 535 </span> : // Try to get a VerIterator to the installed version -<span class="lineNum"> 536 </span><span class="lineCov"> 1 : pkgCache::VerIterator inst = pi.CurrentVer();</span> -<span class="lineNum"> 537 </span><span class="lineCov"> 1 : if (!inst.end())</span> -<span class="lineNum"> 538 </span> : { -<span class="lineNum"> 539 </span> : // If we made it so far, it is installed -<span class="lineNum"> 540 </span><span class="lineCov"> 1 : flags |= PackageState::Installed;</span> -<span class="lineNum"> 541 </span> : -<span class="lineNum"> 542 </span> : // Now check if it is upgradable -<span class="lineNum"> 543 </span><span class="lineCov"> 1 : pkgCache::VerIterator cand = impl->policy().GetCandidateVer(pi);</span> -<span class="lineNum"> 544 </span> : -<span class="lineNum"> 545 </span> : // If the candidate version is different than the installed one, then -<span class="lineNum"> 546 </span> : // it is installable -<span class="lineNum"> 547 </span><span class="lineCov"> 1 : if (!cand.end() && inst != cand)</span> -<span class="lineNum"> 548 </span><span class="lineNoCov"> 0 : flags |= PackageState::Upgradable;</span> -<span class="lineNum"> 549 </span> : } -<span class="lineNum"> 550 </span> : } -<span class="lineNum"> 551 </span><span class="lineCov"> 1 : if (sc.Install())</span> -<span class="lineNum"> 552 </span><span class="lineNoCov"> 0 : flags |= PackageState::Install;</span> -<span class="lineNum"> 553 </span><span class="lineCov"> 1 : if ((sc.iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall)</span> -<span class="lineNum"> 554 </span><span class="lineNoCov"> 0 : flags |= PackageState::ReInstall;</span> -<span class="lineNum"> 555 </span><span class="lineCov"> 1 : if (sc.Keep())</span> -<span class="lineNum"> 556 </span><span class="lineCov"> 1 : flags |= PackageState::Keep;</span> -<span class="lineNum"> 557 </span><span class="lineCov"> 1 : if (sc.Delete())</span> -<span class="lineNum"> 558 </span><span class="lineNoCov"> 0 : flags |= PackageState::Remove;</span> -<span class="lineNum"> 559 </span><span class="lineCov"> 1 : if ((sc.iFlags & pkgDepCache::Purge) == pkgDepCache::Purge)</span> -<span class="lineNum"> 560 </span><span class="lineNoCov"> 0 : flags |= PackageState::Purge;</span> -<span class="lineNum"> 561 </span><span class="lineCov"> 1 : if (sc.NowBroken())</span> -<span class="lineNum"> 562 </span><span class="lineNoCov"> 0 : flags |= PackageState::NowBroken;</span> -<span class="lineNum"> 563 </span><span class="lineCov"> 1 : if (sc.InstBroken())</span> -<span class="lineNum"> 564 </span><span class="lineNoCov"> 0 : flags |= PackageState::WillBreak;</span> -<span class="lineNum"> 565 </span> : -<span class="lineNum"> 566 </span><span class="lineCov"> 1 : return PackageState(flags);</span> -<span class="lineNum"> 567 </span> : } -<span class="lineNum"> 568 </span> : -<span class="lineNum"> 569 </span><span class="lineCov"> 1 : std::string Apt::rawRecord(const std::string& ver) const</span> -<span class="lineNum"> 570 </span> : { -<span class="lineNum"> 571 </span> : // TODO: possibly reimplement using a single lump of apt code, to avoid -<span class="lineNum"> 572 </span> : // repeating lookups -<span class="lineNum"> 573 </span><span class="lineCov"> 1 : return rawRecord(anyVersion(ver));</span> -<span class="lineNum"> 574 </span> : } -<span class="lineNum"> 575 </span> : -<span class="lineNum"> 576 </span><span class="lineCov"> 4 : std::string Apt::rawRecord(const Version& ver) const</span> -<span class="lineNum"> 577 </span> : { -<span class="lineNum"> 578 </span><span class="lineCov"> 4 : pkgCache::PkgIterator pi = impl->cache().FindPkg(ver.name());</span> -<span class="lineNum"> 579 </span><span class="lineCov"> 4 : if (pi.end()) return std::string();</span> -<span class="lineNum"> 580 </span><span class="lineCov"> 5 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); vi++)</span> -<span class="lineNum"> 581 </span> : { -<span class="lineNum"> 582 </span><span class="lineCov"> 4 : const char* v = vi.VerStr();</span> -<span class="lineNum"> 583 </span><span class="lineCov"> 4 : if (v == 0) continue;</span> -<span class="lineNum"> 584 </span><span class="lineCov"> 4 : if (ver.version() == v)</span> -<span class="lineNum"> 585 </span> : { -<span class="lineNum"> 586 </span> : // Code taken and adapted from apt-cache's DisplayRecord -<span class="lineNum"> 587 </span> : -<span class="lineNum"> 588 </span> : // Find an appropriate file -<span class="lineNum"> 589 </span><span class="lineCov"> 3 : pkgCache::VerFileIterator vfi = vi.FileList();</span> -<span class="lineNum"> 590 </span><span class="lineCov"> 3 : for (; !vfi.end(); vfi++)</span> -<span class="lineNum"> 591 </span><span class="lineCov"> 3 : if ((vfi.File()->Flags & pkgCache::Flag::NotSource) == 0)</span> -<span class="lineNum"> 592 </span><span class="lineCov"> 3 : break;</span> -<span class="lineNum"> 593 </span><span class="lineCov"> 3 : if (vfi.end())</span> -<span class="lineNum"> 594 </span><span class="lineNoCov"> 0 : vfi = vi.FileList();</span> -<span class="lineNum"> 595 </span> : -<span class="lineNum"> 596 </span> : // Check and load the package list file -<span class="lineNum"> 597 </span><span class="lineCov"> 3 : pkgCache::PkgFileIterator pfi = vfi.File();</span> -<span class="lineNum"> 598 </span><span class="lineCov"> 3 : if (!pfi.IsOk())</span> -<span class="lineNum"> 599 </span><span class="lineNoCov"> 0 : throw Exception(string("Reading the data record for a package version from file ") + pfi.FileName());</span> -<span class="lineNum"> 600 </span> : -<span class="lineNum"> 601 </span><span class="lineCov"> 3 : FileFd pkgf(pfi.FileName(), FileFd::ReadOnly);</span> -<span class="lineNum"> 602 </span><span class="lineCov"> 6 : if (_error->PendingError() == true)</span> -<span class="lineNum"> 603 </span><span class="lineNoCov"> 0 : return std::string();</span> -<span class="lineNum"> 604 </span> : -<span class="lineNum"> 605 </span> : // Read the record and then write it out again. -<span class="lineNum"> 606 </span><span class="lineCov"> 3 : char* buffer = new char[vfi->Size+1];</span> -<span class="lineNum"> 607 </span><span class="lineCov"> 3 : buffer[vfi->Size] = '\n';</span> -<span class="lineNum"> 608 </span><span class="lineCov"> 3 : if (!pkgf.Seek(vfi->Offset) || !pkgf.Read(buffer, vfi->Size))</span> -<span class="lineNum"> 609 </span> : { -<span class="lineNum"> 610 </span><span class="lineNoCov"> 0 : delete[] buffer;</span> -<span class="lineNum"> 611 </span><span class="lineNoCov"> 0 : return std::string();</span> -<span class="lineNum"> 612 </span> : } -<span class="lineNum"> 613 </span> : -<span class="lineNum"> 614 </span><span class="lineCov"> 3 : std::string res(buffer, vfi->Size);</span> -<span class="lineNum"> 615 </span><span class="lineCov"> 6 : delete[] buffer;</span> -<span class="lineNum"> 616 </span><span class="lineCov"> 3 : return res;</span> -<span class="lineNum"> 617 </span> : } -<span class="lineNum"> 618 </span> : } -<span class="lineNum"> 619 </span><span class="lineCov"> 1 : return std::string();</span> -<span class="lineNum"> 620 </span> : } -<span class="lineNum"> 621 </span> : -<span class="lineNum"> 622 </span><span class="lineCov"> 2 : void Apt::checkCacheUpdates()</span> -<span class="lineNum"> 623 </span> : { -<span class="lineNum"> 624 </span><span class="lineCov"> 2 : if (impl->m_open_timestamp < timestamp())</span> -<span class="lineNum"> 625 </span> : { -<span class="lineNum"> 626 </span> : // Crudely reopen everything -<span class="lineNum"> 627 </span><span class="lineCov"> 1 : delete impl;</span> -<span class="lineNum"> 628 </span><span class="lineCov"> 1 : impl = new AptImplementation;</span> -<span class="lineNum"> 629 </span> : } -<span class="lineNum"> 630 </span><span class="lineCov"> 2 : }</span> -<span class="lineNum"> 631 </span> : -<span class="lineNum"> 632 </span><span class="lineCov"> 1 : void Apt::invalidateTimestamp()</span> -<span class="lineNum"> 633 </span> : { -<span class="lineNum"> 634 </span><span class="lineCov"> 1 : impl->m_open_timestamp = 0;</span> -<span class="lineNum"> 635 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 636 </span> : -<span class="lineNum"> 637 </span> : } -<span class="lineNum"> 638 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 639 </span> : -<span class="lineNum"> 640 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/apt.h.gcov.html b/rep/ept/apt/apt.h.gcov.html deleted file mode 100644 index 7bde4c7..0000000 --- a/rep/ept/apt/apt.h.gcov.html +++ /dev/null @@ -1,286 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/apt.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">6</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">50.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> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #ifndef EPT_APT_APT_H -<span class="lineNum"> 3 </span> : #define EPT_APT_APT_H -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /** \file -<span class="lineNum"> 6 </span> : * High-level front-end to libapt-pkg, as a data provider for the ept framework. -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2007,2008 Enrico Zini <enrico@enricozini.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 <wibble/exception.h> -<span class="lineNum"> 28 </span> : #include <ept/apt/version.h> -<span class="lineNum"> 29 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <iterator> -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : namespace ept { -<span class="lineNum"> 34 </span> : namespace apt { -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : class Exception : public wibble::exception::Generic -<span class="lineNum"> 37 </span> : { -<span class="lineNum"> 38 </span> : protected: -<span class="lineNum"> 39 </span> : std::string m_message; -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : public: -<span class="lineNum"> 42 </span> : Exception(const std::string& context) throw (); -<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : ~Exception() throw () {}</span> -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : virtual const char* type() const throw () { return "Apt"; }</span> -<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : virtual std::string desc() const throw () { return m_message; }</span> -<span class="lineNum"> 47 </span> : }; -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span> : class Apt; -<span class="lineNum"> 50 </span> : class AptImplementation; -<span class="lineNum"> 51 </span> : class RecordIteratorImpl; -<span class="lineNum"> 52 </span> : using core::PackageState; -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span> : /** -<span class="lineNum"> 55 </span> : * High-level access to the Apt cache, as a data provider for the ept -<span class="lineNum"> 56 </span> : * framework. -<span class="lineNum"> 57 </span> : * -<span class="lineNum"> 58 </span> : * This class wraps the Apt cache and allows to query it in various ways. -<span class="lineNum"> 59 </span> : */ -<span class="lineNum"> 60 </span> : class Apt -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span> : protected: -<span class="lineNum"> 63 </span> : AptImplementation* impl; -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span> : public: -<span class="lineNum"> 66 </span> : // Iterate Packages in the Apt cache -<span class="lineNum"> 67 </span> : class Iterator : public std::iterator<std::input_iterator_tag, std::string, void, void, void> -<span class="lineNum"> 68 </span> : { -<span class="lineNum"> 69 </span> : void* cur; -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span> : protected: -<span class="lineNum"> 72 </span> : // Construct a valid iterator -<span class="lineNum"> 73 </span><span class="lineCov"> 4 : Iterator(void* cur) : cur(cur) {}</span> -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span> : // Construct and end iterator -<span class="lineNum"> 76 </span><span class="lineCov"> 3581 : Iterator() : cur(0) {}</span> -<span class="lineNum"> 77 </span> : -<span class="lineNum"> 78 </span> : public: -<span class="lineNum"> 79 </span> : // Copy constructor -<span class="lineNum"> 80 </span> : Iterator(const Iterator&); -<span class="lineNum"> 81 </span> : ~Iterator(); -<span class="lineNum"> 82 </span> : std::string operator*(); -<span class="lineNum"> 83 </span> : Iterator& operator++(); -<span class="lineNum"> 84 </span> : Iterator& operator=(const Iterator&); -<span class="lineNum"> 85 </span> : bool operator==(const Iterator&) const; -<span class="lineNum"> 86 </span> : bool operator!=(const Iterator&) const; -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : // FIXME: Iterator operator++(int); cannot be easily implemented -<span class="lineNum"> 89 </span> : // because of how Apt's pkgIterator works -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span> : friend class Apt; -<span class="lineNum"> 92 </span> : }; -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : // Iterate Package records in the Apt cache -<span class="lineNum"> 95 </span> : class RecordIterator : public std::iterator<std::input_iterator_tag, std::string, void, void, void> -<span class="lineNum"> 96 </span> : { -<span class="lineNum"> 97 </span> : RecordIteratorImpl* impl; -<span class="lineNum"> 98 </span> : size_t pos; -<span class="lineNum"> 99 </span> : std::string cur; -<span class="lineNum"> 100 </span> : size_t cur_pos; -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span> : protected: -<span class="lineNum"> 103 </span> : // Construct a valid iterator -<span class="lineNum"> 104 </span> : RecordIterator(RecordIteratorImpl* cur, size_t pos = 0); -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span> : // Construct and end iterator -<span class="lineNum"> 107 </span><span class="lineCov"> 3481 : RecordIterator() : impl(0), pos(0), cur_pos(0) {}</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : public: -<span class="lineNum"> 110 </span> : // Copy constructor -<span class="lineNum"> 111 </span> : RecordIterator(const RecordIterator& r); -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span> : ~RecordIterator(); -<span class="lineNum"> 114 </span> : std::string operator*(); -<span class="lineNum"> 115 </span> : std::string* operator->(); -<span class="lineNum"> 116 </span> : RecordIterator& operator++(); -<span class="lineNum"> 117 </span> : RecordIterator& operator=(const RecordIterator& r); -<span class="lineNum"> 118 </span> : bool operator==(const RecordIterator&) const; -<span class="lineNum"> 119 </span> : bool operator!=(const RecordIterator&) const; -<span class="lineNum"> 120 </span> : -<span class="lineNum"> 121 </span> : // FIXME: Iterator operator++(int); cannot be easily implemented -<span class="lineNum"> 122 </span> : // because of how Apt's pkgIterator works -<span class="lineNum"> 123 </span> : -<span class="lineNum"> 124 </span> : friend class Apt; -<span class="lineNum"> 125 </span> : }; -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : typedef Iterator iterator; -<span class="lineNum"> 128 </span> : typedef RecordIterator record_iterator; -<span class="lineNum"> 129 </span> : -<span class="lineNum"> 130 </span> : /** -<span class="lineNum"> 131 </span> : * Create the Apt data provider -<span class="lineNum"> 132 </span> : */ -<span class="lineNum"> 133 </span> : Apt(); -<span class="lineNum"> 134 </span> : ~Apt(); -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span> : iterator begin() const; -<span class="lineNum"> 137 </span> : iterator end() const; -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : record_iterator recordBegin() const; -<span class="lineNum"> 140 </span> : record_iterator recordEnd() const; -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span> : -<span class="lineNum"> 143 </span> : /// Return the number of packages in the archive -<span class="lineNum"> 144 </span> : size_t size() const; -<span class="lineNum"> 145 </span> : -<span class="lineNum"> 146 </span> : /** -<span class="lineNum"> 147 </span> : * Validate a package name, returning trye if it exists in the APT database, -<span class="lineNum"> 148 </span> : * or false if it does not. -<span class="lineNum"> 149 </span> : */ -<span class="lineNum"> 150 </span> : bool isValid(const std::string& pkg) const; -<span class="lineNum"> 151 </span> : -<span class="lineNum"> 152 </span> : /// Validate a package name, returning it if it exists in the APT database, -<span class="lineNum"> 153 </span> : /// or returning the empty string if it does not. -<span class="lineNum"> 154 </span> : std::string validate(const std::string& pkg) const -<span class="lineNum"> 155 </span> : { -<span class="lineNum"> 156 </span> : if (isValid(pkg)) -<span class="lineNum"> 157 </span> : return pkg; -<span class="lineNum"> 158 </span> : return std::string(); -<span class="lineNum"> 159 </span> : } -<span class="lineNum"> 160 </span> : -<span class="lineNum"> 161 </span> : /// Validate a Version, returning it if it exists in the APT database, or -<span class="lineNum"> 162 </span> : /// returning the invalid version if it does not. -<span class="lineNum"> 163 </span> : Version validate(const Version& ver) const; -<span class="lineNum"> 164 </span> : -<span class="lineNum"> 165 </span> : /// Return the installed version for a package -<span class="lineNum"> 166 </span> : Version installedVersion(const std::string& pkg) const; -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span> : /// Return the candidate version for a package -<span class="lineNum"> 169 </span> : Version candidateVersion(const std::string& pkg) const; -<span class="lineNum"> 170 </span> : -<span class="lineNum"> 171 </span> : /** -<span class="lineNum"> 172 </span> : * Return the candidate version for a package, if available, or the -<span class="lineNum"> 173 </span> : * installed version otherwise -<span class="lineNum"> 174 </span> : */ -<span class="lineNum"> 175 </span> : Version anyVersion(const std::string& pkg) const; -<span class="lineNum"> 176 </span> : -<span class="lineNum"> 177 </span> : /// Return state information on a package -<span class="lineNum"> 178 </span> : PackageState state(const std::string& pkg) const; -<span class="lineNum"> 179 </span> : -<span class="lineNum"> 180 </span> : /** -<span class="lineNum"> 181 </span> : * Perform a package search. -<span class="lineNum"> 182 </span> : * -<span class="lineNum"> 183 </span> : * All packages for which the functor filter returns true, are passed to -<span class="lineNum"> 184 </span> : * the functor out. -<span class="lineNum"> 185 </span> : */ -<span class="lineNum"> 186 </span> : //template<typename FILTER, typename OUT> -<span class="lineNum"> 187 </span> : //void search(const FILTER& filter, OUT& out); -<span class="lineNum"> 188 </span> : -<span class="lineNum"> 189 </span> : /// Get the raw package record for the given Version -<span class="lineNum"> 190 </span> : std::string rawRecord(const std::string& pkg) const; -<span class="lineNum"> 191 </span> : -<span class="lineNum"> 192 </span> : /// Get the raw package record for the given Version -<span class="lineNum"> 193 </span> : std::string rawRecord(const Version& ver) const; -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span> : /// Timestamp of when the apt index was last modified -<span class="lineNum"> 196 </span> : time_t timestamp(); -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span> : /** -<span class="lineNum"> 199 </span> : * Check if the cache has been changed by another process, and reopen it if -<span class="lineNum"> 200 </span> : * that is the case. -<span class="lineNum"> 201 </span> : * -<span class="lineNum"> 202 </span> : * Note that this method can invalidate all existing iterators. -<span class="lineNum"> 203 </span> : */ -<span class="lineNum"> 204 </span> : void checkCacheUpdates(); -<span class="lineNum"> 205 </span> : -<span class="lineNum"> 206 </span> : /** -<span class="lineNum"> 207 </span> : * Invalidate the cache timestamp used to track cache updates. -<span class="lineNum"> 208 </span> : * -<span class="lineNum"> 209 </span> : * @warning Do not use this method: it is here only to support the test -<span class="lineNum"> 210 </span> : * cases, and may disappear in any future version. -<span class="lineNum"> 211 </span> : */ -<span class="lineNum"> 212 </span> : void invalidateTimestamp(); -<span class="lineNum"> 213 </span> : }; -<span class="lineNum"> 214 </span> : -<span class="lineNum"> 215 </span> : } -<span class="lineNum"> 216 </span> : } -<span class="lineNum"> 217 </span> : -<span class="lineNum"> 218 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 219 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/apt.test.h.gcov.html b/rep/ept/apt/apt.test.h.gcov.html deleted file mode 100644 index cd79123..0000000 --- a/rep/ept/apt/apt.test.h.gcov.html +++ /dev/null @@ -1,259 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/apt.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - apt.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">99</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%">99</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 12 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 17 </span> : */ -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span> : #include <ept/test.h> -<span class="lineNum"> 20 </span> : #include <ept/apt/apt.h> -<span class="lineNum"> 21 </span> : #include <set> -<span class="lineNum"> 22 </span> : #include <algorithm> -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span> : using namespace std; -<span class="lineNum"> 25 </span> : using namespace ept; -<span class="lineNum"> 26 </span> : using namespace ept::apt; -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span><span class="lineCov"> 26 : struct TestApt : AptTestEnvironment {</span> -<span class="lineNum"> 29 </span> : Apt apt; -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : // Check that iterations iterates among some packages -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : Test iterators()</span> -<span class="lineNum"> 33 </span> : { -<span class="lineNum"> 34 </span><span class="lineCov"> 1 : Apt::iterator i = apt.begin();</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 1 : assert(i != apt.end());</span> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span><span class="lineCov"> 1 : size_t count = 0;</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 1789 : for (; i != apt.end(); ++i)</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 1788 : ++count;</span> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 1 : assert(count > 100);</span> -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span> : // Check that iteration gives some well-known packages -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : Test aptExists()</span> -<span class="lineNum"> 46 </span> : { -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : set<string> packages;</span> -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : std::copy(apt.begin(), apt.end(), inserter(packages, packages.begin()));</span> -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : assert(packages.find("libsp1") != packages.end());</span> -<span class="lineNum"> 52 </span> : // TODO this exposes a bug somewhere... sp definitely is among -<span class="lineNum"> 53 </span> : // the packages -<span class="lineNum"> 54 </span> : // assert(packages.find("sp") != packages.end()); -<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert(packages.find("") == packages.end());</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : // Check that timestamp gives some meaningful timestamp -<span class="lineNum"> 59 </span><span class="lineCov"> 1 : Test timestamp()</span> -<span class="lineNum"> 60 </span> : { -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : time_t ts = apt.timestamp();</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : assert(ts > 1000000);</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span> : // Check the package validator -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Test validity()</span> -<span class="lineNum"> 67 </span> : { -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : assert(apt.isValid("apt"));</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(!apt.isValid("this-package-does-not-really-exists"));</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span> : // Check the version instantiators -<span class="lineNum"> 73 </span><span class="lineCov"> 1 : Test versions()</span> -<span class="lineNum"> 74 </span> : { -<span class="lineNum"> 75 </span><span class="lineCov"> 1 : std::string pkg("apt");</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion(pkg);</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : assert(ver.isValid());</span> -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span><span class="lineCov"> 2 : ver = apt.installedVersion(pkg);</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 1 : assert(ver.isValid());</span> -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span><span class="lineCov"> 2 : ver = apt.anyVersion(pkg);</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 1 : assert(ver.isValid());</span> -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineCov"> 2 : std::string pkg1("this-package-does-not-really-exists");</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 2 : ver = apt.candidateVersion(pkg1);</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span> -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : ver = apt.installedVersion(pkg1);</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span> -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span><span class="lineCov"> 2 : ver = apt.anyVersion(pkg1);</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert(!ver.isValid());</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 95 </span> : -<span class="lineNum"> 96 </span> : // Check the version validator -<span class="lineNum"> 97 </span><span class="lineCov"> 1 : Test versionValidity()</span> -<span class="lineNum"> 98 </span> : { -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion("apt");</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 2 : assert(apt.validate(ver) == ver);</span> -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span><span class="lineCov"> 1 : ver = Version("this-package-does-not-really-exists", "0.1");</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert(!apt.validate(ver).isValid());</span> -<span class="lineNum"> 104 </span> : -<span class="lineNum"> 105 </span><span class="lineCov"> 1 : ver = Version("apt", "0.31415");</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 2 : assert(!apt.validate(ver).isValid());</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : // Check the raw record accessor -<span class="lineNum"> 110 </span><span class="lineCov"> 1 : Test rawRecord()</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineCov"> 1 : string pkg("sp");</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 1 : Version ver = apt.candidateVersion(pkg);</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert(apt.validate(ver) == ver);</span> -<span class="lineNum"> 115 </span> : -<span class="lineNum"> 116 </span><span class="lineCov"> 1 : string record = apt.rawRecord(ver);</span> -<span class="lineNum"> 117 </span><span class="lineCov"> 1 : assert(record.find("Package: sp") != string::npos);</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 2 : assert(record.find("Section: text") != string::npos);</span> -<span class="lineNum"> 119 </span> : -<span class="lineNum"> 120 </span><span class="lineCov"> 2 : record = apt.rawRecord(Version("sp", "0.31415"));</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 2 : assert_eq(record, string());</span> -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : assert_eq(apt.rawRecord(pkg), apt.rawRecord(apt.anyVersion(pkg)));</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 125 </span> : -<span class="lineNum"> 126 </span> : // Check the package state accessor -<span class="lineNum"> 127 </span><span class="lineCov"> 1 : Test state()</span> -<span class="lineNum"> 128 </span> : { -<span class="lineNum"> 129 </span><span class="lineCov"> 1 : PackageState s = apt.state("kdenetwork");</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert(s.isValid());</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 2 : assert(s.isInstalled());</span> -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span><span class="lineCov"> 2 : s = apt.state("this-package-does-not-really-exists");</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 2 : assert(!s.isValid());</span> -<span class="lineNum"> 135 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span> : // Check the record iterator (accessing with *) -<span class="lineNum"> 138 </span><span class="lineCov"> 1 : Test recordIteration()</span> -<span class="lineNum"> 139 </span> : { -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : size_t count = 0;</span> -<span class="lineNum"> 141 </span><span class="lineCov"> 435 : for (Apt::record_iterator i = apt.recordBegin();</span> -<span class="lineNum"> 142 </span> : i != apt.recordEnd(); ++i) -<span class="lineNum"> 143 </span> : { -<span class="lineNum"> 144 </span><span class="lineCov"> 434 : assert((*i).size() > 8);</span> -<span class="lineNum"> 145 </span><span class="lineCov"> 434 : assert_eq((*i).substr(0, 8), "Package:");</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 434 : ++count;</span> -<span class="lineNum"> 147 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 2 : assert(count > 200);</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 150 </span> : -<span class="lineNum"> 151 </span> : // Check the record iterator (accessing with ->) -<span class="lineNum"> 152 </span><span class="lineCov"> 1 : Test recordIteration2()</span> -<span class="lineNum"> 153 </span> : { -<span class="lineNum"> 154 </span><span class="lineCov"> 1 : size_t count = 0;</span> -<span class="lineNum"> 155 </span><span class="lineCov"> 435 : for (Apt::record_iterator i = apt.recordBegin();</span> -<span class="lineNum"> 156 </span> : i != apt.recordEnd(); ++i) -<span class="lineNum"> 157 </span> : { -<span class="lineNum"> 158 </span><span class="lineCov"> 434 : assert(i->size() > 8);</span> -<span class="lineNum"> 159 </span><span class="lineCov"> 868 : assert_eq(i->substr(0, 8), "Package:");</span> -<span class="lineNum"> 160 </span><span class="lineCov"> 434 : ++count;</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 2 : assert(count > 200);</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 164 </span> : -<span class="lineNum"> 165 </span> : // Check that the iterators can be used with the algorithms -<span class="lineNum"> 166 </span><span class="lineCov"> 1 : Test stlIteration()</span> -<span class="lineNum"> 167 </span> : { -<span class="lineNum"> 168 </span><span class="lineCov"> 1 : vector<string> out;</span> -<span class="lineNum"> 169 </span><span class="lineCov"> 1 : std::copy(apt.begin(), apt.end(), back_inserter(out));</span> -<span class="lineNum"> 170 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 171 </span> : -<span class="lineNum"> 172 </span> : // Check that the iterators can be used with the algorithms -<span class="lineNum"> 173 </span><span class="lineCov"> 1 : Test stlRecordIteration()</span> -<span class="lineNum"> 174 </span> : { -<span class="lineNum"> 175 </span><span class="lineCov"> 1 : vector<string> out;</span> -<span class="lineNum"> 176 </span><span class="lineCov"> 1 : std::copy(apt.recordBegin(), apt.recordEnd(), back_inserter(out));</span> -<span class="lineNum"> 177 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 178 </span> : -<span class="lineNum"> 179 </span> : // Check that checkUpdates will keep a working Apt object -<span class="lineNum"> 180 </span><span class="lineCov"> 1 : Test checkUpdates()</span> -<span class="lineNum"> 181 </span> : { -<span class="lineNum"> 182 </span><span class="lineCov"> 1 : assert(apt.isValid("apt"));</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 1 : apt.checkCacheUpdates();</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 2 : assert(apt.isValid("apt"));</span> -<span class="lineNum"> 185 </span><span class="lineCov"> 1 : apt.invalidateTimestamp(); </span> -<span class="lineNum"> 186 </span><span class="lineCov"> 1 : apt.checkCacheUpdates();</span> -<span class="lineNum"> 187 </span><span class="lineCov"> 2 : assert(apt.isValid("apt"));</span> -<span class="lineNum"> 188 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 189 </span> : -<span class="lineNum"> 190 </span> : }; -<span class="lineNum"> 191 </span> : -<span class="lineNum"> 192 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/index.html b/rep/ept/apt/index.html deleted file mode 100644 index 9a94d3e..0000000 --- a/rep/ept/apt/index.html +++ /dev/null @@ -1,182 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/apt</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">880</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%">785</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.cc.gcov.html">apt.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=77 height=10 alt="76.8%"><img src="../../snow.png" width=23 height=10 alt="76.8%"></td></tr></table> - </td> - <td class="coverPerHi">76.8 %</td> - <td class="coverNumHi">248 / 323 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.h.gcov.html">apt.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=50 height=10 alt="50.0%"><img src="../../snow.png" width=50 height=10 alt="50.0%"></td></tr></table> - </td> - <td class="coverPerHi">50.0 %</td> - <td class="coverNumHi">3 / 6 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.test.h.gcov.html">apt.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">99 / 99 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="packagerecord.cc.gcov.html">packagerecord.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=91 height=10 alt="90.9%"><img src="../../snow.png" width=9 height=10 alt="90.9%"></td></tr></table> - </td> - <td class="coverPerHi">90.9 %</td> - <td class="coverNumHi">40 / 44 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="packagerecord.h.gcov.html">packagerecord.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=95 height=10 alt="95.4%"><img src="../../snow.png" width=5 height=10 alt="95.4%"></td></tr></table> - </td> - <td class="coverPerHi">95.4 %</td> - <td class="coverNumHi">62 / 65 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="packagerecord.test.h.gcov.html">packagerecord.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=88 height=10 alt="88.5%"><img src="../../snow.png" width=12 height=10 alt="88.5%"></td></tr></table> - </td> - <td class="coverPerHi">88.5 %</td> - <td class="coverNumHi">46 / 52 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="recordparser.cc.gcov.html">recordparser.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">62 / 62 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="recordparser.h.gcov.html">recordparser.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">8 / 8 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="recordparser.test.h.gcov.html">recordparser.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">107 / 107 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="version.cc.gcov.html">version.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=88 height=10 alt="88.2%"><img src="../../snow.png" width=12 height=10 alt="88.2%"></td></tr></table> - </td> - <td class="coverPerHi">88.2 %</td> - <td class="coverNumHi">30 / 34 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="version.h.gcov.html">version.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">9 / 9 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="version.test.h.gcov.html">version.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">71 / 71 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/packagerecord.cc.gcov.html b/rep/ept/apt/packagerecord.cc.gcov.html deleted file mode 100644 index bf04344..0000000 --- a/rep/ept/apt/packagerecord.cc.gcov.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/packagerecord.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">44</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">90.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">40</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file -<span class="lineNum"> 2 </span> : * Parser for APT records, with specialised accessors for package records -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /* -<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 7 </span> : * -<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 12 </span> : * -<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 16 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 17 </span> : * -<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 21 </span> : */ -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <ept/apt/packagerecord.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <cctype> -<span class="lineNum"> 26 </span> : #include <cstdlib> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : //#include <iostream> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : using namespace std; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : namespace ept { -<span class="lineNum"> 33 </span> : namespace apt { -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span><span class="lineCov"> 5210 : size_t PackageRecord::parseSize(size_t def, const std::string& str) const</span> -<span class="lineNum"> 36 </span> : { -<span class="lineNum"> 37 </span><span class="lineCov"> 5210 : if (str == string())</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 54 : return def;</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 5156 : return (size_t)strtoul(str.c_str(), NULL, 10);</span> -<span class="lineNum"> 40 </span> : } -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : std::string PackageRecord::parseShortDescription(const std::string& def, const std::string& str) const</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : if (str == std::string())</span> -<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 1 : size_t pos = str.find("\n");</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span> -<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return str;</span> -<span class="lineNum"> 49 </span> : else -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : return str.substr(0, pos);</span> -<span class="lineNum"> 51 </span> : } -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : std::string PackageRecord::parseLongDescription(const std::string& def, const std::string& str) const</span> -<span class="lineNum"> 54 </span> : { -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : if (str == std::string())</span> -<span class="lineNum"> 56 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : size_t pos = str.find("\n");</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span> -<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : return str;</span> -<span class="lineNum"> 60 </span> : else -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span> : // Trim trailing spaces -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : for (++pos; pos < str.size() && isspace(str[pos]); ++pos)</span> -<span class="lineNum"> 64 </span> : ; -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : return str.substr(pos);</span> -<span class="lineNum"> 66 </span> : } -<span class="lineNum"> 67 </span> : } -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span><span class="lineCov"> 2605 : std::set<std::string> PackageRecord::parseTags(const std::set<std::string>& def, const std::string& str) const</span> -<span class="lineNum"> 70 </span> : { -<span class="lineNum"> 71 </span><span class="lineCov"> 2605 : if (str == string())</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 2604 : return def;</span> -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : set<string> res;</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : size_t pos = 0;</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 13 : while (pos < str.size())</span> -<span class="lineNum"> 78 </span> : { -<span class="lineNum"> 79 </span><span class="lineCov"> 12 : string tag;</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 12 : size_t i = str.find(", ", pos);</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 12 : if (i == string::npos)</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : tag = str.substr(pos);</span> -<span class="lineNum"> 83 </span> : else -<span class="lineNum"> 84 </span><span class="lineCov"> 11 : tag = str.substr(pos, i-pos);</span> -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span> : // Check if we need curly brace expansion -<span class="lineNum"> 87 </span><span class="lineCov"> 12 : if (tag[tag.size() - 1] == '}')</span> -<span class="lineNum"> 88 </span> : { -<span class="lineNum"> 89 </span><span class="lineCov"> 1 : size_t begin = tag.find('{');</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : if (begin != string::npos)</span> -<span class="lineNum"> 91 </span> : { -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : string prefix(tag, 0, begin);</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1 : ++begin;</span> -<span class="lineNum"> 94 </span> : size_t end; -<span class="lineNum"> 95 </span><span class="lineCov"> 4 : while ((end = tag.find(',', begin)) != string::npos)</span> -<span class="lineNum"> 96 </span> : { -<span class="lineNum"> 97 </span><span class="lineCov"> 2 : res.insert(prefix + tag.substr(begin, end-begin));</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 2 : begin = end + 1;</span> -<span class="lineNum"> 99 </span> : } -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : res.insert(prefix + tag.substr(begin, tag.size() - 1 - begin));</span> -<span class="lineNum"> 101 </span> : } -<span class="lineNum"> 102 </span> : } else { -<span class="lineNum"> 103 </span><span class="lineCov"> 11 : res.insert(tag);</span> -<span class="lineNum"> 104 </span> : } -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span><span class="lineCov"> 12 : if (i == string::npos)</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : break;</span> -<span class="lineNum"> 108 </span> : else -<span class="lineNum"> 109 </span><span class="lineCov"> 11 : pos = i + 2;</span> -<span class="lineNum"> 110 </span> : } -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 1 : return res;</span> -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span> : } -<span class="lineNum"> 116 </span> : } -<span class="lineNum"> 117 </span> : -<span class="lineNum"> 118 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/packagerecord.h.gcov.html b/rep/ept/apt/packagerecord.h.gcov.html deleted file mode 100644 index afd295c..0000000 --- a/rep/ept/apt/packagerecord.h.gcov.html +++ /dev/null @@ -1,243 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/packagerecord.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">65</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">95.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">62</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #ifndef EPT_APT_PACKAGERECORD_H -<span class="lineNum"> 2 </span> : #define EPT_APT_PACKAGERECORD_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** \file -<span class="lineNum"> 5 </span> : * Parser for APT records, with specialised accessors for package records -<span class="lineNum"> 6 </span> : */ -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : /* -<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.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/apt/recordparser.h> -<span class="lineNum"> 27 </span> : #include <set> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : namespace ept { -<span class="lineNum"> 30 </span> : namespace apt { -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : /** -<span class="lineNum"> 33 </span> : * RecordParser specialised with access methods for common Debian package -<span class="lineNum"> 34 </span> : * information. -<span class="lineNum"> 35 </span> : */ -<span class="lineNum"> 36 </span> : class PackageRecord : public RecordParser -<span class="lineNum"> 37 </span><span class="lineCov"> 7 : {</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : bool parseBool(bool& def, const std::string& str) const</span> -<span class="lineNum"> 39 </span> : { -<span class="lineNum"> 40 </span> : // Believe it or not, this is what apt does to interpret bool fields -<span class="lineNum"> 41 </span><span class="lineCov"> 1 : if (str == "no" || str == "false" || str == "without" ||</span> -<span class="lineNum"> 42 </span> : str == "off" || str == "disable") -<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : if (str == "yes" || str == "true" || str == "with" ||</span> -<span class="lineNum"> 46 </span> : str == "on" || str == "enable") -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : return true;</span> -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 50 </span> : } -<span class="lineNum"> 51 </span><span class="lineCov"> 10436 : std::string parseString(const std::string& def, const std::string& str) const</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 10436 : if (str == std::string())</span> -<span class="lineNum"> 54 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 10436 : return str;</span> -<span class="lineNum"> 56 </span> : } -<span class="lineNum"> 57 </span> : std::string parseShortDescription(const std::string& def, const std::string& str) const; -<span class="lineNum"> 58 </span> : std::string parseLongDescription(const std::string& def, const std::string& str) const; -<span class="lineNum"> 59 </span> : size_t parseSize(size_t def, const std::string& str) const; -<span class="lineNum"> 60 </span> : std::set<std::string> parseTags(const std::set<std::string>& def, const std::string& str) const; -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : public: -<span class="lineNum"> 63 </span><span class="lineCov"> 6 : PackageRecord() : RecordParser() {}</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 1 : PackageRecord(const std::string& str) : RecordParser(str) {}</span> -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineCov"> 7813 : std::string package(const std::string& def = std::string()) const</span> -<span class="lineNum"> 67 </span> : { -<span class="lineNum"> 68 </span><span class="lineCov"> 7813 : return parseString(def, lookup("Package"));</span> -<span class="lineNum"> 69 </span> : } -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : std::string priority(const std::string& def = std::string()) const</span> -<span class="lineNum"> 71 </span> : { -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : return parseString(def, lookup("Priority"));</span> -<span class="lineNum"> 73 </span> : } -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : std::string section(const std::string& def = std::string()) const</span> -<span class="lineNum"> 75 </span> : { -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : return parseString(def, lookup("Section"));</span> -<span class="lineNum"> 77 </span> : } -<span class="lineNum"> 78 </span><span class="lineCov"> 2605 : size_t installedSize(size_t def = 0) const</span> -<span class="lineNum"> 79 </span> : { -<span class="lineNum"> 80 </span><span class="lineCov"> 2605 : return parseSize(def, lookup("Installed-Size"));</span> -<span class="lineNum"> 81 </span> : } -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : std::string maintainer(const std::string& def = std::string()) const</span> -<span class="lineNum"> 83 </span> : { -<span class="lineNum"> 84 </span><span class="lineCov"> 1 : return parseString(def, lookup("Maintainer"));</span> -<span class="lineNum"> 85 </span> : } -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : std::string architecture(const std::string& def = std::string()) const</span> -<span class="lineNum"> 87 </span> : { -<span class="lineNum"> 88 </span><span class="lineCov"> 1 : return parseString(def, lookup("Architecture"));</span> -<span class="lineNum"> 89 </span> : } -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : std::string source(const std::string& def = std::string()) const</span> -<span class="lineNum"> 91 </span> : { -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : return parseString(def, lookup("Source"));</span> -<span class="lineNum"> 93 </span> : } -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : std::string version(const std::string& def = std::string()) const</span> -<span class="lineNum"> 95 </span> : { -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : return parseString(def, lookup("Version"));</span> -<span class="lineNum"> 97 </span> : } -<span class="lineNum"> 98 </span><span class="lineCov"> 1 : std::string replaces(const std::string& def = std::string()) const</span> -<span class="lineNum"> 99 </span> : { -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : return parseString(def, lookup("Replaces"));</span> -<span class="lineNum"> 101 </span> : } -<span class="lineNum"> 102 </span><span class="lineCov"> 1 : std::string depends(const std::string& def = std::string()) const</span> -<span class="lineNum"> 103 </span> : { -<span class="lineNum"> 104 </span><span class="lineCov"> 1 : return parseString(def, lookup("Depends"));</span> -<span class="lineNum"> 105 </span> : } -<span class="lineNum"> 106 </span><span class="lineCov"> 1 : std::string preDepends(const std::string& def = std::string()) const</span> -<span class="lineNum"> 107 </span> : { -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : return parseString(def, lookup("Pre-Depends"));</span> -<span class="lineNum"> 109 </span> : } -<span class="lineNum"> 110 </span><span class="lineCov"> 1 : std::string recommends(const std::string& def = std::string()) const</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineCov"> 1 : return parseString(def, lookup("Recommends"));</span> -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : std::string suggests(const std::string& def = std::string()) const</span> -<span class="lineNum"> 115 </span> : { -<span class="lineNum"> 116 </span><span class="lineCov"> 1 : return parseString(def, lookup("Suggests"));</span> -<span class="lineNum"> 117 </span> : } -<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::string enhances(const std::string& def = std::string()) const</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : return parseString(def, lookup("Enhances"));</span> -<span class="lineNum"> 121 </span> : } -<span class="lineNum"> 122 </span><span class="lineCov"> 1 : std::string provides(const std::string& def = std::string()) const</span> -<span class="lineNum"> 123 </span> : { -<span class="lineNum"> 124 </span><span class="lineCov"> 1 : return parseString(def, lookup("Provides"));</span> -<span class="lineNum"> 125 </span> : } -<span class="lineNum"> 126 </span><span class="lineCov"> 1 : std::string conflicts(const std::string& def = std::string()) const</span> -<span class="lineNum"> 127 </span> : { -<span class="lineNum"> 128 </span><span class="lineCov"> 1 : return parseString(def, lookup("Conflicts"));</span> -<span class="lineNum"> 129 </span> : } -<span class="lineNum"> 130 </span><span class="lineCov"> 1 : std::string filename(const std::string& def = std::string()) const</span> -<span class="lineNum"> 131 </span> : { -<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return parseString(def, lookup("Filename"));</span> -<span class="lineNum"> 133 </span> : } -<span class="lineNum"> 134 </span><span class="lineCov"> 2605 : size_t packageSize(size_t def = 0) const</span> -<span class="lineNum"> 135 </span> : { -<span class="lineNum"> 136 </span><span class="lineCov"> 2605 : return parseSize(def, lookup("Size"));</span> -<span class="lineNum"> 137 </span> : } -<span class="lineNum"> 138 </span><span class="lineCov"> 1 : std::string md5sum(const std::string& def = std::string()) const</span> -<span class="lineNum"> 139 </span> : { -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : return parseString(def, lookup("MD5sum"));</span> -<span class="lineNum"> 141 </span> : } -<span class="lineNum"> 142 </span><span class="lineCov"> 1 : std::string sha1(const std::string& def = std::string()) const</span> -<span class="lineNum"> 143 </span> : { -<span class="lineNum"> 144 </span><span class="lineCov"> 1 : return parseString(def, lookup("SHA1"));</span> -<span class="lineNum"> 145 </span> : } -<span class="lineNum"> 146 </span><span class="lineCov"> 1 : std::string sha256(const std::string& def = std::string()) const</span> -<span class="lineNum"> 147 </span> : { -<span class="lineNum"> 148 </span><span class="lineCov"> 1 : return parseString(def, lookup("SHA256"));</span> -<span class="lineNum"> 149 </span> : } -<span class="lineNum"> 150 </span><span class="lineCov"> 2605 : std::string description(const std::string& def = std::string()) const</span> -<span class="lineNum"> 151 </span> : { -<span class="lineNum"> 152 </span><span class="lineCov"> 2605 : return parseString(def, lookup("Description"));</span> -<span class="lineNum"> 153 </span> : } -<span class="lineNum"> 154 </span><span class="lineCov"> 1 : std::string shortDescription(const std::string& def = std::string()) const</span> -<span class="lineNum"> 155 </span> : { -<span class="lineNum"> 156 </span><span class="lineCov"> 1 : return parseShortDescription(def, lookup("Description"));</span> -<span class="lineNum"> 157 </span> : } -<span class="lineNum"> 158 </span><span class="lineCov"> 1 : std::string longDescription(const std::string& def = std::string()) const</span> -<span class="lineNum"> 159 </span> : { -<span class="lineNum"> 160 </span><span class="lineCov"> 1 : return parseLongDescription(def, lookup("Description"));</span> -<span class="lineNum"> 161 </span> : } -<span class="lineNum"> 162 </span><span class="lineCov"> 1 : bool buildEssential(bool def = false) const</span> -<span class="lineNum"> 163 </span> : { -<span class="lineNum"> 164 </span><span class="lineCov"> 1 : return parseBool(def, lookup("Build-Essential"));</span> -<span class="lineNum"> 165 </span> : } -<span class="lineNum"> 166 </span><span class="lineCov"> 2605 : std::set<std::string> tag(const std::set<std::string>& def = std::set<std::string>()) const</span> -<span class="lineNum"> 167 </span> : { -<span class="lineNum"> 168 </span><span class="lineCov"> 2605 : return parseTags(def, lookup("Tag"));</span> -<span class="lineNum"> 169 </span> : } -<span class="lineNum"> 170 </span> : }; -<span class="lineNum"> 171 </span> : -<span class="lineNum"> 172 </span> : } -<span class="lineNum"> 173 </span> : } -<span class="lineNum"> 174 </span> : -<span class="lineNum"> 175 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 176 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/packagerecord.test.h.gcov.html b/rep/ept/apt/packagerecord.test.h.gcov.html deleted file mode 100644 index c2c2709..0000000 --- a/rep/ept/apt/packagerecord.test.h.gcov.html +++ /dev/null @@ -1,205 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/packagerecord.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - packagerecord.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">52</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">88.5 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">46</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 12 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 17 </span> : */ -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span> : #include <ept/test.h> -<span class="lineNum"> 20 </span> : #include <ept/apt/packagerecord.h> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : namespace std { -<span class="lineNum"> 23 </span><span class="lineNoCov"> 0 : ostream& operator<<(ostream& out, const set<string>& s)</span> -<span class="lineNum"> 24 </span> : { -<span class="lineNum"> 25 </span><span class="lineNoCov"> 0 : for (set<string>::const_iterator i = s.begin();</span> -<span class="lineNum"> 26 </span> : i != s.end(); ++i) -<span class="lineNum"> 27 </span><span class="lineNoCov"> 0 : if (i == s.begin())</span> -<span class="lineNum"> 28 </span><span class="lineNoCov"> 0 : out << *i;</span> -<span class="lineNum"> 29 </span> : else -<span class="lineNum"> 30 </span><span class="lineNoCov"> 0 : out << ", " << *i;</span> -<span class="lineNum"> 31 </span><span class="lineNoCov"> 0 : return out;</span> -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : } -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : using namespace std; -<span class="lineNum"> 36 </span> : using namespace ept; -<span class="lineNum"> 37 </span> : using namespace ept::apt; -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : struct TestAptPackagerecord { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : // Check that the supported fields are understood -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : Test supportedFields()</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span> : string record = -<span class="lineNum"> 45 </span> : "Package: apt\n" -<span class="lineNum"> 46 </span> : "Priority: important\n" -<span class="lineNum"> 47 </span> : "Section: admin\n" -<span class="lineNum"> 48 </span> : "Installed-Size: 4368\n" -<span class="lineNum"> 49 </span> : "Maintainer: APT Development Team <deity@lists.debian.org>\n" -<span class="lineNum"> 50 </span> : "Architecture: amd64\n" -<span class="lineNum"> 51 </span> : "Source: apt\n" -<span class="lineNum"> 52 </span> : "Version: 0.6.46.4-0.1\n" -<span class="lineNum"> 53 </span> : "Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)\n" -<span class="lineNum"> 54 </span> : "Provides: libapt-pkg-libc6.3-6-3.11\n" -<span class="lineNum"> 55 </span> : "Depends: libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12), debian-archive-keyring\n" -<span class="lineNum"> 56 </span> : "Pre-Depends: debtags (maybe)\n" -<span class="lineNum"> 57 </span> : "Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2\n" -<span class="lineNum"> 58 </span> : "Recommends: debtags (maybe)\n" -<span class="lineNum"> 59 </span> : "Enhances: debian\n" -<span class="lineNum"> 60 </span> : "Conflicts: marameo\n" -<span class="lineNum"> 61 </span> : "Filename: pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb\n" -<span class="lineNum"> 62 </span> : "Size: 1436478\n" -<span class="lineNum"> 63 </span> : "MD5sum: 1776421f80d6300c77a608e77a9f4a15\n" -<span class="lineNum"> 64 </span> : "SHA1: 1bd7337d2df56d267632cf72ac930c0a4895898f\n" -<span class="lineNum"> 65 </span> : "SHA256: b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda\n" -<span class="lineNum"> 66 </span> : "Description: Advanced front-end for dpkg\n" -<span class="lineNum"> 67 </span> : " This is Debian's next generation front-end for the dpkg package manager.\n" -<span class="lineNum"> 68 </span> : " It provides the apt-get utility and APT dselect method that provides a\n" -<span class="lineNum"> 69 </span> : " simpler, safer way to install and upgrade packages.\n" -<span class="lineNum"> 70 </span> : " .\n" -<span class="lineNum"> 71 </span> : " APT features complete installation ordering, multiple source capability\n" -<span class="lineNum"> 72 </span> : " and several other unique features, see the Users Guide in apt-doc.\n" -<span class="lineNum"> 73 </span> : "Build-Essential: yes\n" -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : "Tag: admin::package-management, filetransfer::ftp, filetransfer::http, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package\n";</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : PackageRecord p(record);</span> -<span class="lineNum"> 77 </span> : -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert_eq(p.size(), 24u);</span> -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert_eq(p.package(), "apt");</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : assert_eq(p.priority(), "important");</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : assert_eq(p.section(), "admin");</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 1 : assert_eq(p.installedSize(), 4368u);</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 2 : assert_eq(p.maintainer(), "APT Development Team <deity@lists.debian.org>");</span> -<span class="lineNum"> 85 </span><span class="lineCov"> 1 : assert_eq(p.architecture(), "amd64");</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert_eq(p.source(), "apt");</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 1 : assert_eq(p.version(), "0.6.46.4-0.1");</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 1 : assert_eq(p.replaces(), "libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)");</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 1 : assert_eq(p.provides(), "libapt-pkg-libc6.3-6-3.11");</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : assert_eq(p.depends(), "libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12), debian-archive-keyring");</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 1 : assert_eq(p.preDepends(), "debtags (maybe)");</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : assert_eq(p.recommends(), "debtags (maybe)");</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert_eq(p.suggests(), "aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2");</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : assert_eq(p.enhances(), "debian");</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 1 : assert_eq(p.conflicts(), "marameo");</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : assert_eq(p.filename(), "pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb");</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 1 : assert_eq(p.packageSize(), 1436478u);</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 2 : assert_eq(p.md5sum(), "1776421f80d6300c77a608e77a9f4a15");</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert_eq(p.sha1(), "1bd7337d2df56d267632cf72ac930c0a4895898f");</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert_eq(p.sha256(), "b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda");</span> -<span class="lineNum"> 101 </span> : assert_eq(p.description(), "Advanced front-end for dpkg\n" -<span class="lineNum"> 102 </span> : " This is Debian's next generation front-end for the dpkg package manager.\n" -<span class="lineNum"> 103 </span> : " It provides the apt-get utility and APT dselect method that provides a\n" -<span class="lineNum"> 104 </span> : " simpler, safer way to install and upgrade packages.\n" -<span class="lineNum"> 105 </span> : " .\n" -<span class="lineNum"> 106 </span> : " APT features complete installation ordering, multiple source capability\n" -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : " and several other unique features, see the Users Guide in apt-doc.");</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : assert_eq(p.shortDescription(), "Advanced front-end for dpkg");</span> -<span class="lineNum"> 109 </span> : assert_eq(p.longDescription(), -<span class="lineNum"> 110 </span> : "This is Debian's next generation front-end for the dpkg package manager.\n" -<span class="lineNum"> 111 </span> : " It provides the apt-get utility and APT dselect method that provides a\n" -<span class="lineNum"> 112 </span> : " simpler, safer way to install and upgrade packages.\n" -<span class="lineNum"> 113 </span> : " .\n" -<span class="lineNum"> 114 </span> : " APT features complete installation ordering, multiple source capability\n" -<span class="lineNum"> 115 </span><span class="lineCov"> 1 : " and several other unique features, see the Users Guide in apt-doc.");</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(p.buildEssential(), true);</span> -<span class="lineNum"> 117 </span> : -<span class="lineNum"> 118 </span><span class="lineCov"> 1 : std::set<std::string> tags;</span> -<span class="lineNum"> 119 </span><span class="lineCov"> 1 : tags.insert("admin::package-management");</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 2 : tags.insert("filetransfer::ftp");</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 2 : tags.insert("filetransfer::http");</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 2 : tags.insert("hardware::storage:cd");</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 2 : tags.insert("interface::commandline");</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 2 : tags.insert("network::client");</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 2 : tags.insert("protocol::ftp");</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 2 : tags.insert("protocol::http");</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 2 : tags.insert("protocol::ipv6");</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 2 : tags.insert("role::program");</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 2 : tags.insert("suite::debian");</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 2 : tags.insert("use::downloading");</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 2 : tags.insert("use::searching");</span> -<span class="lineNum"> 132 </span><span class="lineCov"> 2 : tags.insert("works-with::software:package");</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 2 : assert_eq(p.tag(), tags);</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span> : }; -<span class="lineNum"> 137 </span> : -<span class="lineNum"> 138 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/recordparser.cc.gcov.html b/rep/ept/apt/recordparser.cc.gcov.html deleted file mode 100644 index f1f46c3..0000000 --- a/rep/ept/apt/recordparser.cc.gcov.html +++ /dev/null @@ -1,237 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/recordparser.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">62</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%">62</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file -<span class="lineNum"> 2 </span> : * Parser for APT records -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /* -<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 7 </span> : * -<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 12 </span> : * -<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 16 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 17 </span> : * -<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 21 </span> : */ -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <ept/apt/recordparser.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <algorithm> -<span class="lineNum"> 26 </span> : #include <cctype> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : //#include <iostream> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : using namespace std; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : namespace ept { -<span class="lineNum"> 33 </span> : namespace apt { -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : struct rpcompare -<span class="lineNum"> 36 </span> : { -<span class="lineNum"> 37 </span> : const RecordParser& rp; -<span class="lineNum"> 38 </span><span class="lineCov"> 2618 : rpcompare(const RecordParser& rp) : rp(rp) {}</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 177724 : bool operator()(size_t a, size_t b)</span> -<span class="lineNum"> 40 </span> : { -<span class="lineNum"> 41 </span><span class="lineCov"> 177724 : return rp.name(a) < rp.name(b);</span> -<span class="lineNum"> 42 </span> : } -<span class="lineNum"> 43 </span> : }; -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 2618 : void RecordParser::scan(const std::string& str)</span> -<span class="lineNum"> 46 </span> : { -<span class="lineNum"> 47 </span><span class="lineCov"> 2618 : buffer = str;</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 2618 : ends.clear();</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 2618 : sorted.clear();</span> -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : //cerr << "PARSE " << endl << buffer << "*****" << endl; -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : // Scan the buffer, taking note of all ending offsets of the various fields -<span class="lineNum"> 54 </span><span class="lineCov"> 2618 : size_t pos = 0;</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 2618 : size_t idx = 0;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 59427 : while (pos < buffer.size() - 1)</span> -<span class="lineNum"> 57 </span> : { -<span class="lineNum"> 58 </span> : //cerr << "PREPOS " << pos << " left: " << buffer.substr(pos, 10) << endl; -<span class="lineNum"> 59 </span><span class="lineCov"> 56809 : pos = buffer.find("\n", pos);</span> -<span class="lineNum"> 60 </span> : //cerr << "POSTPOS " << pos << " left: " << (pos == string::npos ? "NONE" : buffer.substr(pos, 10)) << endl; -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : // The buffer does not end with a newline -<span class="lineNum"> 63 </span><span class="lineCov"> 56809 : if (pos == string::npos)</span> -<span class="lineNum"> 64 </span> : { -<span class="lineNum"> 65 </span> : //cerr << "ENDNOTEOL" << endl; -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : pos = buffer.size();</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : ends.push_back(pos);</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : sorted.push_back(idx++);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 1 : break;</span> -<span class="lineNum"> 70 </span> : } -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span><span class="lineCov"> 56808 : ++pos;</span> -<span class="lineNum"> 73 </span> : //cerr << "POSTPOSINC " << pos << " left: " << buffer.substr(pos, 10) << endl; -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span> : // The buffer ends with a newline -<span class="lineNum"> 76 </span><span class="lineCov"> 56808 : if (pos == buffer.size())</span> -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span> : //cerr << "ENDEOL" << endl; -<span class="lineNum"> 79 </span><span class="lineCov"> 11 : ends.push_back(pos);</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 11 : sorted.push_back(idx++);</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 11 : break;</span> -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : // Terminate parsing on double newlines -<span class="lineNum"> 85 </span><span class="lineCov"> 56797 : if (buffer[pos] == '\n')</span> -<span class="lineNum"> 86 </span> : { -<span class="lineNum"> 87 </span> : //cerr << "ENDDOUBLENL" << endl; -<span class="lineNum"> 88 </span><span class="lineCov"> 2606 : ends.push_back(pos);</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 2606 : sorted.push_back(idx++);</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 2606 : break;</span> -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : // Mark the end of the field if it's not a continuation line -<span class="lineNum"> 94 </span><span class="lineCov"> 54191 : if (!isspace(buffer[pos]))</span> -<span class="lineNum"> 95 </span> : { -<span class="lineNum"> 96 </span> : //cerr << "INNERFIELD" << endl; -<span class="lineNum"> 97 </span><span class="lineCov"> 34233 : ends.push_back(pos);</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 34233 : sorted.push_back(idx++);</span> -<span class="lineNum"> 99 </span> : } //else -<span class="lineNum"> 100 </span> : //cerr << "CONTLINE" << endl; -<span class="lineNum"> 101 </span> : } -<span class="lineNum"> 102 </span> : -<span class="lineNum"> 103 </span> : // Sort the sorted array -<span class="lineNum"> 104 </span><span class="lineCov"> 2618 : sort(sorted.begin(), sorted.end(), rpcompare(*this));</span> -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span> : //for (size_t i = 0; i < ends.size(); ++i) -<span class="lineNum"> 107 </span> : // cerr << ends[i] << "\t" << name(i) << "\t" << sorted[i] << "\t" << name(sorted[i]) << endl; -<span class="lineNum"> 108 </span><span class="lineCov"> 2618 : }</span> -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span><span class="lineCov"> 465183 : std::string RecordParser::field(size_t idx) const</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineCov"> 465183 : if (idx >= ends.size())</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 2664 : return string();</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 462519 : if (idx == 0)</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 52771 : return buffer.substr(0, ends[0]);</span> -<span class="lineNum"> 116 </span> : else -<span class="lineNum"> 117 </span><span class="lineCov"> 409748 : return buffer.substr(ends[idx-1], ends[idx]-ends[idx-1]);</span> -<span class="lineNum"> 118 </span> : } -<span class="lineNum"> 119 </span> : -<span class="lineNum"> 120 </span><span class="lineCov"> 446879 : std::string RecordParser::name(size_t idx) const</span> -<span class="lineNum"> 121 </span> : { -<span class="lineNum"> 122 </span><span class="lineCov"> 446879 : string res = field(idx);</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 446879 : size_t pos = res.find(":");</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 446879 : if (pos == string::npos)</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : return res;</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 446878 : return res.substr(0, pos);</span> -<span class="lineNum"> 127 </span> : } -<span class="lineNum"> 128 </span> : -<span class="lineNum"> 129 </span><span class="lineCov"> 18279 : std::string RecordParser::lookup(size_t idx) const</span> -<span class="lineNum"> 130 </span> : { -<span class="lineNum"> 131 </span><span class="lineCov"> 18279 : string res = field(idx);</span> -<span class="lineNum"> 132 </span><span class="lineCov"> 18279 : size_t pos = res.find(":");</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 18279 : if (pos == string::npos)</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 2662 : return res;</span> -<span class="lineNum"> 135 </span> : // Skip initial whitespace after the : -<span class="lineNum"> 136 </span><span class="lineCov"> 15617 : for (++pos; pos < res.size() && isspace(res[pos]); ++pos)</span> -<span class="lineNum"> 137 </span> : ; -<span class="lineNum"> 138 </span><span class="lineCov"> 15617 : res = res.substr(pos);</span> -<span class="lineNum"> 139 </span> : // Trim spaces at the end -<span class="lineNum"> 140 </span><span class="lineCov"> 46850 : while (!res.empty() && isspace(res[res.size() - 1]))</span> -<span class="lineNum"> 141 </span><span class="lineCov"> 15616 : res.resize(res.size() - 1);</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 15617 : return res;</span> -<span class="lineNum"> 143 </span> : } -<span class="lineNum"> 144 </span> : -<span class="lineNum"> 145 </span><span class="lineCov"> 18283 : size_t RecordParser::index(const std::string& str) const</span> -<span class="lineNum"> 146 </span> : { -<span class="lineNum"> 147 </span> : int begin, end; -<span class="lineNum"> 148 </span> : -<span class="lineNum"> 149 </span> : /* Binary search */ -<span class="lineNum"> 150 </span><span class="lineCov"> 18283 : begin = -1, end = size();</span> -<span class="lineNum"> 151 </span><span class="lineCov"> 109703 : while (end - begin > 1)</span> -<span class="lineNum"> 152 </span> : { -<span class="lineNum"> 153 </span><span class="lineCov"> 73137 : int cur = (end + begin) / 2;</span> -<span class="lineNum"> 154 </span> : //cerr << "Test " << cur << " " << str << " < " << name(cur) << endl; -<span class="lineNum"> 155 </span><span class="lineCov"> 73137 : if (name(sorted[cur]) > str)</span> -<span class="lineNum"> 156 </span><span class="lineCov"> 32507 : end = cur;</span> -<span class="lineNum"> 157 </span> : else -<span class="lineNum"> 158 </span><span class="lineCov"> 40630 : begin = cur;</span> -<span class="lineNum"> 159 </span> : } -<span class="lineNum"> 160 </span> : -<span class="lineNum"> 161 </span><span class="lineCov"> 18283 : if (begin == -1 || name(sorted[begin]) != str)</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 2661 : return size();</span> -<span class="lineNum"> 163 </span> : else -<span class="lineNum"> 164 </span><span class="lineCov"> 15622 : return sorted[begin];</span> -<span class="lineNum"> 165 </span> : } -<span class="lineNum"> 166 </span> : -<span class="lineNum"> 167 </span> : } -<span class="lineNum"> 168 </span> : } -<span class="lineNum"> 169 </span> : -<span class="lineNum"> 170 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/recordparser.h.gcov.html b/rep/ept/apt/recordparser.h.gcov.html deleted file mode 100644 index 60082e3..0000000 --- a/rep/ept/apt/recordparser.h.gcov.html +++ /dev/null @@ -1,162 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/recordparser.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">8</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%">8</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #ifndef EPT_APT_RECORDPARSER_H -<span class="lineNum"> 2 </span> : #define EPT_APT_RECORDPARSER_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** \file -<span class="lineNum"> 5 </span> : * Parser for APT records -<span class="lineNum"> 6 </span> : */ -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : /* -<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.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 <vector> -<span class="lineNum"> 27 </span> : #include <string> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : namespace ept { -<span class="lineNum"> 30 </span> : namespace apt { -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : /** -<span class="lineNum"> 33 </span> : * Access the fields of a package record contained inside a std::string. -<span class="lineNum"> 34 </span> : * -<span class="lineNum"> 35 </span> : * Implementation note: this implementation should take advantage of -<span class="lineNum"> 36 </span> : * std::string sharing buffer space among them. -<span class="lineNum"> 37 </span> : */ -<span class="lineNum"> 38 </span> : class RecordParser -<span class="lineNum"> 39 </span><span class="lineCov"> 19 : {</span> -<span class="lineNum"> 40 </span> : /// Buffer containing the whole record -<span class="lineNum"> 41 </span> : std::string buffer; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : /// End offsets of the various fields in the record -<span class="lineNum"> 44 </span> : std::vector<size_t> ends; -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : /// Indexes on the ends vector, sorted by field name -<span class="lineNum"> 47 </span> : std::vector<size_t> sorted; -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span> : public: -<span class="lineNum"> 50 </span><span class="lineCov"> 6 : RecordParser() {}</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 13 : RecordParser(const std::string& str) { scan(str); }</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : /// Index a new record -<span class="lineNum"> 54 </span> : void scan(const std::string& str); -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span> : /** -<span class="lineNum"> 57 </span> : * Get the index of the field with the given name. -<span class="lineNum"> 58 </span> : * -<span class="lineNum"> 59 </span> : * size() is returned if not found -<span class="lineNum"> 60 </span> : */ -<span class="lineNum"> 61 </span> : size_t index(const std::string& str) const; -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : /// Return the field by its index -<span class="lineNum"> 64 </span> : std::string field(size_t idx) const; -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span> : /// Return the name of a field by its index -<span class="lineNum"> 67 </span> : std::string name(size_t idx) const; -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span> : /// Return the content of a field by its index -<span class="lineNum"> 70 </span> : std::string lookup(size_t idx) const; -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span> : /// Return the content of a field by its name -<span class="lineNum"> 73 </span><span class="lineCov"> 18273 : std::string lookup(const std::string& name) const { return lookup(index(name)); }</span> -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span> : /// Return the content of a field by its index -<span class="lineNum"> 76 </span><span class="lineCov"> 6 : std::string operator[](size_t idx) const { return lookup(idx); }</span> -<span class="lineNum"> 77 </span> : -<span class="lineNum"> 78 </span> : /// Return the content of a field by its name -<span class="lineNum"> 79 </span><span class="lineCov"> 19 : std::string operator[](const std::string& name) const { return lookup(name); }</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : /// Return the entire record -<span class="lineNum"> 82 </span> : const std::string& record() const { return buffer; } -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : /// Return the entire record -<span class="lineNum"> 85 </span><span class="lineCov"> 1 : std::string record() { return buffer; }</span> -<span class="lineNum"> 86 </span> : -<span class="lineNum"> 87 </span> : /// Return the number of fields in the record -<span class="lineNum"> 88 </span><span class="lineCov"> 20972 : size_t size() const { return ends.size(); }</span> -<span class="lineNum"> 89 </span> : }; -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : } -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 95 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/recordparser.test.h.gcov.html b/rep/ept/apt/recordparser.test.h.gcov.html deleted file mode 100644 index 477be3f..0000000 --- a/rep/ept/apt/recordparser.test.h.gcov.html +++ /dev/null @@ -1,295 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/recordparser.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - recordparser.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">107</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%">107</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 12 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 17 </span> : */ -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span> : #include <ept/test.h> -<span class="lineNum"> 20 </span> : #include <ept/apt/recordparser.h> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : //#include <iostream> -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span> : using namespace std; -<span class="lineNum"> 25 </span> : using namespace ept; -<span class="lineNum"> 26 </span> : using namespace ept::apt; -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span><span class="lineCov"> 12 : struct TestAptRecordparser {</span> -<span class="lineNum"> 29 </span> : std::string record; -<span class="lineNum"> 30 </span><span class="lineCov"> 12 : TestAptRecordparser()</span> -<span class="lineNum"> 31 </span><span class="lineCov"> 12 : {</span> -<span class="lineNum"> 32 </span> : record = -<span class="lineNum"> 33 </span> : "A:\n" -<span class="lineNum"> 34 </span> : "D: da de di do du\n" -<span class="lineNum"> 35 </span> : "B: b\n" -<span class="lineNum"> 36 </span> : "C: c \n" -<span class="lineNum"> 37 </span> : "Desc: this is the beginning\n" -<span class="lineNum"> 38 </span> : " this is the continuation\n" -<span class="lineNum"> 39 </span><span class="lineCov"> 12 : " this is the end\n";</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 12 : }</span> -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span> : // Check that the fields are identified and broken up correctly -<span class="lineNum"> 43 </span><span class="lineCov"> 1 : Test parsing()</span> -<span class="lineNum"> 44 </span> : { -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : assert_eq(p.record(), record);</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : assert_eq(p.size(), 5u);</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test fieldTuples()</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : assert_eq(p.field(0), "A:\n");</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : assert_eq(p.field(1), "D: da de di do du\n");</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1 : assert_eq(p.field(2), "B: b\n");</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : assert_eq(p.field(3), "C: c \n");</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 1 : assert_eq(p.field(4), "Desc: this is the beginning\n this is the continuation\n this is the end\n");</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 60 </span> : -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test fieldKeys()</span> -<span class="lineNum"> 62 </span> : { -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 1 : assert_eq(p.name(0), "A");</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : assert_eq(p.name(1), "D");</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : assert_eq(p.name(2), "B");</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : assert_eq(p.name(3), "C");</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : assert_eq(p.name(4), "Desc");</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span><span class="lineCov"> 1 : Test fieldValues()</span> -<span class="lineNum"> 72 </span> : { -<span class="lineNum"> 73 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : assert_eq(p[0], "");</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 1 : assert_eq(p[1], "da de di do du");</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : assert_eq(p[2], "b");</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : assert_eq(p[3], "c");</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert_eq(p[4], "this is the beginning\n this is the continuation\n this is the end");</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : // Check that the field search by name finds all the fields -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : Test findByName()</span> -<span class="lineNum"> 83 </span> : { -<span class="lineNum"> 84 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert_eq(p.index("A"), 0u);</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert_eq(p.index("D"), 1u);</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert_eq(p.index("B"), 2u);</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert_eq(p.index("C"), 3u);</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert_eq(p.index("Desc"), 4u);</span> -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index("A")), "A");</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index("B")), "B");</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index("C")), "C");</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index("D")), "D");</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 2 : assert_eq(p.name(p.index("Desc")), "Desc");</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 98 </span> : -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : Test indexing()</span> -<span class="lineNum"> 100 </span> : { -<span class="lineNum"> 101 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 102 </span><span class="lineCov"> 1 : assert_eq(p["A"], "");</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert_eq(p["B"], "b");</span> -<span class="lineNum"> 104 </span><span class="lineCov"> 2 : assert_eq(p["C"], "c");</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 2 : assert_eq(p["D"], "da de di do du");</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 2 : assert_eq(p["Desc"], "this is the beginning\n this is the continuation\n this is the end");</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span><span class="lineCov"> 1 : Test missingBehaviour()</span> -<span class="lineNum"> 110 </span> : { -<span class="lineNum"> 111 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 112 </span> : // Missing fields give empty strings -<span class="lineNum"> 113 </span><span class="lineCov"> 1 : assert_eq(p.field(100), "");</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert_eq(p.name(100), "");</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 1 : assert_eq(p[100], "");</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(p["Missing"], "");</span> -<span class="lineNum"> 117 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span> : // Check that scanning twice replaces the old fields -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : Test rescan()</span> -<span class="lineNum"> 121 </span> : { -<span class="lineNum"> 122 </span> : std::string record = -<span class="lineNum"> 123 </span> : "A: a\n" -<span class="lineNum"> 124 </span> : "B: b\n" -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : "C: c\n";</span> -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 1 : assert_eq(p.size(), 3u);</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 2 : assert_eq(p["A"], "a");</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert_eq(p["B"], "b");</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 2 : assert_eq(p["C"], "c");</span> -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : std::string record1 = -<span class="lineNum"> 134 </span> : "Foo: bar\n" -<span class="lineNum"> 135 </span><span class="lineCov"> 2 : "A: different\n";</span> -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span><span class="lineCov"> 1 : p.scan(record1);</span> -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : //for (size_t i = 0; i < p.size(); ++i) -<span class="lineNum"> 140 </span> : // cerr << ">> " << i << "==" << p.index(p.name(i)) << " " << p.name(i) << " " << p[i] << endl; -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 2 : assert_eq(p["A"], "different");</span> -<span class="lineNum"> 144 </span><span class="lineCov"> 2 : assert_eq(p["B"], "");</span> -<span class="lineNum"> 145 </span><span class="lineCov"> 2 : assert_eq(p["C"], "");</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 2 : assert_eq(p["Foo"], "bar");</span> -<span class="lineNum"> 147 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 148 </span> : -<span class="lineNum"> 149 </span> : // Real-life example -<span class="lineNum"> 150 </span><span class="lineCov"> 1 : Test realLife()</span> -<span class="lineNum"> 151 </span> : { -<span class="lineNum"> 152 </span> : string record = -<span class="lineNum"> 153 </span> : "Package: apt\n" -<span class="lineNum"> 154 </span> : "Priority: important\n" -<span class="lineNum"> 155 </span> : "Section: admin\n" -<span class="lineNum"> 156 </span> : "Installed-Size: 4368\n" -<span class="lineNum"> 157 </span> : "Maintainer: APT Development Team <deity@lists.debian.org>\n" -<span class="lineNum"> 158 </span> : "Architecture: amd64\n" -<span class="lineNum"> 159 </span> : "Version: 0.6.46.4-0.1\n" -<span class="lineNum"> 160 </span> : "Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)\n" -<span class="lineNum"> 161 </span> : "Provides: libapt-pkg-libc6.3-6-3.11\n" -<span class="lineNum"> 162 </span> : "Depends: libc6 (>= 2.3.5-1), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12), debian-archive-keyring\n" -<span class="lineNum"> 163 </span> : "Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2\n" -<span class="lineNum"> 164 </span> : "Filename: pool/main/a/apt/apt_0.6.46.4-0.1_amd64.deb\n" -<span class="lineNum"> 165 </span> : "Size: 1436478\n" -<span class="lineNum"> 166 </span> : "MD5sum: 1776421f80d6300c77a608e77a9f4a15\n" -<span class="lineNum"> 167 </span> : "SHA1: 1bd7337d2df56d267632cf72ac930c0a4895898f\n" -<span class="lineNum"> 168 </span> : "SHA256: b92442ab60046b4d0728245f39cc932f26e17db9f7933a5ec9aaa63172f51fda\n" -<span class="lineNum"> 169 </span> : "Description: Advanced front-end for dpkg\n" -<span class="lineNum"> 170 </span> : " This is Debian's next generation front-end for the dpkg package manager.\n" -<span class="lineNum"> 171 </span> : " It provides the apt-get utility and APT dselect method that provides a\n" -<span class="lineNum"> 172 </span> : " simpler, safer way to install and upgrade packages.\n" -<span class="lineNum"> 173 </span> : " .\n" -<span class="lineNum"> 174 </span> : " APT features complete installation ordering, multiple source capability\n" -<span class="lineNum"> 175 </span> : " and several other unique features, see the Users Guide in apt-doc.\n" -<span class="lineNum"> 176 </span> : "Build-Essential: yes\n" -<span class="lineNum"> 177 </span><span class="lineCov"> 1 : "Tag: admin::package-management, filetransfer::ftp, filetransfer::http, hardware::storage:cd, interface::commandline, network::client, protocol::{ftp,http,ipv6}, role::program, suite::debian, use::downloading, use::searching, works-with::software:package\n";</span> -<span class="lineNum"> 178 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 179 </span> : -<span class="lineNum"> 180 </span><span class="lineCov"> 1 : assert_eq(p.size(), 19u);</span> -<span class="lineNum"> 181 </span> : -<span class="lineNum"> 182 </span><span class="lineCov"> 1 : string rec1;</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 20 : for (size_t i = 0; i < p.size(); ++i)</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 19 : rec1 += p.field(i);</span> -<span class="lineNum"> 185 </span><span class="lineCov"> 1 : assert_eq(record, rec1);</span> -<span class="lineNum"> 186 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 187 </span> : -<span class="lineNum"> 188 </span> : // Various buffer termination patterns -<span class="lineNum"> 189 </span><span class="lineCov"> 1 : Test bufferTermination()</span> -<span class="lineNum"> 190 </span> : { -<span class="lineNum"> 191 </span> : std::string record = -<span class="lineNum"> 192 </span> : "A: a\n" -<span class="lineNum"> 193 </span><span class="lineCov"> 1 : "B: b";</span> -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 196 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span> -<span class="lineNum"> 197 </span><span class="lineCov"> 2 : assert_eq(p["A"], "a");</span> -<span class="lineNum"> 198 </span><span class="lineCov"> 2 : assert_eq(p["B"], "b");</span> -<span class="lineNum"> 199 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 200 </span> : -<span class="lineNum"> 201 </span><span class="lineCov"> 1 : Test bufferTermination2()</span> -<span class="lineNum"> 202 </span> : { -<span class="lineNum"> 203 </span> : std::string record = -<span class="lineNum"> 204 </span> : "A: a\n" -<span class="lineNum"> 205 </span><span class="lineCov"> 1 : "B: b\n\n";</span> -<span class="lineNum"> 206 </span> : -<span class="lineNum"> 207 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 208 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span> -<span class="lineNum"> 209 </span><span class="lineCov"> 2 : assert_eq(p["A"], "a");</span> -<span class="lineNum"> 210 </span><span class="lineCov"> 2 : assert_eq(p["B"], "b");</span> -<span class="lineNum"> 211 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 212 </span> : -<span class="lineNum"> 213 </span><span class="lineCov"> 1 : Test bufferTermination3()</span> -<span class="lineNum"> 214 </span> : { -<span class="lineNum"> 215 </span> : std::string record = -<span class="lineNum"> 216 </span> : "A: a\n" -<span class="lineNum"> 217 </span> : "B: b\n\n" -<span class="lineNum"> 218 </span><span class="lineCov"> 1 : "C: c\n";</span> -<span class="lineNum"> 219 </span> : -<span class="lineNum"> 220 </span><span class="lineCov"> 1 : RecordParser p(record);</span> -<span class="lineNum"> 221 </span><span class="lineCov"> 1 : assert_eq(p.size(), 2u);</span> -<span class="lineNum"> 222 </span><span class="lineCov"> 2 : assert_eq(p["A"], "a");</span> -<span class="lineNum"> 223 </span><span class="lineCov"> 2 : assert_eq(p["B"], "b");</span> -<span class="lineNum"> 224 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 225 </span> : -<span class="lineNum"> 226 </span> : }; -<span class="lineNum"> 227 </span> : -<span class="lineNum"> 228 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/version.cc.gcov.html b/rep/ept/apt/version.cc.gcov.html deleted file mode 100644 index d850ed3..0000000 --- a/rep/ept/apt/version.cc.gcov.html +++ /dev/null @@ -1,154 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/version.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">34</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">88.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">30</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file -<span class="lineNum"> 2 </span> : * Provide a very lightweight Version class that represent a package with a -<span class="lineNum"> 3 </span> : * version, with very cheap value copy operations. -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 10 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 11 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 12 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 15 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 16 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 17 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 18 </span> : * -<span class="lineNum"> 19 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 20 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 21 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 22 </span> : */ -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span> : #include <ept/apt/version.h> -<span class="lineNum"> 25 </span> : #include <apt-pkg/debversion.h> -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : using namespace std; -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : namespace ept { -<span class="lineNum"> 30 </span> : namespace apt { -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 4 : std::string Version::upstreamVersion() const</span> -<span class="lineNum"> 33 </span> : { -<span class="lineNum"> 34 </span> : // Skip the epoch, if it is there -<span class="lineNum"> 35 </span><span class="lineCov"> 4 : size_t start = m_version.find(':');</span> -<span class="lineNum"> 36 </span><span class="lineCov"> 4 : if (start == string::npos)</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 3 : start = 0;</span> -<span class="lineNum"> 38 </span> : else -<span class="lineNum"> 39 </span><span class="lineCov"> 1 : ++start;</span> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : // Skip everything after the trailing '-', if it is there -<span class="lineNum"> 42 </span><span class="lineCov"> 4 : size_t end = m_version.rfind('-');</span> -<span class="lineNum"> 43 </span><span class="lineCov"> 4 : if (end == string::npos)</span> -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : end = m_version.size();</span> -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span><span class="lineCov"> 4 : return m_version.substr(start, end-start);</span> -<span class="lineNum"> 47 </span> : } -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span> : /* Version comparison by Debian policy */ -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 4 : bool Version::operator<=(const Version& pkg) const</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 4 : if (name() < pkg.name())</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : return true;</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 3 : if (name() == pkg.name())</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 3 : return debVS.CmpVersion(version(), pkg.version()) <= 0;</span> -<span class="lineNum"> 57 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 58 </span> : } -<span class="lineNum"> 59 </span><span class="lineCov"> 5 : bool Version::operator<(const Version& pkg) const</span> -<span class="lineNum"> 60 </span> : { -<span class="lineNum"> 61 </span><span class="lineCov"> 5 : if (name() < pkg.name())</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : return true;</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 4 : if (name() == pkg.name())</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 4 : return debVS.CmpVersion(version(), pkg.version()) < 0;</span> -<span class="lineNum"> 65 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 66 </span> : } -<span class="lineNum"> 67 </span><span class="lineCov"> 4 : bool Version::operator>=(const Version& pkg) const</span> -<span class="lineNum"> 68 </span> : { -<span class="lineNum"> 69 </span><span class="lineCov"> 4 : if (name() > pkg.name())</span> -<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 4 : if (name() == pkg.name())</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 3 : return debVS.CmpVersion(version(), pkg.version()) >= 0;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 74 </span> : } -<span class="lineNum"> 75 </span><span class="lineCov"> 5 : bool Version::operator>(const Version& pkg) const</span> -<span class="lineNum"> 76 </span> : { -<span class="lineNum"> 77 </span><span class="lineCov"> 5 : if (name() > pkg.name())</span> -<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 5 : if (name() == pkg.name())</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 4 : return debVS.CmpVersion(version(), pkg.version()) > 0;</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : } -<span class="lineNum"> 85 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 86 </span> : -<span class="lineNum"> 87 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/version.h.gcov.html b/rep/ept/apt/version.h.gcov.html deleted file mode 100644 index 0f48a29..0000000 --- a/rep/ept/apt/version.h.gcov.html +++ /dev/null @@ -1,161 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/version.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">9</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%">9</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #ifndef EPT_APT_VERSION_H -<span class="lineNum"> 2 </span> : #define EPT_APT_VERSION_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** \file -<span class="lineNum"> 5 </span> : * Representation of a package with a version -<span class="lineNum"> 6 </span> : */ -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : /* -<span class="lineNum"> 9 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.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 <string> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : namespace ept { -<span class="lineNum"> 29 </span> : namespace apt { -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : /** -<span class="lineNum"> 32 </span> : * Lightweight Version class that represent a package with a version, with very -<span class="lineNum"> 33 </span> : * cheap value copy operations. -<span class="lineNum"> 34 </span> : * -<span class="lineNum"> 35 </span> : * This class can be used to query package information from various information -<span class="lineNum"> 36 </span> : * sources. The purpose is create a middle ground that makes sure that all -<span class="lineNum"> 37 </span> : * sort of different information sources about packages are referring to the -<span class="lineNum"> 38 </span> : * same package. -<span class="lineNum"> 39 </span> : */ -<span class="lineNum"> 40 </span> : class Version -<span class="lineNum"> 41 </span><span class="lineCov"> 55 : {</span> -<span class="lineNum"> 42 </span> : protected: -<span class="lineNum"> 43 </span> : std::string m_name; -<span class="lineNum"> 44 </span> : std::string m_version; -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : public: -<span class="lineNum"> 47 </span> : /** -<span class="lineNum"> 48 </span> : * Create an invalid Version -<span class="lineNum"> 49 </span> : */ -<span class="lineNum"> 50 </span><span class="lineCov"> 7 : Version() {}</span> -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span> : /** -<span class="lineNum"> 53 </span> : * Create a Version from strings -<span class="lineNum"> 54 </span> : */ -<span class="lineNum"> 55 </span><span class="lineCov"> 34 : Version(const std::string& name, const std::string& version)</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 34 : : m_name(name), m_version(version) {}</span> -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : /** -<span class="lineNum"> 59 </span> : * Return the package name -<span class="lineNum"> 60 </span> : */ -<span class="lineNum"> 61 </span><span class="lineCov"> 81 : std::string name() const { return m_name; }</span> -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : /** -<span class="lineNum"> 64 </span> : * Return the package version, or the empty string if this is a -<span class="lineNum"> 65 </span> : * versionless package. -<span class="lineNum"> 66 </span> : */ -<span class="lineNum"> 67 </span><span class="lineCov"> 38 : std::string version() const { return m_version; }</span> -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span> : /** -<span class="lineNum"> 70 </span> : * Return the upstream part of the version -<span class="lineNum"> 71 </span> : */ -<span class="lineNum"> 72 </span> : std::string upstreamVersion() const; -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : /** -<span class="lineNum"> 75 </span> : * Return true if this package contains a valid value -<span class="lineNum"> 76 </span> : */ -<span class="lineNum"> 77 </span><span class="lineCov"> 11 : bool isValid() const { return !m_name.empty() && !m_version.empty(); }</span> -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span> : /** -<span class="lineNum"> 80 </span> : * Comparison operators -<span class="lineNum"> 81 </span> : */ -<span class="lineNum"> 82 </span><span class="lineCov"> 9 : bool operator==(const Version& pkg) const { return m_name == pkg.m_name && m_version == pkg.m_version; }</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 5 : bool operator!=(const Version& pkg) const { return m_name != pkg.m_name || m_version != pkg.m_version; }</span> -<span class="lineNum"> 84 </span> : bool operator<=(const Version& pkg) const; -<span class="lineNum"> 85 </span> : bool operator<(const Version& pkg) const; -<span class="lineNum"> 86 </span> : bool operator>=(const Version& pkg) const; -<span class="lineNum"> 87 </span> : bool operator>(const Version& pkg) const; -<span class="lineNum"> 88 </span> : }; -<span class="lineNum"> 89 </span> : -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 94 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/apt/version.test.h.gcov.html b/rep/ept/apt/version.test.h.gcov.html deleted file mode 100644 index 0f645e7..0000000 --- a/rep/ept/apt/version.test.h.gcov.html +++ /dev/null @@ -1,203 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/apt/version.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/apt</a> - version.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">71</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%">71</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /* -<span class="lineNum"> 2 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 3 </span> : * -<span class="lineNum"> 4 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 5 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 6 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 7 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 8 </span> : * -<span class="lineNum"> 9 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 10 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 11 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 12 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 13 </span> : * -<span class="lineNum"> 14 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 15 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 16 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 17 </span> : */ -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span> : #include <ept/test.h> -<span class="lineNum"> 20 </span> : #include <ept/apt/version.h> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : using namespace std; -<span class="lineNum"> 23 </span> : using namespace ept::apt; -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : struct TestAptVersion { -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : // Basic test for invalid version -<span class="lineNum"> 28 </span><span class="lineCov"> 1 : Test invalid()</span> -<span class="lineNum"> 29 </span> : { -<span class="lineNum"> 30 </span><span class="lineCov"> 1 : Version test;</span> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : assert_eq(test.name(), "");</span> -<span class="lineNum"> 33 </span><span class="lineCov"> 1 : assert_eq(test.version(), "");</span> -<span class="lineNum"> 34 </span><span class="lineCov"> 1 : assert_eq(test.isValid(), false);</span> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 1 : string p = test.name();</span> -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : assert_eq(p, string());</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : // Basic test for version -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : Test basic()</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : Version test("test", "1.0");</span> -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span><span class="lineCov"> 2 : assert_eq(test.name(), "test");</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : assert_eq(test.version(), "1.0");</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : assert_eq(test.isValid(), true);</span> -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : string p = test.name();</span> -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 1 : assert_eq(p, "test");</span> -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : Version v(p, "1.1");</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert_eq(v.name(), "test");</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1 : assert_eq(v.version(), "1.1");</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : assert_eq(v.isValid(), true);</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span> : // Comparison semanthics -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test comparison()</span> -<span class="lineNum"> 62 </span> : { -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : Version test("test", "1.0");</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 2 : Version test1("test", "1.0");</span> -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineCov"> 2 : assert(test == test1);</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 2 : assert(! (test != test1));</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 2 : assert(! (test < test1));</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 2 : assert(! (test > test1));</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 2 : assert(test <= test1);</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 2 : assert(test >= test1);</span> -<span class="lineNum"> 72 </span> : -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : Version test2("test2", "1.0");</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 2 : assert(test != test2);</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 2 : assert(test != test2);</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 2 : assert(test < test2);</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 2 : assert(! (test > test2));</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert(test <= test2);</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 2 : assert(! (test >= test2));</span> -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span><span class="lineCov"> 2 : Version test3("test", "2.0");</span> -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span><span class="lineCov"> 2 : assert(test != test3);</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert(test != test3);</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert(test < test3);</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : assert(! (test > test3));</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 2 : assert(test <= test3);</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 2 : assert(! (test >= test3));</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : // Value-copy semanthics -<span class="lineNum"> 95 </span><span class="lineCov"> 1 : Test valueCopy()</span> -<span class="lineNum"> 96 </span> : { -<span class="lineNum"> 97 </span><span class="lineCov"> 1 : Version test("test", "1.0");</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 1 : Version test1 = test;</span> -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : assert(test == test1);</span> -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span><span class="lineCov"> 1 : Version test2;</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 1 : test2 = test;</span> -<span class="lineNum"> 104 </span><span class="lineCov"> 1 : assert(test == test2);</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 2 : assert(test1 == test2);</span> -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span><span class="lineCov"> 2 : Version test3("test", "1.0");</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 2 : assert(test == test3);</span> -<span class="lineNum"> 109 </span><span class="lineCov"> 2 : assert(test1 == test3);</span> -<span class="lineNum"> 110 </span><span class="lineCov"> 2 : assert(test2 == test3);</span> -<span class="lineNum"> 111 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span> : // Extraction of upstream version -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : Test upstreamVersion()</span> -<span class="lineNum"> 115 </span> : { -<span class="lineNum"> 116 </span><span class="lineCov"> 1 : assert_eq(Version("a", "10.0").upstreamVersion(), "10.0");</span> -<span class="lineNum"> 117 </span><span class="lineCov"> 2 : assert_eq(Version("a", "10.0-1").upstreamVersion(), "10.0");</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 2 : assert_eq(Version("a", "10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");</span> -<span class="lineNum"> 119 </span><span class="lineCov"> 2 : assert_eq(Version("a", "1.0:10.0~foo.1-1.0").upstreamVersion(), "10.0~foo.1");</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 121 </span> : -<span class="lineNum"> 122 </span> : // Debian policy comparison semanthics -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : Test policyComparison()</span> -<span class="lineNum"> 124 </span> : { -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : assert(Version("a", "10.0") > Version("a", "2.1"));</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 2 : assert(Version("a", "1:10.0") < Version("a", "2:2.1"));</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 2 : assert(Version("a", "10.0-1") < Version("a", "10.0-2"));</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 2 : assert(Version("a", "10.0-2") > Version("a", "10.0-1"));</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 2 : assert(Version("a", "1:10.0-1") <= Version("a", "1:10.0-1"));</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 2 : assert(Version("a", "1:10.0-1") >= Version("a", "1:10.0-1"));</span> -<span class="lineNum"> 131 </span> : // TODO: add more -<span class="lineNum"> 132 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 133 </span> : -<span class="lineNum"> 134 </span> : }; -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt.cpp.gcov.html b/rep/ept/core/apt.cpp.gcov.html deleted file mode 100644 index 159b490..0000000 --- a/rep/ept/core/apt.cpp.gcov.html +++ /dev/null @@ -1,90 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt.cpp</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.cpp</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">7</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%">7</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 3 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : namespace wfs = wibble::sys::fs; -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : namespace ept { -<span class="lineNum"> 8 </span> : namespace core { -<span class="lineNum"> 9 </span><span class="lineCov"> 45 : time_t aptTimestamp()</span> -<span class="lineNum"> 10 </span> : { -<span class="lineNum"> 11 </span> : std::auto_ptr<struct stat> st = wfs::stat( -<span class="lineNum"> 12 </span><span class="lineCov"> 45 : _config->FindFile( "Dir::Cache::pkgcache" ) );</span> -<span class="lineNum"> 13 </span><span class="lineCov"> 45 : time_t t1 = st.get() == NULL ? 0 : st->st_mtime;</span> -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span> : std::auto_ptr<struct stat> st1 = wfs::stat( -<span class="lineNum"> 16 </span><span class="lineCov"> 45 : _config->FindFile( "Dir::State::status" ) );</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 45 : time_t t2 = st1.get() == NULL ? 0 : st1->st_mtime;</span> -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span><span class="lineCov"> 45 : return t1 > t2 ? t1 : t2;</span> -<span class="lineNum"> 20 </span> : } -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : } -<span class="lineNum"> 23 </span><span class="lineCov"> 6 : }</span> -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt.h.gcov.html b/rep/ept/core/apt.h.gcov.html deleted file mode 100644 index b8d3ec9..0000000 --- a/rep/ept/core/apt.h.gcov.html +++ /dev/null @@ -1,474 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">173</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">79.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">138</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <string> -<span class="lineNum"> 4 </span> : #include <wibble/test.h> -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : #include <ept/token.h> -<span class="lineNum"> 7 </span> : #include <ept/core/source.h> -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : #include <iostream> -<span class="lineNum"> 10 </span> : #include <wibble/exception.h> -<span class="lineNum"> 11 </span> : -<span class="lineNum"> 12 </span> : #include <apt-pkg/pkgcache.h> -<span class="lineNum"> 13 </span> : #include <apt-pkg/sourcelist.h> -<span class="lineNum"> 14 </span> : #include <apt-pkg/error.h> -<span class="lineNum"> 15 </span> : #include <apt-pkg/policy.h> -<span class="lineNum"> 16 </span> : #include <apt-pkg/cachefile.h> -<span class="lineNum"> 17 </span> : #include <apt-pkg/progress.h> -<span class="lineNum"> 18 </span> : #include <apt-pkg/pkgcachegen.h> -<span class="lineNum"> 19 </span> : #include <apt-pkg/init.h> -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span> : #ifndef EPT_APT_H -<span class="lineNum"> 22 </span> : #define EPT_APT_H -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span> : namespace ept { -<span class="lineNum"> 25 </span> : namespace core { -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span><span class="lineNoCov"> 0 : struct AptException : wibble::exception::Generic {</span> -<span class="lineNum"> 28 </span><span class="lineNoCov"> 0 : std::string desc() const throw () {</span> -<span class="lineNum"> 29 </span><span class="lineNoCov"> 0 : return "APT Error";</span> -<span class="lineNum"> 30 </span> : } -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineNoCov"> 0 : AptException( const std::string &ctx ) : Generic( ctx ) {</span> -<span class="lineNum"> 33 </span><span class="lineNoCov"> 0 : while ( !_error->empty() ) {</span> -<span class="lineNum"> 34 </span><span class="lineNoCov"> 0 : std::string err;</span> -<span class="lineNum"> 35 </span><span class="lineNoCov"> 0 : _error->PopMessage( err );</span> -<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : std::cerr << err << std::endl;</span> -<span class="lineNum"> 37 </span><span class="lineNoCov"> 0 : addContext( err );</span> -<span class="lineNum"> 38 </span> : } -<span class="lineNum"> 39 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 40 </span> : }; -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span> : struct PackageState { -<span class="lineNum"> 43 </span> : enum Query { -<span class="lineNum"> 44 </span> : Install = 1 << 0, -<span class="lineNum"> 45 </span> : Upgrade = 1 << 1, -<span class="lineNum"> 46 </span> : Keep = 1 << 2, -<span class="lineNum"> 47 </span> : Remove = 1 << 3, -<span class="lineNum"> 48 </span> : Installed = 1 << 4, -<span class="lineNum"> 49 </span> : Upgradable = 1 << 5, -<span class="lineNum"> 50 </span> : NowBroken = 1 << 6, -<span class="lineNum"> 51 </span> : WillBreak = 1 << 7, -<span class="lineNum"> 52 </span> : ReInstall = 1 << 8, -<span class="lineNum"> 53 </span> : Purge = 1 << 9, -<span class="lineNum"> 54 </span> : Hold = 1 << 10, -<span class="lineNum"> 55 </span> : Valid = 1 << 11 -<span class="lineNum"> 56 </span> : }; -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : typedef unsigned state; -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span><span class="lineCov"> 3786 : operator unsigned() { return m_state; };</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : PackageState &operator=( unsigned i ) { -<span class="lineNum"> 63 </span> : m_state = i; -<span class="lineNum"> 64 </span> : return *this; -<span class="lineNum"> 65 </span> : } -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineCov"> 5218 : PackageState &operator|=( const PackageState &s ) {</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 5218 : m_state |= s.m_state;</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 5218 : return *this;</span> -<span class="lineNum"> 70 </span> : } -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span><span class="lineCov"> 9003 : PackageState( unsigned a ) {</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 9003 : m_state = a;</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 9003 : }</span> -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : PackageState() : m_state( 0 ) {}</span> -<span class="lineNum"> 77 </span> : -<span class="lineNum"> 78 </span> : // FIXME this probably needs to be used consistently in core and out of core -<span class="lineNum"> 79 </span><span class="lineCov"> 2 : bool isValid() const { return m_state & Valid; }</span> -<span class="lineNum"> 80 </span> : // FIXME compatibility API for non-core apt -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : bool isInstalled() const { return installed(); }</span> -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span><span class="lineCov"> 2 : bool install() const { return m_state & Install; }</span> -<span class="lineNum"> 84 </span> : // reinstall() implies install() -<span class="lineNum"> 85 </span> : bool reinstall() const { return m_state & ReInstall; } -<span class="lineNum"> 86 </span> : bool remove() const { return m_state & Remove; } -<span class="lineNum"> 87 </span> : // purge() implies remove() -<span class="lineNum"> 88 </span><span class="lineCov"> 3775 : bool purge() const { return m_state & Purge; }</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 3780 : bool keep() const { return m_state & Keep; }</span> -<span class="lineNum"> 90 </span> : bool willBreak() const { return m_state & WillBreak; } -<span class="lineNum"> 91 </span> : // upgrade() implies install() -<span class="lineNum"> 92 </span> : bool upgrade() const { return hasNewVersion() && install(); } -<span class="lineNum"> 93 </span> : // newInsstal() implies install() -<span class="lineNum"> 94 </span> : bool newInstall() const { return !installed() && install(); } -<span class="lineNum"> 95 </span> : bool hold() const { return m_state & Hold; } -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span><span class="lineCov"> 1 : bool installed() const { return m_state & Installed; }</span> -<span class="lineNum"> 98 </span> : bool hasNewVersion() const { return m_state & Upgradable; } -<span class="lineNum"> 99 </span> : bool upgradable() const { return hasNewVersion() && !hold(); } -<span class="lineNum"> 100 </span> : bool held() const { return hasNewVersion() && hold(); } -<span class="lineNum"> 101 </span> : bool nowBroken() const { return m_state & NowBroken; } -<span class="lineNum"> 102 </span> : -<span class="lineNum"> 103 </span> : bool modify() const { return install() || remove(); } -<span class="lineNum"> 104 </span> : -<span class="lineNum"> 105 </span> : protected: -<span class="lineNum"> 106 </span> : unsigned m_state; -<span class="lineNum"> 107 </span> : }; -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : time_t aptTimestamp(); -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span> : // wrap the apt's database -<span class="lineNum"> 112 </span> : struct AptDatabase { -<span class="lineNum"> 113 </span><span class="lineCov"> 5093 : pkgCache &cache() {</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 5093 : if ( !m_cache )</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 20 : openCache();</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 5093 : return *m_cache;</span> -<span class="lineNum"> 117 </span> : } -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span><span class="lineCov"> 3793 : pkgDepCache &state() {</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 3793 : if ( !m_state )</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 5 : openState();</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 3793 : return *m_state;</span> -<span class="lineNum"> 123 </span> : } -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span><span class="lineCov"> 1436 : pkgPolicy &policy() {</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 1436 : if ( !m_policy )</span> -<span class="lineNum"> 127 </span><span class="lineNoCov"> 0 : openCache();</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 1436 : return *m_policy;</span> -<span class="lineNum"> 129 </span> : } -<span class="lineNum"> 130 </span> : -<span class="lineNum"> 131 </span> : OpProgress *m_progress; -<span class="lineNum"> 132 </span> : bool m_tryWriteable; -<span class="lineNum"> 133 </span> : bool m_writeable; -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : time_t timestamp() { -<span class="lineNum"> 136 </span> : return aptTimestamp(); -<span class="lineNum"> 137 </span> : } -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span><span class="lineCov"> 73 : AptDatabase() {</span> -<span class="lineNum"> 140 </span><span class="lineCov"> 73 : m_cache = 0;</span> -<span class="lineNum"> 141 </span><span class="lineCov"> 73 : m_state = 0;</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 73 : m_policy = 0;</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 73 : m_progress = new OpProgress();</span> -<span class="lineNum"> 144 </span><span class="lineCov"> 73 : m_tryWriteable = true;</span> -<span class="lineNum"> 145 </span><span class="lineCov"> 73 : m_writeable = false;</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 73 : }</span> -<span class="lineNum"> 147 </span> : -<span class="lineNum"> 148 </span> : void setProgress( OpProgress *p ) { -<span class="lineNum"> 149 </span> : m_progress = p; -<span class="lineNum"> 150 </span> : } -<span class="lineNum"> 151 </span> : -<span class="lineNum"> 152 </span> : bool writeable() { -<span class="lineNum"> 153 </span> : if ( !m_cache ) -<span class="lineNum"> 154 </span> : openCache(); -<span class="lineNum"> 155 </span> : return m_writeable; -<span class="lineNum"> 156 </span> : } -<span class="lineNum"> 157 </span> : -<span class="lineNum"> 158 </span><span class="lineCov"> 5 : void openState() {</span> -<span class="lineNum"> 159 </span><span class="lineCov"> 5 : m_state = new pkgDepCache( &cache(), m_policy );</span> -<span class="lineNum"> 160 </span><span class="lineCov"> 5 : m_state->Init( m_progress );</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 5 : m_progress->Done();</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 5 : }</span> -<span class="lineNum"> 163 </span> : -<span class="lineNum"> 164 </span><span class="lineCov"> 20 : void openCache() {</span> -<span class="lineNum"> 165 </span><span class="lineCov"> 20 : if ( !_config->FindB("Initialized") ) {</span> -<span class="lineNum"> 166 </span><span class="lineNoCov"> 0 : pkgInitConfig(*_config);</span> -<span class="lineNum"> 167 </span><span class="lineNoCov"> 0 : _config->Set("Initialized", 1);</span> -<span class="lineNum"> 168 </span><span class="lineNoCov"> 0 : pkgInitSystem(*_config, _system);</span> -<span class="lineNum"> 169 </span> : } -<span class="lineNum"> 170 </span> : -<span class="lineNum"> 171 </span><span class="lineCov"> 20 : m_writeable = m_tryWriteable;</span> -<span class="lineNum"> 172 </span> : -<span class="lineNum"> 173 </span><span class="lineCov"> 20 : if ( m_tryWriteable ) {</span> -<span class="lineNum"> 174 </span> : try { -<span class="lineNum"> 175 </span><span class="lineCov"> 20 : _system->Lock();</span> -<span class="lineNum"> 176 </span><span class="lineNoCov"> 0 : } catch ( std::exception e ) {</span> -<span class="lineNum"> 177 </span><span class="lineNoCov"> 0 : m_tryWriteable = false;</span> -<span class="lineNum"> 178 </span><span class="lineNoCov"> 0 : openCache();</span> -<span class="lineNum"> 179 </span><span class="lineNoCov"> 0 : m_tryWriteable = true;</span> -<span class="lineNum"> 180 </span><span class="lineNoCov"> 0 : throw;</span> -<span class="lineNum"> 181 </span> : } -<span class="lineNum"> 182 </span> : } -<span class="lineNum"> 183 </span> : -<span class="lineNum"> 184 </span><span class="lineCov"> 20 : pkgSourceList list;</span> -<span class="lineNum"> 185 </span><span class="lineCov"> 20 : if ( list.ReadMainList() == false ) {</span> -<span class="lineNum"> 186 </span><span class="lineNoCov"> 0 : _error->DumpErrors();</span> -<span class="lineNum"> 187 </span> : throw wibble::exception::System( -<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : "The list of sources could not be read." );</span> -<span class="lineNum"> 189 </span> : } -<span class="lineNum"> 190 </span> : -<span class="lineNum"> 191 </span><span class="lineCov"> 20 : MMap *m = 0;</span> -<span class="lineNum"> 192 </span><span class="lineCov"> 20 : bool Res = pkgMakeStatusCache( list, *m_progress, &m, !m_writeable );</span> -<span class="lineNum"> 193 </span> : -<span class="lineNum"> 194 </span><span class="lineCov"> 20 : if ( !Res ) {</span> -<span class="lineNum"> 195 </span> : std::cerr << "The package lists or status file " -<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : "could not be parsed or opened." << std::endl;</span> -<span class="lineNum"> 197 </span> : throw AptException( -<span class="lineNum"> 198 </span> : "The package lists or status file " -<span class="lineNum"> 199 </span><span class="lineNoCov"> 0 : "could not be parsed or opened." );</span> -<span class="lineNum"> 200 </span> : } -<span class="lineNum"> 201 </span> : -<span class="lineNum"> 202 </span><span class="lineCov"> 20 : m_cache = new pkgCache( m, true );</span> -<span class="lineNum"> 203 </span><span class="lineCov"> 40 : m_policy = new pkgPolicy( m_cache );</span> -<span class="lineNum"> 204 </span><span class="lineCov"> 40 : if ( ReadPinFile( *m_policy ) == false )</span> -<span class="lineNum"> 205 </span><span class="lineNoCov"> 0 : throw wibble::exception::System( "error reading pin file" );</span> -<span class="lineNum"> 206 </span><span class="lineCov"> 20 : m_progress->Done();</span> -<span class="lineNum"> 207 </span><span class="lineCov"> 20 : }</span> -<span class="lineNum"> 208 </span> : -<span class="lineNum"> 209 </span><span class="lineCov"> 74 : void invalidate() {</span> -<span class="lineNum"> 210 </span><span class="lineCov"> 74 : if ( _config->FindB("Initialized") ) {</span> -<span class="lineNum"> 211 </span><span class="lineCov"> 74 : _system->UnLock();</span> -<span class="lineNum"> 212 </span> : } -<span class="lineNum"> 213 </span> : -<span class="lineNum"> 214 </span><span class="lineCov"> 74 : delete m_state;</span> -<span class="lineNum"> 215 </span><span class="lineCov"> 74 : m_state = 0;</span> -<span class="lineNum"> 216 </span><span class="lineCov"> 74 : delete m_policy;</span> -<span class="lineNum"> 217 </span><span class="lineCov"> 74 : m_policy = 0;</span> -<span class="lineNum"> 218 </span><span class="lineCov"> 74 : delete m_cache;</span> -<span class="lineNum"> 219 </span><span class="lineCov"> 74 : m_cache = 0;</span> -<span class="lineNum"> 220 </span><span class="lineCov"> 74 : }</span> -<span class="lineNum"> 221 </span> : -<span class="lineNum"> 222 </span> : pkgCache::VerIterator anyVersion( pkgCache::PkgIterator pi ) { -<span class="lineNum"> 223 </span> : if ( pi.end() ) return pkgCache::VerIterator(); -<span class="lineNum"> 224 </span> : return pi.VersionList(); -<span class="lineNum"> 225 </span> : } -<span class="lineNum"> 226 </span> : -<span class="lineNum"> 227 </span><span class="lineCov"> 5 : Token candidateVersion( Token p ) {</span> -<span class="lineNum"> 228 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = cache().FindPkg( p.package() );</span> -<span class="lineNum"> 229 </span><span class="lineCov"> 6 : if ( pi.end() ) return Token();</span> -<span class="lineNum"> 230 </span><span class="lineCov"> 4 : pkgCache::VerIterator vi = policy().GetCandidateVer( pi );</span> -<span class="lineNum"> 231 </span><span class="lineCov"> 4 : if ( vi.end() ) return Token();</span> -<span class="lineNum"> 232 </span> : -<span class="lineNum"> 233 </span><span class="lineCov"> 4 : Token t; t._id = p.package() + "_" + vi.VerStr();</span> -<span class="lineNum"> 234 </span><span class="lineCov"> 4 : return t;</span> -<span class="lineNum"> 235 </span> : } -<span class="lineNum"> 236 </span> : -<span class="lineNum"> 237 </span><span class="lineCov"> 1432 : pkgCache::VerIterator candidateVersion( pkgCache::PkgIterator pi ) {</span> -<span class="lineNum"> 238 </span><span class="lineCov"> 1432 : if ( pi.end() ) return pkgCache::VerIterator();</span> -<span class="lineNum"> 239 </span><span class="lineCov"> 1432 : pkgCache::VerIterator vi = policy().GetCandidateVer( pi );</span> -<span class="lineNum"> 240 </span><span class="lineCov"> 1432 : if ( vi.end() ) return pkgCache::VerIterator();</span> -<span class="lineNum"> 241 </span><span class="lineCov"> 1432 : return vi;</span> -<span class="lineNum"> 242 </span> : } -<span class="lineNum"> 243 </span> : -<span class="lineNum"> 244 </span><span class="lineCov"> 1432 : pkgCache::VerIterator installedVersion( pkgCache::PkgIterator pi ) {</span> -<span class="lineNum"> 245 </span><span class="lineCov"> 1432 : if ( pi.end() ) return pkgCache::VerIterator();</span> -<span class="lineNum"> 246 </span> : pkgCache::VerIterator vi = pkgCache::VerIterator( cache(), -<span class="lineNum"> 247 </span><span class="lineCov"> 1432 : cache().VerP + pi->CurrentVer );</span> -<span class="lineNum"> 248 </span><span class="lineCov"> 1432 : if ( vi.end() ) return pkgCache::VerIterator();</span> -<span class="lineNum"> 249 </span><span class="lineCov"> 1432 : return vi;</span> -<span class="lineNum"> 250 </span> : } -<span class="lineNum"> 251 </span> : -<span class="lineNum"> 252 </span><span class="lineCov"> 27 : pkgCache::PkgIterator lookupPackage( Token t ) {</span> -<span class="lineNum"> 253 </span><span class="lineCov"> 27 : return cache().FindPkg( t.package() );</span> -<span class="lineNum"> 254 </span> : } -<span class="lineNum"> 255 </span> : -<span class="lineNum"> 256 </span><span class="lineCov"> 5 : pkgCache::VerIterator lookupVersion( Token t ) {</span> -<span class="lineNum"> 257 </span><span class="lineCov"> 5 : if ( !t.hasVersion() )</span> -<span class="lineNum"> 258 </span><span class="lineCov"> 5 : t = candidateVersion( t );</span> -<span class="lineNum"> 259 </span><span class="lineCov"> 5 : pkgCache::PkgIterator pi = lookupPackage( t );</span> -<span class="lineNum"> 260 </span><span class="lineCov"> 5 : if ( pi.end() )</span> -<span class="lineNum"> 261 </span><span class="lineCov"> 1 : return pkgCache::VerIterator();</span> -<span class="lineNum"> 262 </span><span class="lineCov"> 4 : for (pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); ++vi)</span> -<span class="lineNum"> 263 </span><span class="lineCov"> 4 : if ( t.version() == vi.VerStr() )</span> -<span class="lineNum"> 264 </span><span class="lineCov"> 4 : return vi;</span> -<span class="lineNum"> 265 </span><span class="lineNoCov"> 0 : return pkgCache::VerIterator();</span> -<span class="lineNum"> 266 </span> : } -<span class="lineNum"> 267 </span> : -<span class="lineNum"> 268 </span> : static pkgCache::VerFileIterator lookupVersionFile( -<span class="lineNum"> 269 </span><span class="lineCov"> 5 : pkgCache::VerIterator vi )</span> -<span class="lineNum"> 270 </span> : { -<span class="lineNum"> 271 </span><span class="lineCov"> 5 : if ( vi.end() )</span> -<span class="lineNum"> 272 </span><span class="lineCov"> 1 : return pkgCache::VerFileIterator();</span> -<span class="lineNum"> 273 </span><span class="lineCov"> 4 : pkgCache::VerFileIterator vfi = vi.FileList();</span> -<span class="lineNum"> 274 </span><span class="lineCov"> 4 : for ( ; !vfi.end(); vfi++ )</span> -<span class="lineNum"> 275 </span><span class="lineCov"> 4 : if ( ( vfi.File()->Flags & pkgCache::Flag::NotSource ) == 0)</span> -<span class="lineNum"> 276 </span><span class="lineCov"> 4 : break;</span> -<span class="lineNum"> 277 </span><span class="lineCov"> 4 : if ( vfi.end() )</span> -<span class="lineNum"> 278 </span><span class="lineNoCov"> 0 : vfi = vi.FileList();</span> -<span class="lineNum"> 279 </span><span class="lineCov"> 4 : return vfi;</span> -<span class="lineNum"> 280 </span> : } -<span class="lineNum"> 281 </span> : -<span class="lineNum"> 282 </span><span class="lineNoCov"> 0 : PackageState invalidState() {</span> -<span class="lineNum"> 283 </span><span class="lineNoCov"> 0 : return PackageState( PackageState::NowBroken | PackageState::Keep );</span> -<span class="lineNum"> 284 </span> : } -<span class="lineNum"> 285 </span> : -<span class="lineNum"> 286 </span><span class="lineCov"> 3784 : PackageState packageState( pkgCache::PkgIterator P )</span> -<span class="lineNum"> 287 </span> : { -<span class="lineNum"> 288 </span><span class="lineCov"> 3784 : PackageState s = 0;</span> -<span class="lineNum"> 289 </span><span class="lineCov"> 3784 : if ( P.end() )</span> -<span class="lineNum"> 290 </span><span class="lineNoCov"> 0 : return invalidState();</span> -<span class="lineNum"> 291 </span><span class="lineCov"> 3784 : if ( ! ( P->CurrentState == pkgCache::State::ConfigFiles</span> -<span class="lineNum"> 292 </span> : || P->CurrentState == pkgCache::State::NotInstalled ) ) -<span class="lineNum"> 293 </span><span class="lineCov"> 1432 : s |= PackageState::Installed;</span> -<span class="lineNum"> 294 </span><span class="lineCov"> 3784 : if ( s & PackageState::Installed &&</span> -<span class="lineNum"> 295 </span> : candidateVersion( P ) != installedVersion( P ) ) -<span class="lineNum"> 296 </span><span class="lineCov"> 1 : s |= PackageState::Upgradable;</span> -<span class="lineNum"> 297 </span><span class="lineCov"> 3784 : pkgDepCache::StateCache S = state()[ P ];</span> -<span class="lineNum"> 298 </span><span class="lineCov"> 3784 : if ( S.Install() )</span> -<span class="lineNum"> 299 </span><span class="lineCov"> 3 : s |= PackageState::Install;</span> -<span class="lineNum"> 300 </span><span class="lineCov"> 3784 : if ( ( S.iFlags & pkgDepCache::ReInstall )</span> -<span class="lineNum"> 301 </span> : == pkgDepCache::ReInstall ) -<span class="lineNum"> 302 </span><span class="lineNoCov"> 0 : s |= PackageState::ReInstall;</span> -<span class="lineNum"> 303 </span><span class="lineCov"> 3784 : if ( S.Keep() )</span> -<span class="lineNum"> 304 </span><span class="lineCov"> 3780 : s |= PackageState::Keep;</span> -<span class="lineNum"> 305 </span><span class="lineCov"> 3784 : if ( S.Delete() )</span> -<span class="lineNum"> 306 </span><span class="lineCov"> 1 : s |= PackageState::Remove;</span> -<span class="lineNum"> 307 </span><span class="lineCov"> 3784 : if ( ( S.iFlags & pkgDepCache::Purge ) == pkgDepCache::Purge )</span> -<span class="lineNum"> 308 </span><span class="lineNoCov"> 0 : s |= PackageState::Purge;</span> -<span class="lineNum"> 309 </span><span class="lineCov"> 3784 : if ( S.NowBroken() )</span> -<span class="lineNum"> 310 </span><span class="lineCov"> 1 : s |= PackageState::NowBroken;</span> -<span class="lineNum"> 311 </span><span class="lineCov"> 3784 : if ( S.InstBroken() )</span> -<span class="lineNum"> 312 </span><span class="lineNoCov"> 0 : s |= PackageState::WillBreak;</span> -<span class="lineNum"> 313 </span><span class="lineCov"> 3784 : if ( P->SelectedState == pkgCache::State::Hold )</span> -<span class="lineNum"> 314 </span><span class="lineNoCov"> 0 : s |= PackageState::Hold;</span> -<span class="lineNum"> 315 </span><span class="lineCov"> 3784 : return s;</span> -<span class="lineNum"> 316 </span> : } -<span class="lineNum"> 317 </span> : -<span class="lineNum"> 318 </span><span class="lineCov"> 1 : PackageState packageState( Token t ) {</span> -<span class="lineNum"> 319 </span><span class="lineCov"> 1 : t = validate( t );</span> -<span class="lineNum"> 320 </span><span class="lineCov"> 1 : if ( t.valid() )</span> -<span class="lineNum"> 321 </span><span class="lineCov"> 1 : return packageState( lookupPackage( t ) );</span> -<span class="lineNum"> 322 </span><span class="lineNoCov"> 0 : return invalidState();</span> -<span class="lineNum"> 323 </span> : } -<span class="lineNum"> 324 </span> : -<span class="lineNum"> 325 </span><span class="lineCov"> 4 : Token validate( Token t ) {</span> -<span class="lineNum"> 326 </span><span class="lineCov"> 4 : if ( t.hasVersion() )</span> -<span class="lineNum"> 327 </span><span class="lineNoCov"> 0 : return lookupVersion( t ).end() ? Token() : t;</span> -<span class="lineNum"> 328 </span><span class="lineCov"> 4 : return lookupPackage( t ).end() ? Token() : t;</span> -<span class="lineNum"> 329 </span> : } -<span class="lineNum"> 330 </span> : -<span class="lineNum"> 331 </span><span class="lineCov"> 73 : ~AptDatabase() {</span> -<span class="lineNum"> 332 </span><span class="lineCov"> 73 : invalidate();</span> -<span class="lineNum"> 333 </span><span class="lineCov"> 73 : }</span> -<span class="lineNum"> 334 </span> : -<span class="lineNum"> 335 </span> : protected: -<span class="lineNum"> 336 </span> : pkgCache *m_cache; -<span class="lineNum"> 337 </span> : pkgDepCache *m_state; -<span class="lineNum"> 338 </span> : pkgPolicy *m_policy; -<span class="lineNum"> 339 </span> : }; -<span class="lineNum"> 340 </span> : -<span class="lineNum"> 341 </span> : template< typename Internal > -<span class="lineNum"> 342 </span> : struct AptInternalList { -<span class="lineNum"> 343 </span> : Internal m_head; -<span class="lineNum"> 344 </span> : typedef Internal Type; -<span class="lineNum"> 345 </span><span class="lineCov"> 11331 : AptInternalList tail() const {</span> -<span class="lineNum"> 346 </span><span class="lineCov"> 11331 : AptInternalList t = *this;</span> -<span class="lineNum"> 347 </span><span class="lineCov"> 11331 : t.m_head++;</span> -<span class="lineNum"> 348 </span> : return t; -<span class="lineNum"> 349 </span> : } -<span class="lineNum"> 350 </span><span class="lineCov"> 7554 : const Internal &head() const { return m_head; }</span> -<span class="lineNum"> 351 </span><span class="lineCov"> 3781 : Internal &head() { return m_head; }</span> -<span class="lineNum"> 352 </span><span class="lineCov"> 11334 : bool empty() const { return m_head.end(); }</span> -<span class="lineNum"> 353 </span><span class="lineCov"> 3 : AptInternalList( Internal head ) : m_head( head ) {}</span> -<span class="lineNum"> 354 </span> : AptInternalList() {} -<span class="lineNum"> 355 </span> : }; -<span class="lineNum"> 356 </span> : -<span class="lineNum"> 357 </span> : namespace version { -<span class="lineNum"> 358 </span> : -<span class="lineNum"> 359 </span> : typedef enum { Package, VersionString, Section, Architecture, -<span class="lineNum"> 360 </span> : Depends, Recommends, Record } PropertyId; -<span class="lineNum"> 361 </span> : -<span class="lineNum"> 362 </span> : typedef pkgCache::VerIterator Internal; -<span class="lineNum"> 363 </span> : template< PropertyId > struct PropertyType {}; -<span class="lineNum"> 364 </span> : -<span class="lineNum"> 365 </span> : } -<span class="lineNum"> 366 </span> : -<span class="lineNum"> 367 </span> : namespace package { -<span class="lineNum"> 368 </span> : -<span class="lineNum"> 369 </span> : typedef enum { Name, Versions, AnyVersion, State, CandidateVersion, -<span class="lineNum"> 370 </span> : InstalledVersion } PropertyId; -<span class="lineNum"> 371 </span> : typedef pkgCache::PkgIterator Internal; -<span class="lineNum"> 372 </span> : template< PropertyId > struct PropertyType {}; -<span class="lineNum"> 373 </span> : -<span class="lineNum"> 374 </span> : struct VersionList { -<span class="lineNum"> 375 </span> : version::Internal m_head; -<span class="lineNum"> 376 </span> : VersionList tail() const; -<span class="lineNum"> 377 </span> : const version::Internal &head() const { return m_head; } -<span class="lineNum"> 378 </span> : version::Internal &head() { return m_head; } -<span class="lineNum"> 379 </span> : }; -<span class="lineNum"> 380 </span> : -<span class="lineNum"> 381 </span> : typedef AptInternalList< Internal > InternalList; -<span class="lineNum"> 382 </span> : -<span class="lineNum"> 383 </span> : } -<span class="lineNum"> 384 </span> : -<span class="lineNum"> 385 </span> : namespace record { -<span class="lineNum"> 386 </span> : -<span class="lineNum"> 387 </span> : typedef enum { Record, Name, Priority, Section, InstalledSize, Maintainer, -<span class="lineNum"> 388 </span> : Architecture, SourcePackage, Version, Description, -<span class="lineNum"> 389 </span> : ShortDescription, LongDescription, PackageSize } PropertyId; -<span class="lineNum"> 390 </span> : -<span class="lineNum"> 391 </span> : extern const char *fields[]; -<span class="lineNum"> 392 </span> : -<span class="lineNum"> 393 </span> : typedef pkgCache::VerFileIterator Internal; -<span class="lineNum"> 394 </span> : -<span class="lineNum"> 395 </span> : template< PropertyId > struct PropertyType { -<span class="lineNum"> 396 </span> : typedef std::string T; -<span class="lineNum"> 397 </span> : }; -<span class="lineNum"> 398 </span> : -<span class="lineNum"> 399 </span> : } -<span class="lineNum"> 400 </span> : } -<span class="lineNum"> 401 </span> : } -<span class="lineNum"> 402 </span> : -<span class="lineNum"> 403 </span> : #include <ept/core/apt/package.h> -<span class="lineNum"> 404 </span> : #include <ept/core/apt/version.h> -<span class="lineNum"> 405 </span> : #include <ept/core/apt/record.h> -<span class="lineNum"> 406 </span> : -<span class="lineNum"> 407 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt.test.h.gcov.html b/rep/ept/core/apt.test.h.gcov.html deleted file mode 100644 index 8586911..0000000 --- a/rep/ept/core/apt.test.h.gcov.html +++ /dev/null @@ -1,162 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - apt.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">60</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%">60</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/config.h> -<span class="lineNum"> 3 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 4 </span> : #include <ept/core/list.h> -<span class="lineNum"> 5 </span> : #include <ept/test.h> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : using namespace ept::core; -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : struct TestCoreApt : AptTestEnvironment -<span class="lineNum"> 10 </span><span class="lineCov"> 12 : {</span> -<span class="lineNum"> 11 </span> : package::Source pkgs; -<span class="lineNum"> 12 </span> : version::Source vers; -<span class="lineNum"> 13 </span> : ept::Token t; -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span><span class="lineCov"> 12 : TestCoreApt() : pkgs( db ), vers( db ) {</span> -<span class="lineNum"> 16 </span><span class="lineCov"> 12 : t._id = "sp";</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 12 : }</span> -<span class="lineNum"> 18 </span> : -<span class="lineNum"> 19 </span><span class="lineCov"> 1 : Test token() {</span> -<span class="lineNum"> 20 </span><span class="lineCov"> 1 : assert_eq( t.package(), "sp" );</span> -<span class="lineNum"> 21 </span><span class="lineCov"> 2 : assert_eq( t.version(), "" );</span> -<span class="lineNum"> 22 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span><span class="lineCov"> 1 : Test tokenVersion() {</span> -<span class="lineNum"> 25 </span><span class="lineCov"> 1 : ept::Token t2;</span> -<span class="lineNum"> 26 </span><span class="lineCov"> 1 : t2._id = "libwibble-dev_0.1.10";</span> -<span class="lineNum"> 27 </span><span class="lineCov"> 1 : assert_eq( t2.package(), "libwibble-dev" );</span> -<span class="lineNum"> 28 </span><span class="lineCov"> 1 : assert_eq( t2.version(), "0.1.10" );</span> -<span class="lineNum"> 29 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test packageName() {</span> -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : assert_eq( t.package(), pkgs.get< package::Name >( t ) );</span> -<span class="lineNum"> 33 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : template< typename List > -<span class="lineNum"> 36 </span><span class="lineCov"> 1 : void checkPackageNameList( List l ) {</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 3779 : while ( !l.empty() ) {</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 3777 : assert_eq( l.token().package(), l.property() );</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 3777 : l = l.tail();</span> -<span class="lineNum"> 40 </span> : } -<span class="lineNum"> 41 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : template< typename List > -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : void checkVersionPackageList( List l ) {</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 1810 : while ( !l.empty() ) {</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 1808 : assert_eq( l.property().package(), l.token().package() );</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 3616 : assert_eq( l.property().version(), "" );</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1808 : l = l.tail();</span> -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 1 : Test packageCount() {</span> -<span class="lineNum"> 53 </span> : assert_eq( list::count( pkgs.list< package::Name >() ), -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : 3777 );</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : Test packageNameList() {</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 1 : checkPackageNameList( pkgs.list< package::Name >() );</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 60 </span> : -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : Test versionCount() {</span> -<span class="lineNum"> 62 </span> : assert_eq( list::count( vers.list< version::Package >() ), -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : 1808 );</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Test versionPackage() {</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : checkVersionPackageList( vers.list< version::Package >() );</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 69 </span> : -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test validate() {</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 1 : assert_eq( t, db.validate( t ) );</span> -<span class="lineNum"> 72 </span> : assert_neq( ept::Token( "libfoobar" ), -<span class="lineNum"> 73 </span><span class="lineCov"> 2 : db.validate( ept::Token( "libfooar" ) ) );</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert_eq( ept::Token(), db.validate( ept::Token( "libfoobar" ) ) );</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 76 </span> : -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : Test packageState() {</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : assert( db.packageState( t ) & PackageState::Keep );</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : Test packageState2() {</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ) & PackageState::Keep );</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineCov"> 1 : Test exists() {</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert( pkgs.exists( t ) );</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert( !pkgs.exists( ept::Token( "nonexistent-package" ) ) );</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 89 </span> : -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Test invalidate() {</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 1 : assert( pkgs.exists( t ) );</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : db.invalidate();</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 2 : assert( pkgs.exists( t ) );</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 95 </span> : }; -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/action.h.gcov.html b/rep/ept/core/apt/action.h.gcov.html deleted file mode 100644 index 08b2810..0000000 --- a/rep/ept/core/apt/action.h.gcov.html +++ /dev/null @@ -1,202 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/action.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - action.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">48</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">85.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">41</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <string> -<span class="lineNum"> 4 </span> : #include <ept/token.h> -<span class="lineNum"> 5 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 6 </span> : #include <apt-pkg/algorithms.h> -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : #ifndef EPT_APT_ACTION_H -<span class="lineNum"> 9 </span> : #define EPT_APT_ACTION_H -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : namespace ept { -<span class="lineNum"> 12 </span> : namespace core { -<span class="lineNum"> 13 </span> : namespace package { -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span><span class="lineCov"> 13 : struct Action {</span> -<span class="lineNum"> 16 </span> : enum Type { Install, ReInstall, Remove, Keep, Purge, SystemUpgrade }; -<span class="lineNum"> 17 </span> : Token m_token; -<span class="lineNum"> 18 </span> : Type m_type; -<span class="lineNum"> 19 </span> : -<span class="lineNum"> 20 </span><span class="lineCov"> 4 : Token token() { return m_token; }</span> -<span class="lineNum"> 21 </span> : Type type() { return m_type; } -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span><span class="lineCov"> 4 : void apply( package::Source &pkgs )</span> -<span class="lineNum"> 24 </span> : { -<span class="lineNum"> 25 </span><span class="lineCov"> 4 : Type a = m_type;</span> -<span class="lineNum"> 26 </span><span class="lineCov"> 4 : pkgDepCache &dc = pkgs.db().state();</span> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span><span class="lineCov"> 4 : if ( a == SystemUpgrade ) {</span> -<span class="lineNum"> 29 </span><span class="lineNoCov"> 0 : pkgDistUpgrade( dc );</span> -<span class="lineNum"> 30 </span> : } else { -<span class="lineNum"> 31 </span><span class="lineCov"> 4 : if ( !pkgs.exists( m_token ) )</span> -<span class="lineNum"> 32 </span><span class="lineNoCov"> 0 : return;</span> -<span class="lineNum"> 33 </span><span class="lineCov"> 4 : pkgCache::PkgIterator p = pkgs.lookupToken( m_token );</span> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span><span class="lineCov"> 4 : pkgProblemResolver fix( &dc );</span> -<span class="lineNum"> 36 </span><span class="lineCov"> 8 : if ( a == Install || a == ReInstall ) {</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 2 : fix.Clear( p );</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 2 : fix.Protect( p );</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 2 : dc.MarkInstall( p, true );</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 2 : fix.InstallProtect();</span> -<span class="lineNum"> 41 </span><span class="lineCov"> 2 : if ( a == ReInstall )</span> -<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : dc.SetReInstall( p, true );</span> -<span class="lineNum"> 43 </span><span class="lineCov"> 2 : } else if ( a == Remove || a == Purge ) {</span> -<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : fix.Clear( p );</span> -<span class="lineNum"> 45 </span><span class="lineNoCov"> 0 : fix.Protect( p );</span> -<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : fix.Remove( p );</span> -<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : dc.MarkDelete( p, a == Purge ? true : false );</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 2 : } else if ( a == Keep ) {</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 2 : fix.Clear( p );</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 2 : fix.Protect( p );</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 2 : dc.MarkKeep( p, true );</span> -<span class="lineNum"> 52 </span> : } -<span class="lineNum"> 53 </span><span class="lineCov"> 4 : fix.Resolve( true );</span> -<span class="lineNum"> 54 </span> : } -<span class="lineNum"> 55 </span> : } -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : bool redundant( package::Source &pkgs ) { -<span class="lineNum"> 58 </span> : if ( m_type == SystemUpgrade ) { -<span class="lineNum"> 59 </span> : // check whether we have any upgradable packages -<span class="lineNum"> 60 </span> : return false; -<span class="lineNum"> 61 </span> : } -<span class="lineNum"> 62 </span> : if ( !pkgs.exists( m_token ) ) -<span class="lineNum"> 63 </span> : return true; -<span class="lineNum"> 64 </span> : PackageState s = pkgs.db().packageState( m_token ); -<span class="lineNum"> 65 </span> : Type a = m_type; -<span class="lineNum"> 66 </span> : // if ( a == Keep && !s.upgradable() ) -<span class="lineNum"> 67 </span> : // return true; -<span class="lineNum"> 68 </span> : if ( ( a == Install || a == ReInstall ) -<span class="lineNum"> 69 </span> : && ( !s.upgradable() && s.installed() ) ) -<span class="lineNum"> 70 </span> : return true; -<span class="lineNum"> 71 </span> : if ( ( a == Remove || a == Purge ) && !s.installed() ) -<span class="lineNum"> 72 </span> : return true; -<span class="lineNum"> 73 </span> : return false; -<span class="lineNum"> 74 </span> : } -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 6 : Action( Token t, Type a )</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 6 : : m_token( t ), m_type( a )</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 6 : {}</span> -<span class="lineNum"> 79 </span> : }; -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 2 : struct ActionList {</span> -<span class="lineNum"> 82 </span> : typedef std::vector< Action > List; -<span class="lineNum"> 83 </span> : List m_list; -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : void clear() { -<span class="lineNum"> 86 </span> : m_list.clear(); -<span class="lineNum"> 87 </span> : } -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span><span class="lineCov"> 1 : bool empty() {</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : return m_list.empty();</span> -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span><span class="lineCov"> 3 : void add( Action a ) {</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 3 : List::iterator rm = m_list.end(), i;</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 3 : for ( i = m_list.begin(); i != m_list.end(); ++i ) {</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 2 : if ( i->token() == a.token() ) {</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 2 : rm = i;</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 2 : break;</span> -<span class="lineNum"> 99 </span> : } -<span class="lineNum"> 100 </span> : } -<span class="lineNum"> 101 </span><span class="lineCov"> 3 : if ( rm != m_list.end() )</span> -<span class="lineNum"> 102 </span><span class="lineCov"> 2 : m_list.erase( rm );</span> -<span class="lineNum"> 103 </span> : // if ( a.type() != Action::Keep ) -<span class="lineNum"> 104 </span><span class="lineCov"> 3 : m_list.push_back( a );</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : Action latest() { -<span class="lineNum"> 108 </span> : return m_list.back(); -<span class="lineNum"> 109 </span> : } -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span><span class="lineCov"> 1 : void replay( package::Source &pkgs ) {</span> -<span class="lineNum"> 112 </span><span class="lineCov"> 2 : for ( List::iterator i = m_list.begin(); i != m_list.end(); ++i ) {</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 1 : i->apply( pkgs );</span> -<span class="lineNum"> 114 </span> : } -<span class="lineNum"> 115 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 116 </span> : -<span class="lineNum"> 117 </span> : void prune( package::Source &pkgs ) { -<span class="lineNum"> 118 </span> : List l; -<span class="lineNum"> 119 </span> : std::swap( l, m_list ); -<span class="lineNum"> 120 </span> : for ( List::iterator i = m_list.begin(); i != m_list.end(); ++i ) { -<span class="lineNum"> 121 </span> : if ( !i->redundant( pkgs ) ) -<span class="lineNum"> 122 </span> : m_list.push_back( *i ); -<span class="lineNum"> 123 </span> : } -<span class="lineNum"> 124 </span> : /* We want to do but can't bind reference parameters.... (or -<span class="lineNum"> 125 </span> : maybe use remove_copy_if or whatever ... ugly -<span class="lineNum"> 126 </span> : std::remove_if( m_list.begin(), m_list.end(), std::bind2nd( -<span class="lineNum"> 127 </span> : std::mem_fun_ref( &Action::redundant ), pkgs ) ); */ -<span class="lineNum"> 128 </span> : } -<span class="lineNum"> 129 </span> : }; -<span class="lineNum"> 130 </span> : -<span class="lineNum"> 131 </span> : } -<span class="lineNum"> 132 </span> : } -<span class="lineNum"> 133 </span> : } -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/action.test.h.gcov.html b/rep/ept/core/apt/action.test.h.gcov.html deleted file mode 100644 index 86e5fcc..0000000 --- a/rep/ept/core/apt/action.test.h.gcov.html +++ /dev/null @@ -1,108 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/action.test.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - action.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">29</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%">29</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/core/apt/action.h> -<span class="lineNum"> 3 </span> : #include <ept/test.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : using namespace ept::core; -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : struct TestAptAction : AptTestEnvironment -<span class="lineNum"> 8 </span><span class="lineCov"> 3 : {</span> -<span class="lineNum"> 9 </span> : package::Source pkgs; -<span class="lineNum"> 10 </span><span class="lineCov"> 3 : TestAptAction() : pkgs( db ) {}</span> -<span class="lineNum"> 11 </span> : -<span class="lineNum"> 12 </span><span class="lineCov"> 1 : Test basic() {</span> -<span class="lineNum"> 13 </span><span class="lineCov"> 1 : ept::Token t( "sp" );</span> -<span class="lineNum"> 14 </span><span class="lineCov"> 2 : package::Action a( t, package::Action::Install );</span> -<span class="lineNum"> 15 </span><span class="lineCov"> 1 : a.apply( pkgs );</span> -<span class="lineNum"> 16 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ).install() );</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 1 : a = package::Action( t, package::Action::Keep );</span> -<span class="lineNum"> 18 </span><span class="lineCov"> 1 : a.apply( pkgs );</span> -<span class="lineNum"> 19 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ).keep() );</span> -<span class="lineNum"> 20 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span><span class="lineCov"> 1 : Test revert() {</span> -<span class="lineNum"> 23 </span><span class="lineCov"> 1 : ept::Token t( "sp" );</span> -<span class="lineNum"> 24 </span><span class="lineCov"> 2 : package::Action a( t, package::Action::Install );</span> -<span class="lineNum"> 25 </span><span class="lineCov"> 1 : a.apply( pkgs );</span> -<span class="lineNum"> 26 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ).install() );</span> -<span class="lineNum"> 27 </span><span class="lineCov"> 1 : pkgs.revertStates();</span> -<span class="lineNum"> 28 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ).keep() );</span> -<span class="lineNum"> 29 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test keep() {</span> -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : package::ActionList al;</span> -<span class="lineNum"> 33 </span><span class="lineCov"> 1 : ept::Token t( "sp" );</span> -<span class="lineNum"> 34 </span><span class="lineCov"> 2 : al.add( package::Action( t, package::Action::Install ) );</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 1 : assert( !al.empty() );</span> -<span class="lineNum"> 36 </span><span class="lineCov"> 2 : al.add( package::Action( t, package::Action::Remove ) );</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 1 : al.add( package::Action( t, package::Action::Keep ) );</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : al.replay( pkgs );</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 1 : assert( pkgs.get< package::State >( t ).keep() );</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 41 </span> : }; -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/index.html b/rep/ept/core/apt/index.html deleted file mode 100644 index ebae680..0000000 --- a/rep/ept/core/apt/index.html +++ /dev/null @@ -1,155 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/core/apt</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">334</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">91.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">307</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="action.h.gcov.html">action.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=85 height=10 alt="85.4%"><img src="../../../snow.png" width=15 height=10 alt="85.4%"></td></tr></table> - </td> - <td class="coverPerHi">85.4 %</td> - <td class="coverNumHi">41 / 48 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="action.test.h.gcov.html">action.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">29 / 29 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="package.h.gcov.html">package.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=94 height=10 alt="93.9%"><img src="../../../snow.png" width=6 height=10 alt="93.9%"></td></tr></table> - </td> - <td class="coverPerHi">93.9 %</td> - <td class="coverNumHi">31 / 33 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="record.cpp.gcov.html">record.cpp</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">1 / 1 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="record.h.gcov.html">record.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=86 height=10 alt="86.5%"><img src="../../../snow.png" width=14 height=10 alt="86.5%"></td></tr></table> - </td> - <td class="coverPerHi">86.5 %</td> - <td class="coverNumHi">83 / 96 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="record.test.h.gcov.html">record.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">29 / 29 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="recordparser.cpp.gcov.html">recordparser.cpp</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=95 height=10 alt="95.2%"><img src="../../../snow.png" width=5 height=10 alt="95.2%"></td></tr></table> - </td> - <td class="coverPerHi">95.2 %</td> - <td class="coverNumHi">59 / 62 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="recordparser.h.gcov.html">recordparser.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">4 / 4 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="version.h.gcov.html">version.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=94 height=10 alt="93.8%"><img src="../../../snow.png" width=6 height=10 alt="93.8%"></td></tr></table> - </td> - <td class="coverPerHi">93.8 %</td> - <td class="coverNumHi">30 / 32 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/package.h.gcov.html b/rep/ept/core/apt/package.h.gcov.html deleted file mode 100644 index deea250..0000000 --- a/rep/ept/core/apt/package.h.gcov.html +++ /dev/null @@ -1,194 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/package.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - package.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">33</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">93.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">31</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #ifndef EPT_APT_PACKAGE_H -<span class="lineNum"> 4 </span> : #define EPT_APT_PACKAGE_H -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : namespace ept { -<span class="lineNum"> 7 </span> : namespace core { -<span class="lineNum"> 8 </span> : namespace package { -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span> : struct Setup { -<span class="lineNum"> 11 </span> : typedef ept::Token Token; -<span class="lineNum"> 12 </span> : typedef package::Internal Internal; -<span class="lineNum"> 13 </span> : typedef package::PropertyId PropertyId; -<span class="lineNum"> 14 </span> : typedef package::InternalList InternalList; -<span class="lineNum"> 15 </span> : }; -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span> : template<> struct PropertyType< Name > { typedef std::string T; }; -<span class="lineNum"> 18 </span> : template<> struct PropertyType< Versions > { typedef VersionList T; }; -<span class="lineNum"> 19 </span> : template<> struct PropertyType< AnyVersion > { typedef Token T; }; -<span class="lineNum"> 20 </span> : template<> struct PropertyType< State > { typedef PackageState T; }; -<span class="lineNum"> 21 </span> : template<> struct PropertyType< CandidateVersion > { typedef Token T; }; -<span class="lineNum"> 22 </span> : template<> struct PropertyType< InstalledVersion > { typedef Token T; }; -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span> : struct Source : core::Source< Source, Setup, PropertyType > -<span class="lineNum"> 25 </span><span class="lineCov"> 15 : {</span> -<span class="lineNum"> 26 </span> : AptDatabase &m_db; -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span><span class="lineCov"> 15 : Source( AptDatabase &db ) : m_db( db ) {}</span> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span><span class="lineCov"> 3 : InternalList listInternal() {</span> -<span class="lineNum"> 31 </span><span class="lineCov"> 3 : return InternalList( m_db.cache().PkgBegin() );</span> -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span><span class="lineCov"> 17 : Internal lookupToken( Token t ) {</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 17 : return m_db.lookupPackage( t );</span> -<span class="lineNum"> 36 </span> : } -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span><span class="lineCov"> 3777 : Token getToken( Internal i ) {</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 3777 : Token t;</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 3777 : t._id = i.Name();</span> -<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 42 </span> : } -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineCov"> 8 : bool exists( Token t ) {</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 8 : if ( t.hasVersion() )</span> -<span class="lineNum"> 46 </span><span class="lineNoCov"> 0 : return !m_db.lookupVersion( t ).end();</span> -<span class="lineNum"> 47 </span> : else -<span class="lineNum"> 48 </span><span class="lineCov"> 8 : return !lookupToken( t ).end();</span> -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : Token versionToken( pkgCache::VerIterator vi ) { -<span class="lineNum"> 52 </span> : if ( vi.end() ) -<span class="lineNum"> 53 </span> : return Token(); -<span class="lineNum"> 54 </span> : return Token( std::string( vi.ParentPkg().Name() ) + "_" + vi.VerStr() ); -<span class="lineNum"> 55 </span> : } -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : template< PropertyId p > -<span class="lineNum"> 58 </span> : typename PropertyType< p >::T getInternal( Internal ); -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span> : template< typename List > -<span class="lineNum"> 61 </span><span class="lineCov"> 1 : void revertState( List l ) {</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 3779 : while ( !l.empty() ) {</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 3777 : PackageState s = getInternal< State >( l.head() );</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 3777 : if ( !s.keep() || s.purge() ) {</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 2 : pkgDepCache::StateCache &S = db().state()[ l.head() ];</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 2 : db().state().MarkKeep( l.head(), false, false );</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 2 : S.iFlags &= ~pkgDepCache::Purge;</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 2 : S.iFlags &= ~pkgDepCache::ReInstall;</span> -<span class="lineNum"> 69 </span> : } -<span class="lineNum"> 70 </span><span class="lineCov"> 3777 : l = l.tail();</span> -<span class="lineNum"> 71 </span> : } -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 1 : void revertStates() {</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 1 : pkgDepCache::ActionGroup group( db().state() );</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 1 : revertState( listInternal() );</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span> : typedef ComposedList< State > ChangeList; -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span> : static bool isChanged( Token t, PackageState s ); -<span class="lineNum"> 82 </span> : static bool isUpgradable( Token t, PackageState s ); -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : PropertyFilter< State, __typeof( &isChanged ) >::T changedList() { -<span class="lineNum"> 85 </span> : return propertyFilter< State >( isChanged ); -<span class="lineNum"> 86 </span> : } -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : PropertyFilter< State, __typeof( &isUpgradable ) >::T upgradableList() { -<span class="lineNum"> 89 </span> : return propertyFilter< State >( isUpgradable ); -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span><span class="lineCov"> 9 : AptDatabase &db() { return m_db; }</span> -<span class="lineNum"> 93 </span> : }; -<span class="lineNum"> 94 </span> : -<span class="lineNum"> 95 </span><span class="lineCov"> 3778 : template<> inline std::string Source::getInternal< Name >( Internal i ) {</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 3778 : return i.Name();</span> -<span class="lineNum"> 97 </span> : } -<span class="lineNum"> 98 </span> : -<span class="lineNum"> 99 </span><span class="lineCov"> 3783 : template<> inline PackageState Source::getInternal< State >( Internal i ) {</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 3783 : return m_db.packageState( i );</span> -<span class="lineNum"> 101 </span> : } -<span class="lineNum"> 102 </span> : -<span class="lineNum"> 103 </span> : template<> inline Token Source::getInternal< CandidateVersion >( Internal i ) { -<span class="lineNum"> 104 </span> : return versionToken( m_db.candidateVersion( i ) ); -<span class="lineNum"> 105 </span> : } -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : template<> inline Token Source::getInternal< AnyVersion >( Internal i ) { -<span class="lineNum"> 108 </span> : return versionToken( m_db.candidateVersion( i ) ); -<span class="lineNum"> 109 </span> : } -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span> : template<> inline Token Source::getInternal< InstalledVersion >( Internal i ) { -<span class="lineNum"> 112 </span> : return versionToken( m_db.installedVersion( i ) ); -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span> : inline bool Source::isChanged( Token, PackageState s ) { -<span class="lineNum"> 116 </span> : return s.modify(); -<span class="lineNum"> 117 </span> : } -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span> : inline bool Source::isUpgradable( Token, PackageState s ) { -<span class="lineNum"> 120 </span> : return s.upgradable(); -<span class="lineNum"> 121 </span> : } -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : } -<span class="lineNum"> 124 </span> : } -<span class="lineNum"> 125 </span> : } -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/record.cpp.gcov.html b/rep/ept/core/apt/record.cpp.gcov.html deleted file mode 100644 index 453b7a7..0000000 --- a/rep/ept/core/apt/record.cpp.gcov.html +++ /dev/null @@ -1,83 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/record.cpp</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.cpp</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">1</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%">1</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : namespace ept { -<span class="lineNum"> 4 </span> : namespace core { -<span class="lineNum"> 5 </span> : namespace record { -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : // needs to be kept in sync with record::PropertyId, see apt.h -<span class="lineNum"> 8 </span> : const char *fields[] = { -<span class="lineNum"> 9 </span> : "", "Package", "Priority", "Section", "Installed-Size", -<span class="lineNum"> 10 </span> : "Maintainer", "Architecture", "Source", "Version", -<span class="lineNum"> 11 </span> : "Description", "", "", "Size" -<span class="lineNum"> 12 </span> : }; -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span> : } -<span class="lineNum"> 15 </span> : } -<span class="lineNum"> 16 </span><span class="lineCov"> 3 : }</span> -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/record.h.gcov.html b/rep/ept/core/apt/record.h.gcov.html deleted file mode 100644 index 4e0e3a4..0000000 --- a/rep/ept/core/apt/record.h.gcov.html +++ /dev/null @@ -1,355 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/record.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">96</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">86.5 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">83</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <ept/core/apt/recordparser.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #ifndef EPT_APT_RECORD_H -<span class="lineNum"> 6 </span> : #define EPT_APT_RECORD_H -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : namespace ept { -<span class="lineNum"> 9 </span> : namespace core { -<span class="lineNum"> 10 </span> : namespace record { -<span class="lineNum"> 11 </span> : -<span class="lineNum"> 12 </span> : struct Source; -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span> : struct InternalList { -<span class="lineNum"> 15 </span> : Source *m_source; -<span class="lineNum"> 16 </span> : size_t m_idx; -<span class="lineNum"> 17 </span> : -<span class="lineNum"> 18 </span> : Internal head(); -<span class="lineNum"> 19 </span> : const Internal head() const; -<span class="lineNum"> 20 </span> : bool empty() const; -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span><span class="lineCov"> 870 : InternalList tail() const {</span> -<span class="lineNum"> 23 </span><span class="lineCov"> 870 : InternalList t = *this;</span> -<span class="lineNum"> 24 </span><span class="lineCov"> 870 : ++ t.m_idx;</span> -<span class="lineNum"> 25 </span> : return t; -<span class="lineNum"> 26 </span> : } -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span><span class="lineCov"> 2 : InternalList( Source &s )</span> -<span class="lineNum"> 29 </span><span class="lineCov"> 2 : : m_source( &s ), m_idx( 0 )</span> -<span class="lineNum"> 30 </span><span class="lineCov"> 2 : {}</span> -<span class="lineNum"> 31 </span> : }; -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : struct Setup { -<span class="lineNum"> 34 </span> : typedef ept::Token Token; -<span class="lineNum"> 35 </span> : typedef record::Internal Internal; -<span class="lineNum"> 36 </span> : typedef record::PropertyId PropertyId; -<span class="lineNum"> 37 </span> : typedef record::InternalList InternalList; -<span class="lineNum"> 38 </span> : }; -<span class="lineNum"> 39 </span> : -<span class="lineNum"> 40 </span> : template<> struct PropertyType< InstalledSize > { typedef int T; }; -<span class="lineNum"> 41 </span> : template<> struct PropertyType< PackageSize > { typedef int T; }; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : struct Parser: RecordParser -<span class="lineNum"> 44 </span><span class="lineCov"> 1310 : {</span> -<span class="lineNum"> 45 </span> : bool parseBool(bool& def, const std::string& str) const -<span class="lineNum"> 46 </span> : { -<span class="lineNum"> 47 </span> : // Believe it or not, this is what apt does to interpret bool fields -<span class="lineNum"> 48 </span> : if (str == "no" || str == "false" || str == "without" || -<span class="lineNum"> 49 </span> : str == "off" || str == "disable") -<span class="lineNum"> 50 </span> : return false; -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span> : if (str == "yes" || str == "true" || str == "with" || -<span class="lineNum"> 53 </span> : str == "on" || str == "enable") -<span class="lineNum"> 54 </span> : return true; -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span> : return def; -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span> : public: -<span class="lineNum"> 60 </span> : Parser() : RecordParser() {} -<span class="lineNum"> 61 </span><span class="lineCov"> 1310 : Parser(const std::string& str) : RecordParser(str) {}</span> -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : template< PropertyId p > -<span class="lineNum"> 64 </span> : typename PropertyType< p >::T parse( typename PropertyType< p >::T def, -<span class="lineNum"> 65 </span> : std::string data ); -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span> : template< typename T > -<span class="lineNum"> 68 </span> : struct Default { -<span class="lineNum"> 69 </span> : static T def; -<span class="lineNum"> 70 </span> : }; -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span> : template< typename T > T parse( const T &def, -<span class="lineNum"> 73 </span> : const std::string &field ) const; -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span> : template< PropertyId p > -<span class="lineNum"> 76 </span> : typename PropertyType< p >::T get( -<span class="lineNum"> 77 </span> : const typename PropertyType< p >::T &def -<span class="lineNum"> 78 </span><span class="lineCov"> 1308 : = Default< typename PropertyType< p >::T >::def ) const</span> -<span class="lineNum"> 79 </span> : { -<span class="lineNum"> 80 </span> : return parse< typename PropertyType< p >::T >( def, -<span class="lineNum"> 81 </span><span class="lineCov"> 1308 : lookup( fields[ p ] ) );</span> -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : }; -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span><span class="lineCov"> 25 : template< typename T > T Parser::Default< T >::def = T();</span> -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : template<> inline std::string Parser::get< ShortDescription >( -<span class="lineNum"> 89 </span><span class="lineCov"> 2 : const std::string& def ) const</span> -<span class="lineNum"> 90 </span> : { -<span class="lineNum"> 91 </span><span class="lineCov"> 2 : std::string str = lookup( fields[ Description ] );</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 4 : if (str == std::string())</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1 : return def;</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 1 : size_t pos = str.find("\n");</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 1 : if (pos == std::string::npos)</span> -<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : return str;</span> -<span class="lineNum"> 97 </span> : else -<span class="lineNum"> 98 </span><span class="lineCov"> 1 : return str.substr(0, pos);</span> -<span class="lineNum"> 99 </span> : } -<span class="lineNum"> 100 </span> : -<span class="lineNum"> 101 </span> : template<> inline std::string Parser::get< LongDescription >( -<span class="lineNum"> 102 </span> : const std::string& def ) const -<span class="lineNum"> 103 </span> : { -<span class="lineNum"> 104 </span> : std::string str = lookup( fields[ Description ] ); -<span class="lineNum"> 105 </span> : if (str == std::string()) -<span class="lineNum"> 106 </span> : return def; -<span class="lineNum"> 107 </span> : size_t pos = str.find("\n"); -<span class="lineNum"> 108 </span> : if (pos == std::string::npos) -<span class="lineNum"> 109 </span> : return str; -<span class="lineNum"> 110 </span> : else -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span> : // Trim trailing spaces -<span class="lineNum"> 113 </span> : for (++pos; pos < str.size() && isspace(str[pos]); ++pos) -<span class="lineNum"> 114 </span> : ; -<span class="lineNum"> 115 </span> : return str.substr(pos); -<span class="lineNum"> 116 </span> : } -<span class="lineNum"> 117 </span> : } -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span> : template<> inline std::string Parser::parse< std::string >( -<span class="lineNum"> 120 </span><span class="lineCov"> 1307 : const std::string& def, const std::string& str) const</span> -<span class="lineNum"> 121 </span> : { -<span class="lineNum"> 122 </span><span class="lineCov"> 1307 : if (str == std::string())</span> -<span class="lineNum"> 123 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 1307 : return str;</span> -<span class="lineNum"> 125 </span> : } -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : template<> inline int Parser::parse< int >( -<span class="lineNum"> 128 </span><span class="lineCov"> 1 : const int& def, const std::string& str) const</span> -<span class="lineNum"> 129 </span> : { -<span class="lineNum"> 130 </span><span class="lineCov"> 1 : if (str == string())</span> -<span class="lineNum"> 131 </span><span class="lineNoCov"> 0 : return def;</span> -<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return (size_t)strtoul(str.c_str(), NULL, 10);</span> -<span class="lineNum"> 133 </span> : } -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : struct Source : core::Source< Source, Setup, PropertyType > -<span class="lineNum"> 136 </span><span class="lineCov"> 6 : {</span> -<span class="lineNum"> 137 </span> : AptDatabase &m_db; -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : /* caching */ -<span class="lineNum"> 140 </span> : pkgCache::PkgFileIterator lastFile; -<span class="lineNum"> 141 </span> : FileFd file; -<span class="lineNum"> 142 </span> : size_t lastOffset; -<span class="lineNum"> 143 </span> : -<span class="lineNum"> 144 </span> : /* in-order retrieval of records, for InternalList */ -<span class="lineNum"> 145 </span> : typedef vector< pkgCache::VerFile * > VfList; -<span class="lineNum"> 146 </span> : VfList m_vflist; -<span class="lineNum"> 147 </span> : -<span class="lineNum"> 148 </span><span class="lineCov"> 1742 : VfList &vfList() {</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 1742 : if ( m_vflist.size() > 0 )</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 1741 : return m_vflist;</span> -<span class="lineNum"> 151 </span> : -<span class="lineNum"> 152 </span><span class="lineCov"> 1 : m_vflist.reserve(m_db.cache().HeaderP->PackageCount + 1);</span> -<span class="lineNum"> 153 </span> : -<span class="lineNum"> 154 </span> : // Populate the vector of versions to print -<span class="lineNum"> 155 </span><span class="lineCov"> 3778 : for (pkgCache::PkgIterator pi = m_db.cache().PkgBegin(); !pi.end(); ++pi)</span> -<span class="lineNum"> 156 </span> : { -<span class="lineNum"> 157 </span><span class="lineCov"> 3777 : if (pi->VersionList == 0)</span> -<span class="lineNum"> 158 </span><span class="lineCov"> 1989 : continue;</span> -<span class="lineNum"> 159 </span> : -<span class="lineNum"> 160 </span><span class="lineCov"> 3596 : for( pkgCache::VerIterator vi = pi.VersionList(); !vi.end(); ++vi ) {</span> -<span class="lineNum"> 161 </span> : -<span class="lineNum"> 162 </span> : // Choose a valid file that contains the record for this version -<span class="lineNum"> 163 </span><span class="lineCov"> 1808 : pkgCache::VerFileIterator vfi = vi.FileList();</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 3181 : for ( ; !vfi.end(); ++vfi )</span> -<span class="lineNum"> 165 </span><span class="lineCov"> 1808 : if ((vfi.File()->Flags & pkgCache::Flag::NotSource) == 0)</span> -<span class="lineNum"> 166 </span><span class="lineCov"> 435 : break;</span> -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span><span class="lineCov"> 1808 : if ( !vfi.end() )</span> -<span class="lineNum"> 169 </span><span class="lineCov"> 435 : m_vflist.push_back( vfi );</span> -<span class="lineNum"> 170 </span> : } -<span class="lineNum"> 171 </span> : } -<span class="lineNum"> 172 </span> : -<span class="lineNum"> 173 </span><span class="lineCov"> 1 : sort(m_vflist.begin(), m_vflist.end(), localityCompare);</span> -<span class="lineNum"> 174 </span><span class="lineCov"> 1 : return m_vflist;</span> -<span class="lineNum"> 175 </span> : } -<span class="lineNum"> 176 </span> : -<span class="lineNum"> 177 </span><span class="lineCov"> 6 : Source( AptDatabase &db ) : m_db( db ) {}</span> -<span class="lineNum"> 178 </span> : -<span class="lineNum"> 179 </span><span class="lineCov"> 2 : InternalList listInternal() {</span> -<span class="lineNum"> 180 </span><span class="lineCov"> 2 : return InternalList( *this );</span> -<span class="lineNum"> 181 </span> : } -<span class="lineNum"> 182 </span> : -<span class="lineNum"> 183 </span><span class="lineCov"> 5 : Internal lookupToken( Token t ) {</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 5 : return m_db.lookupVersionFile( m_db.lookupVersion( t ) );</span> -<span class="lineNum"> 185 </span> : } -<span class="lineNum"> 186 </span> : -<span class="lineNum"> 187 </span> : // Sort a version list by package file locality -<span class="lineNum"> 188 </span> : static bool localityCompare(const pkgCache::VerFile* a, -<span class="lineNum"> 189 </span><span class="lineCov"> 4371 : const pkgCache::VerFile* b)</span> -<span class="lineNum"> 190 </span> : { -<span class="lineNum"> 191 </span><span class="lineCov"> 4371 : if (a == 0 && b == 0)</span> -<span class="lineNum"> 192 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 193 </span><span class="lineCov"> 4371 : if (a == 0)</span> -<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 195 </span><span class="lineCov"> 4371 : if (b == 0)</span> -<span class="lineNum"> 196 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span><span class="lineCov"> 4371 : if (a->File == b->File)</span> -<span class="lineNum"> 199 </span><span class="lineCov"> 4371 : return a->Offset < b->Offset;</span> -<span class="lineNum"> 200 </span><span class="lineNoCov"> 0 : return a->File < b->File;</span> -<span class="lineNum"> 201 </span> : } -<span class="lineNum"> 202 </span> : -<span class="lineNum"> 203 </span> : void invalidate() { -<span class="lineNum"> 204 </span> : core::Source< Source, Setup, PropertyType >::invalidate(); -<span class="lineNum"> 205 </span> : lastFile = pkgCache::PkgFileIterator(); -<span class="lineNum"> 206 </span> : } -<span class="lineNum"> 207 </span> : -<span class="lineNum"> 208 </span><span class="lineCov"> 1311 : std::string getRecord( Internal vfi ) {</span> -<span class="lineNum"> 209 </span><span class="lineCov"> 1311 : if ( vfi.Cache() == 0 || vfi.end() )</span> -<span class="lineNum"> 210 </span><span class="lineCov"> 1 : return "";</span> -<span class="lineNum"> 211 </span> : -<span class="lineNum"> 212 </span><span class="lineCov"> 1310 : if ((lastFile.Cache() == 0)</span> -<span class="lineNum"> 213 </span> : || vfi->File + m_db.cache().PkgFileP != lastFile) -<span class="lineNum"> 214 </span> : { -<span class="lineNum"> 215 </span> : lastFile = pkgCache::PkgFileIterator( -<span class="lineNum"> 216 </span><span class="lineCov"> 5 : m_db.cache(), vfi->File + m_db.cache().PkgFileP);</span> -<span class="lineNum"> 217 </span><span class="lineCov"> 5 : if (!lastFile.IsOk())</span> -<span class="lineNum"> 218 </span> : throw wibble::exception::System( -<span class="lineNum"> 219 </span> : std::string("Reading the" -<span class="lineNum"> 220 </span> : " data record for a package from file ") -<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span> -<span class="lineNum"> 222 </span><span class="lineCov"> 5 : if (file.IsOpen())</span> -<span class="lineNum"> 223 </span><span class="lineNoCov"> 0 : file.Close();</span> -<span class="lineNum"> 224 </span><span class="lineCov"> 5 : if (!file.Open(lastFile.FileName(), FileFd::ReadOnly))</span> -<span class="lineNum"> 225 </span> : throw wibble::exception::System( std::string("Opening file ") -<span class="lineNum"> 226 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span> -<span class="lineNum"> 227 </span><span class="lineCov"> 5 : lastOffset = 0;</span> -<span class="lineNum"> 228 </span> : } -<span class="lineNum"> 229 </span> : -<span class="lineNum"> 230 </span> : // If we start near were we ended, avoid a seek -<span class="lineNum"> 231 </span> : // and enlarge the read a bit -<span class="lineNum"> 232 </span><span class="lineCov"> 1310 : size_t slack = vfi->Offset - lastOffset;</span> -<span class="lineNum"> 233 </span><span class="lineCov"> 1310 : if ( slack > 128 ) // mornfall: was 8, making it 128</span> -<span class="lineNum"> 234 </span> : { -<span class="lineNum"> 235 </span><span class="lineCov"> 871 : slack = 0;</span> -<span class="lineNum"> 236 </span><span class="lineCov"> 871 : if ( !file.Seek( vfi->Offset ) )</span> -<span class="lineNum"> 237 </span> : throw wibble::exception::System( -<span class="lineNum"> 238 </span> : std::string("Cannot seek to package record in file ") -<span class="lineNum"> 239 </span><span class="lineNoCov"> 0 : + lastFile.FileName() );</span> -<span class="lineNum"> 240 </span> : } -<span class="lineNum"> 241 </span> : -<span class="lineNum"> 242 </span><span class="lineCov"> 1310 : char buffer[vfi->Size + slack + 1];</span> -<span class="lineNum"> 243 </span><span class="lineCov"> 1310 : if (!file.Read(buffer, vfi->Size + slack))</span> -<span class="lineNum"> 244 </span> : throw wibble::exception::System( -<span class="lineNum"> 245 </span> : std::string("Cannot read package " -<span class="lineNum"> 246 </span><span class="lineNoCov"> 0 : "record in file ") + lastFile.FileName() );</span> -<span class="lineNum"> 247 </span> : -<span class="lineNum"> 248 </span><span class="lineCov"> 1310 : buffer[vfi->Size + slack] = '\0';</span> -<span class="lineNum"> 249 </span> : //cerr << "Data read (slack: " << slack << ")" << endl; -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span><span class="lineCov"> 1310 : lastOffset = vfi->Offset + vfi->Size;</span> -<span class="lineNum"> 252 </span> : -<span class="lineNum"> 253 </span><span class="lineCov"> 1310 : return string(buffer+slack);</span> -<span class="lineNum"> 254 </span> : } -<span class="lineNum"> 255 </span> : -<span class="lineNum"> 256 </span><span class="lineCov"> 435 : Token getToken( Internal i ) {</span> -<span class="lineNum"> 257 </span><span class="lineCov"> 435 : Token t;</span> -<span class="lineNum"> 258 </span><span class="lineCov"> 435 : t._id = getInternal< Name >( i ) + "_" + getInternal< Version >( i );</span> -<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 260 </span> : } -<span class="lineNum"> 261 </span> : -<span class="lineNum"> 262 </span> : template< PropertyId p > -<span class="lineNum"> 263 </span><span class="lineCov"> 1310 : typename PropertyType< p >::T getInternal( Internal i ) {</span> -<span class="lineNum"> 264 </span><span class="lineCov"> 1310 : Parser rec( getRecord( i ) );</span> -<span class="lineNum"> 265 </span><span class="lineCov"> 1310 : return rec.get< p >();</span> -<span class="lineNum"> 266 </span> : } -<span class="lineNum"> 267 </span> : }; -<span class="lineNum"> 268 </span> : -<span class="lineNum"> 269 </span><span class="lineCov"> 1 : template<> inline std::string Source::getInternal< Record >( Internal i ) {</span> -<span class="lineNum"> 270 </span><span class="lineCov"> 1 : assert( !i.end() );</span> -<span class="lineNum"> 271 </span><span class="lineCov"> 1 : return getRecord( i );</span> -<span class="lineNum"> 272 </span> : } -<span class="lineNum"> 273 </span> : -<span class="lineNum"> 274 </span><span class="lineCov"> 870 : inline const Internal InternalList::head() const {</span> -<span class="lineNum"> 275 </span> : return pkgCache::VerFileIterator( m_source->m_db.cache(), -<span class="lineNum"> 276 </span><span class="lineCov"> 870 : m_source->vfList()[ m_idx ] );</span> -<span class="lineNum"> 277 </span> : } -<span class="lineNum"> 278 </span> : -<span class="lineNum"> 279 </span><span class="lineCov"> 872 : inline bool InternalList::empty() const {</span> -<span class="lineNum"> 280 </span><span class="lineCov"> 872 : return m_idx == m_source->vfList().size();</span> -<span class="lineNum"> 281 </span> : } -<span class="lineNum"> 282 </span> : -<span class="lineNum"> 283 </span> : -<span class="lineNum"> 284 </span> : } -<span class="lineNum"> 285 </span> : } -<span class="lineNum"> 286 </span> : } -<span class="lineNum"> 287 </span> : -<span class="lineNum"> 288 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/record.test.h.gcov.html b/rep/ept/core/apt/record.test.h.gcov.html deleted file mode 100644 index afee746..0000000 --- a/rep/ept/core/apt/record.test.h.gcov.html +++ /dev/null @@ -1,123 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/record.test.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - record.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">29</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%">29</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : #include <ept/test.h> -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : using namespace ept::core; -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : struct TestAptRecord : AptTestEnvironment -<span class="lineNum"> 9 </span><span class="lineCov"> 6 : {</span> -<span class="lineNum"> 10 </span> : record::Source recs; -<span class="lineNum"> 11 </span> : ept::Token t; -<span class="lineNum"> 12 </span> : -<span class="lineNum"> 13 </span><span class="lineCov"> 6 : TestAptRecord() : recs( db ) {</span> -<span class="lineNum"> 14 </span><span class="lineCov"> 6 : t._id = "sp";</span> -<span class="lineNum"> 15 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span><span class="lineCov"> 1 : Test checkLookup() {</span> -<span class="lineNum"> 18 </span><span class="lineCov"> 1 : recs.get< record::Record >( t );</span> -<span class="lineNum"> 19 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span><span class="lineCov"> 1 : Test checkLookupValue() {</span> -<span class="lineNum"> 22 </span><span class="lineCov"> 1 : assert_eq( recs.get< record::Name >( t ), t.package() );</span> -<span class="lineNum"> 23 </span> : assert_eq( recs.get< record::Maintainer >( t ), -<span class="lineNum"> 24 </span><span class="lineCov"> 2 : "Neil Roeth <neil@debian.org>" );</span> -<span class="lineNum"> 25 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span><span class="lineCov"> 1 : Test checkLookupNumeric() {</span> -<span class="lineNum"> 28 </span> : assert_eq( recs.get< record::InstalledSize >( t ), -<span class="lineNum"> 29 </span><span class="lineCov"> 1 : 600 );</span> -<span class="lineNum"> 30 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : Test checkShortDescription() {</span> -<span class="lineNum"> 33 </span> : assert_eq( recs.get< record::ShortDescription >( t ), -<span class="lineNum"> 34 </span><span class="lineCov"> 1 : "James Clark's SGML parsing tools" );</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : template< typename List > -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : void checkRecordNameList( List l ) {</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 437 : while ( !l.empty() ) {</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 435 : assert_eq( l.property(), l.token().package() );</span> -<span class="lineNum"> 41 </span><span class="lineCov"> 435 : l = l.tail();</span> -<span class="lineNum"> 42 </span> : } -<span class="lineNum"> 43 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : Test checkList() {</span> -<span class="lineNum"> 46 </span> : // there are 435 valid records in the list file -<span class="lineNum"> 47 </span> : assert_eq( list::count( recs.list< -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : record::Name >() ), 435 );</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : checkRecordNameList( recs.list< record::Name >() );</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 1 : Test nonexistent() {</span> -<span class="lineNum"> 53 </span> : assert_eq( recs.get< record::ShortDescription >( -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : ept::Token( "nonexistent-package" ) ), "" );</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 56 </span> : }; -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/recordparser.cpp.gcov.html b/rep/ept/core/apt/recordparser.cpp.gcov.html deleted file mode 100644 index de47e25..0000000 --- a/rep/ept/core/apt/recordparser.cpp.gcov.html +++ /dev/null @@ -1,239 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/recordparser.cpp</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - recordparser.cpp</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">62</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">95.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">59</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** \file -<span class="lineNum"> 2 </span> : * Parser for APT records -<span class="lineNum"> 3 </span> : */ -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /* -<span class="lineNum"> 6 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 7 </span> : * -<span class="lineNum"> 8 </span> : * This library is free software; you can redistribute it and/or -<span class="lineNum"> 9 </span> : * modify it under the terms of the GNU Lesser General Public -<span class="lineNum"> 10 </span> : * License as published by the Free Software Foundation; either -<span class="lineNum"> 11 </span> : * version 2.1 of the License, or (at your option) any later version. -<span class="lineNum"> 12 </span> : * -<span class="lineNum"> 13 </span> : * This library is distributed in the hope that it will be useful, -<span class="lineNum"> 14 </span> : * but WITHOUT ANY WARRANTY; without even the implied warranty of -<span class="lineNum"> 15 </span> : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -<span class="lineNum"> 16 </span> : * Lesser General Public License for more details. -<span class="lineNum"> 17 </span> : * -<span class="lineNum"> 18 </span> : * You should have received a copy of the GNU Lesser General Public -<span class="lineNum"> 19 </span> : * License along with this library; if not, write to the Free Software -<span class="lineNum"> 20 </span> : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -<span class="lineNum"> 21 </span> : */ -<span class="lineNum"> 22 </span> : -<span class="lineNum"> 23 </span> : #include <ept/core/apt/recordparser.h> -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : #include <algorithm> -<span class="lineNum"> 26 </span> : #include <cctype> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : //#include <iostream> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : using namespace std; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : namespace ept { -<span class="lineNum"> 33 </span> : namespace core { -<span class="lineNum"> 34 </span> : namespace record { -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : struct rpcompare -<span class="lineNum"> 37 </span> : { -<span class="lineNum"> 38 </span> : const RecordParser& rp; -<span class="lineNum"> 39 </span><span class="lineCov"> 1310 : rpcompare(const RecordParser& rp) : rp(rp) {}</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 89600 : bool operator()(size_t a, size_t b)</span> -<span class="lineNum"> 41 </span> : { -<span class="lineNum"> 42 </span><span class="lineCov"> 89600 : return rp.name(a) < rp.name(b);</span> -<span class="lineNum"> 43 </span> : } -<span class="lineNum"> 44 </span> : }; -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span><span class="lineCov"> 1310 : void RecordParser::scan(const std::string& str)</span> -<span class="lineNum"> 47 </span> : { -<span class="lineNum"> 48 </span><span class="lineCov"> 1310 : buffer = str;</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1310 : ends.clear();</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 1310 : sorted.clear();</span> -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span> : //cerr << "PARSE " << endl << buffer << "*****" << endl; -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span> : // Scan the buffer, taking note of all ending offsets of the various fields -<span class="lineNum"> 55 </span><span class="lineCov"> 1310 : size_t pos = 0;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1310 : size_t idx = 0;</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 29815 : while (pos < buffer.size() - 1)</span> -<span class="lineNum"> 58 </span> : { -<span class="lineNum"> 59 </span> : //cerr << "PREPOS " << pos << " left: " << buffer.substr(pos, 10) << endl; -<span class="lineNum"> 60 </span><span class="lineCov"> 28505 : pos = buffer.find("\n", pos);</span> -<span class="lineNum"> 61 </span> : //cerr << "POSTPOS " << pos << " left: " << (pos == string::npos ? "NONE" : buffer.substr(pos, 10)) << endl; -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : // The buffer does not end with a newline -<span class="lineNum"> 64 </span><span class="lineCov"> 28505 : if (pos == string::npos)</span> -<span class="lineNum"> 65 </span> : { -<span class="lineNum"> 66 </span> : //cerr << "ENDNOTEOL" << endl; -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : pos = buffer.size();</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : ends.push_back(pos);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 1 : sorted.push_back(idx++);</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : break;</span> -<span class="lineNum"> 71 </span> : } -<span class="lineNum"> 72 </span> : -<span class="lineNum"> 73 </span><span class="lineCov"> 28504 : ++pos;</span> -<span class="lineNum"> 74 </span> : //cerr << "POSTPOSINC " << pos << " left: " << buffer.substr(pos, 10) << endl; -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span> : // The buffer ends with a newline -<span class="lineNum"> 77 </span><span class="lineCov"> 28504 : if (pos == buffer.size())</span> -<span class="lineNum"> 78 </span> : { -<span class="lineNum"> 79 </span> : //cerr << "ENDEOL" << endl; -<span class="lineNum"> 80 </span><span class="lineCov"> 1309 : ends.push_back(pos);</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 1309 : sorted.push_back(idx++);</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 1309 : break;</span> -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : // Terminate parsing on double newlines -<span class="lineNum"> 86 </span><span class="lineCov"> 27195 : if (buffer[pos] == '\n')</span> -<span class="lineNum"> 87 </span> : { -<span class="lineNum"> 88 </span> : //cerr << "ENDDOUBLENL" << endl; -<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : ends.push_back(pos);</span> -<span class="lineNum"> 90 </span><span class="lineNoCov"> 0 : sorted.push_back(idx++);</span> -<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : break;</span> -<span class="lineNum"> 92 </span> : } -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : // Mark the end of the field if it's not a continuation line -<span class="lineNum"> 95 </span><span class="lineCov"> 27195 : if (!isspace(buffer[pos]))</span> -<span class="lineNum"> 96 </span> : { -<span class="lineNum"> 97 </span> : //cerr << "INNERFIELD" << endl; -<span class="lineNum"> 98 </span><span class="lineCov"> 17224 : ends.push_back(pos);</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 17224 : sorted.push_back(idx++);</span> -<span class="lineNum"> 100 </span> : } //else -<span class="lineNum"> 101 </span> : //cerr << "CONTLINE" << endl; -<span class="lineNum"> 102 </span> : } -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span> : // Sort the sorted array -<span class="lineNum"> 105 </span><span class="lineCov"> 1310 : sort(sorted.begin(), sorted.end(), rpcompare(*this));</span> -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : //for (size_t i = 0; i < ends.size(); ++i) -<span class="lineNum"> 108 </span> : // cerr << ends[i] << "\t" << name(i) << "\t" << sorted[i] << "\t" << name(sorted[i]) << endl; -<span class="lineNum"> 109 </span><span class="lineCov"> 1310 : }</span> -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span><span class="lineCov"> 187124 : std::string RecordParser::field(size_t idx) const</span> -<span class="lineNum"> 112 </span> : { -<span class="lineNum"> 113 </span><span class="lineCov"> 187124 : if (idx >= ends.size())</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : return string();</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 187123 : if (idx == 0)</span> -<span class="lineNum"> 116 </span><span class="lineCov"> 16577 : return buffer.substr(0, ends[0]);</span> -<span class="lineNum"> 117 </span> : else -<span class="lineNum"> 118 </span><span class="lineCov"> 170546 : return buffer.substr(ends[idx-1], ends[idx]-ends[idx-1]);</span> -<span class="lineNum"> 119 </span> : } -<span class="lineNum"> 120 </span> : -<span class="lineNum"> 121 </span><span class="lineCov"> 185814 : std::string RecordParser::name(size_t idx) const</span> -<span class="lineNum"> 122 </span> : { -<span class="lineNum"> 123 </span><span class="lineCov"> 185814 : string res = field(idx);</span> -<span class="lineNum"> 124 </span><span class="lineCov"> 185814 : size_t pos = res.find(":");</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 185814 : if (pos == string::npos)</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 2 : return res;</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 185812 : return res.substr(0, pos);</span> -<span class="lineNum"> 128 </span> : } -<span class="lineNum"> 129 </span> : -<span class="lineNum"> 130 </span><span class="lineCov"> 1310 : std::string RecordParser::lookup(size_t idx) const</span> -<span class="lineNum"> 131 </span> : { -<span class="lineNum"> 132 </span><span class="lineCov"> 1310 : string res = field(idx);</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 1310 : size_t pos = res.find(":");</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 1310 : if (pos == string::npos)</span> -<span class="lineNum"> 135 </span><span class="lineCov"> 1 : return res;</span> -<span class="lineNum"> 136 </span> : // Skip initial whitespace after the : -<span class="lineNum"> 137 </span><span class="lineCov"> 1309 : for (++pos; pos < res.size() && isspace(res[pos]); ++pos)</span> -<span class="lineNum"> 138 </span> : ; -<span class="lineNum"> 139 </span><span class="lineCov"> 1309 : res = res.substr(pos);</span> -<span class="lineNum"> 140 </span> : // Trim spaces at the end -<span class="lineNum"> 141 </span><span class="lineCov"> 3927 : while (!res.empty() && isspace(res[res.size() - 1]))</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 1309 : res.resize(res.size() - 1);</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 1309 : return res;</span> -<span class="lineNum"> 144 </span> : } -<span class="lineNum"> 145 </span> : -<span class="lineNum"> 146 </span><span class="lineCov"> 1310 : size_t RecordParser::index(const std::string& str) const</span> -<span class="lineNum"> 147 </span> : { -<span class="lineNum"> 148 </span> : int begin, end; -<span class="lineNum"> 149 </span> : -<span class="lineNum"> 150 </span> : /* Binary search */ -<span class="lineNum"> 151 </span><span class="lineCov"> 1310 : begin = -1, end = size();</span> -<span class="lineNum"> 152 </span><span class="lineCov"> 7924 : while (end - begin > 1)</span> -<span class="lineNum"> 153 </span> : { -<span class="lineNum"> 154 </span><span class="lineCov"> 5304 : int cur = (end + begin) / 2;</span> -<span class="lineNum"> 155 </span> : //cerr << "Test " << cur << " " << str << " < " << name(cur) << endl; -<span class="lineNum"> 156 </span><span class="lineCov"> 5304 : if (name(sorted[cur]) > str)</span> -<span class="lineNum"> 157 </span><span class="lineCov"> 1724 : end = cur;</span> -<span class="lineNum"> 158 </span> : else -<span class="lineNum"> 159 </span><span class="lineCov"> 3580 : begin = cur;</span> -<span class="lineNum"> 160 </span> : } -<span class="lineNum"> 161 </span> : -<span class="lineNum"> 162 </span><span class="lineCov"> 1310 : if (begin == -1 || name(sorted[begin]) != str)</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 1 : return size();</span> -<span class="lineNum"> 164 </span> : else -<span class="lineNum"> 165 </span><span class="lineCov"> 1309 : return sorted[begin];</span> -<span class="lineNum"> 166 </span> : } -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span> : } -<span class="lineNum"> 169 </span> : } -<span class="lineNum"> 170 </span> : } -<span class="lineNum"> 171 </span> : -<span class="lineNum"> 172 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/recordparser.h.gcov.html b/rep/ept/core/apt/recordparser.h.gcov.html deleted file mode 100644 index 13eb803..0000000 --- a/rep/ept/core/apt/recordparser.h.gcov.html +++ /dev/null @@ -1,165 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/recordparser.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - recordparser.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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> : #ifndef EPT_CORE_APT_RECORDPARSER_H -<span class="lineNum"> 3 </span> : #define EPT_CORE_APT_RECORDPARSER_H -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /** \file -<span class="lineNum"> 6 </span> : * Parser for APT records -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini <enrico@enricozini.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 <vector> -<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 core { -<span class="lineNum"> 32 </span> : namespace record { -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : /** -<span class="lineNum"> 35 </span> : * Access the fields of a package record contained inside a std::string. -<span class="lineNum"> 36 </span> : * -<span class="lineNum"> 37 </span> : * Implementation note: this implementation should take advantage of -<span class="lineNum"> 38 </span> : * std::string sharing buffer space among them. -<span class="lineNum"> 39 </span> : */ -<span class="lineNum"> 40 </span> : class RecordParser -<span class="lineNum"> 41 </span><span class="lineCov"> 1310 : {</span> -<span class="lineNum"> 42 </span> : /// Buffer containing the whole record -<span class="lineNum"> 43 </span> : std::string buffer; -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span> : /// End offsets of the various fields in the record -<span class="lineNum"> 46 </span> : std::vector<size_t> ends; -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : /// Indexes on the ends vector, sorted by field name -<span class="lineNum"> 49 </span> : std::vector<size_t> sorted; -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : public: -<span class="lineNum"> 52 </span> : RecordParser() {} -<span class="lineNum"> 53 </span><span class="lineCov"> 1310 : RecordParser(const std::string& str) { scan(str); }</span> -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span> : /// Index a new record -<span class="lineNum"> 56 </span> : void scan(const std::string& str); -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : /** -<span class="lineNum"> 59 </span> : * Get the index of the field with the given name. -<span class="lineNum"> 60 </span> : * -<span class="lineNum"> 61 </span> : * size() is returned if not found -<span class="lineNum"> 62 </span> : */ -<span class="lineNum"> 63 </span> : size_t index(const std::string& str) const; -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span> : /// Return the field by its index -<span class="lineNum"> 66 </span> : std::string field(size_t idx) const; -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span> : /// Return the name of a field by its index -<span class="lineNum"> 69 </span> : std::string name(size_t idx) const; -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span> : /// Return the content of a field by its index -<span class="lineNum"> 72 </span> : std::string lookup(size_t idx) const; -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : /// Return the content of a field by its name -<span class="lineNum"> 75 </span><span class="lineCov"> 1310 : std::string lookup(const std::string& name) const { return lookup(index(name)); }</span> -<span class="lineNum"> 76 </span> : -<span class="lineNum"> 77 </span> : /// Return the content of a field by its index -<span class="lineNum"> 78 </span> : std::string operator[](size_t idx) const { return lookup(idx); } -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span> : /// Return the content of a field by its name -<span class="lineNum"> 81 </span> : std::string operator[](const std::string& name) const { return lookup(name); } -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : /// Return the entire record -<span class="lineNum"> 84 </span> : const std::string& record() const { return buffer; } -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span> : /// Return the entire record -<span class="lineNum"> 87 </span> : std::string record() { return buffer; } -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : /// Return the number of fields in the record -<span class="lineNum"> 90 </span><span class="lineCov"> 1311 : size_t size() const { return ends.size(); }</span> -<span class="lineNum"> 91 </span> : }; -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : } -<span class="lineNum"> 94 </span> : } -<span class="lineNum"> 95 </span> : } -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 98 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/apt/version.h.gcov.html b/rep/ept/core/apt/version.h.gcov.html deleted file mode 100644 index b17fdfb..0000000 --- a/rep/ept/core/apt/version.h.gcov.html +++ /dev/null @@ -1,160 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/apt/version.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/core/apt</a> - version.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">32</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%">30</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #ifndef EPT_CORE_APT_VERSION_H -<span class="lineNum"> 3 </span> : #define EPT_CORE_APT_VERSION_H -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : namespace ept { -<span class="lineNum"> 6 </span> : namespace core { -<span class="lineNum"> 7 </span> : namespace version { -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span><span class="lineCov"> 3616 : struct InternalList {</span> -<span class="lineNum"> 10 </span> : package::Internal m_pkg; -<span class="lineNum"> 11 </span> : Internal m_ver; -<span class="lineNum"> 12 </span> : -<span class="lineNum"> 13 </span> : typedef Internal Type; -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span><span class="lineCov"> 3616 : InternalList tail() const {</span> -<span class="lineNum"> 16 </span><span class="lineCov"> 3616 : InternalList t = *this;</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 3616 : t.m_ver ++;</span> -<span class="lineNum"> 18 </span><span class="lineCov"> 3616 : t.seek();</span> -<span class="lineNum"> 19 </span> : return t; -<span class="lineNum"> 20 </span> : } -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span><span class="lineCov"> 5424 : const Internal head() const {</span> -<span class="lineNum"> 23 </span><span class="lineCov"> 5424 : return m_ver;</span> -<span class="lineNum"> 24 </span> : } -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : Internal head() { -<span class="lineNum"> 27 </span> : return m_ver; -<span class="lineNum"> 28 </span> : } -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span><span class="lineCov"> 3618 : bool empty() const {</span> -<span class="lineNum"> 31 </span><span class="lineCov"> 3618 : return m_pkg.end();</span> -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span><span class="lineCov"> 3618 : void seek()</span> -<span class="lineNum"> 35 </span> : { -<span class="lineNum"> 36 </span><span class="lineCov"> 14790 : while ( m_ver.end() && !m_pkg.end() ) {</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 7554 : m_pkg ++;</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 7554 : m_ver = m_pkg.VersionList();</span> -<span class="lineNum"> 39 </span> : } -<span class="lineNum"> 40 </span><span class="lineCov"> 3618 : }</span> -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span><span class="lineCov"> 2 : InternalList( package::Internal i )</span> -<span class="lineNum"> 43 </span><span class="lineCov"> 2 : : m_pkg( i )</span> -<span class="lineNum"> 44 </span> : { -<span class="lineNum"> 45 </span><span class="lineCov"> 2 : m_ver = m_pkg.VersionList();</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 2 : seek();</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 2 : }</span> -<span class="lineNum"> 48 </span> : }; -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : struct Setup { -<span class="lineNum"> 51 </span> : typedef ept::Token Token; -<span class="lineNum"> 52 </span> : typedef version::Internal Internal; -<span class="lineNum"> 53 </span> : typedef version::PropertyId PropertyId; -<span class="lineNum"> 54 </span> : typedef version::InternalList InternalList; -<span class="lineNum"> 55 </span> : }; -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : struct Source : core::Source< Source, Setup, PropertyType > -<span class="lineNum"> 58 </span><span class="lineCov"> 12 : {</span> -<span class="lineNum"> 59 </span> : AptDatabase &m_db; -<span class="lineNum"> 60 </span><span class="lineCov"> 12 : Source( AptDatabase &db ) : m_db( db ) {}</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 2 : InternalList listInternal() {</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 2 : return InternalList( m_db.cache().PkgBegin() );</span> -<span class="lineNum"> 64 </span> : } -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineCov"> 1808 : Token getToken( Internal i ) {</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1808 : Token t;</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1808 : t._id = std::string( i.ParentPkg().Name() ) + "_" + i.VerStr();</span> -<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 70 </span> : } -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span> : Internal lookupToken( Token t ) { -<span class="lineNum"> 73 </span> : return m_db.lookupVersion( t ); -<span class="lineNum"> 74 </span> : } -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span> : template< PropertyId p > -<span class="lineNum"> 77 </span> : typename PropertyType< p >::T getInternal( Internal ); -<span class="lineNum"> 78 </span> : }; -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span> : template<> struct PropertyType< Package > { typedef Token T; }; -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span><span class="lineCov"> 3616 : template<> inline Token Source::getInternal< Package >( Internal i ) {</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 3616 : assert( !i.end() );</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 3616 : Token t;</span> -<span class="lineNum"> 85 </span><span class="lineCov"> 7232 : t._id = i.ParentPkg().Name();</span> -<span class="lineNum"> 86 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 87 </span> : } -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : } -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/desktop.h.gcov.html b/rep/ept/core/desktop.h.gcov.html deleted file mode 100644 index 27d0be3..0000000 --- a/rep/ept/core/desktop.h.gcov.html +++ /dev/null @@ -1,344 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/desktop.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktop.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">103</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">94.2 %</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++ -*- (c) 2006, 2007 Petr Rockai <me@mornfall.net> -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <wibble/string.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #include <ept/token.h> -<span class="lineNum"> 6 </span> : #include <ept/core/desktopfile.h> -<span class="lineNum"> 7 </span> : #include <ept/core/source.h> -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : #include <set> -<span class="lineNum"> 10 </span> : #include <vector> -<span class="lineNum"> 11 </span> : #include <fstream> -<span class="lineNum"> 12 </span> : #include <sstream> -<span class="lineNum"> 13 </span> : #include <iterator> -<span class="lineNum"> 14 </span> : #include <functional> -<span class="lineNum"> 15 </span> : -<span class="lineNum"> 16 </span> : #include <dirent.h> -<span class="lineNum"> 17 </span> : -<span class="lineNum"> 18 </span> : #ifndef EPT_CORE_DESKTOP_H -<span class="lineNum"> 19 </span> : #define EPT_CORE_DESKTOP_H -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span> : namespace ept { -<span class="lineNum"> 22 </span> : namespace core { -<span class="lineNum"> 23 </span> : namespace desktop { -<span class="lineNum"> 24 </span> : -<span class="lineNum"> 25 </span> : typedef enum { Name, Group, ShortDescription, Package, Icon } PropertyId; -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : template< PropertyId > struct PropertyType {}; -<span class="lineNum"> 28 </span> : template<> struct PropertyType< Name > { typedef std::string T; }; -<span class="lineNum"> 29 </span> : template<> struct PropertyType< Group > { typedef std::string T; }; -<span class="lineNum"> 30 </span> : template<> struct PropertyType< ShortDescription > { typedef std::string T; }; -<span class="lineNum"> 31 </span> : template<> struct PropertyType< Package > { typedef ept::Token T; }; -<span class="lineNum"> 32 </span> : template<> struct PropertyType< Icon > { typedef std::string T; }; -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : typedef std::set< std::string > Categories; -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 64 : struct Category {</span> -<span class="lineNum"> 37 </span> : std::string name; -<span class="lineNum"> 38 </span><span class="lineCov"> 112 : operator std::string() const { return name; }</span> -<span class="lineNum"> 39 </span> : }; -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 80 : inline std::istream &operator >>( std::istream &i, Category &cat ) {</span> -<span class="lineNum"> 42 </span> : char c; -<span class="lineNum"> 43 </span><span class="lineCov"> 80 : cat.name = "";</span> -<span class="lineNum"> 44 </span><span class="lineCov"> 468 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 356 : c = i.get();</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 356 : if ( c == ';' ) return i;</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 308 : cat.name += c;</span> -<span class="lineNum"> 48 </span> : } -<span class="lineNum"> 49 </span><span class="lineCov"> 32 : return i;</span> -<span class="lineNum"> 50 </span> : } -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 567 : struct Entry : wibble::mixin::Comparable< Entry > {</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 18 : Entry() {}</span> -<span class="lineNum"> 54 </span> : Entry( std::string n, std::string g, -<span class="lineNum"> 55 </span> : std::string p, std::string d , std::string i ) -<span class="lineNum"> 56 </span> : : m_name( n ), -<span class="lineNum"> 57 </span> : m_package( p ), -<span class="lineNum"> 58 </span> : m_description( d ), -<span class="lineNum"> 59 </span> : m_icon( i ) -<span class="lineNum"> 60 </span> : { setCategories( g ); } -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 16 : void load( std::string file ) {</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 16 : m_id = file;</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 16 : std::ifstream i( file.c_str() );</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 16 : if ( !i.is_open() )</span> -<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : return; // throw?</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 16 : desktop::File e;</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 16 : i >> e;</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 16 : i.close();</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 16 : desktop::File::Group &g = e.group( "Desktop Entry" );</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 32 : m_name = g.entry( "Name" ).value;</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 32 : m_description = g.entry( "Comment" ).value;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 32 : if ( m_description == "" )</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 8 : m_description = g.entry( "GenericName" ).value;</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 16 : m_package = g.entry( "X-AppInstall-Package" ).value;</span> -<span class="lineNum"> 76 </span> : // m_group = g.entry( "Categories" ).value; -<span class="lineNum"> 77 </span><span class="lineCov"> 32 : m_icon = g.entry( "Icon" ).value;</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 32 : setCategories( g.entry( "Categories" ).value );</span> -<span class="lineNum"> 79 </span> : } -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 16 : void setCategories( std::string s ) {</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 16 : std::istringstream i( s );</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 16 : m_categories.clear();</span> -<span class="lineNum"> 84 </span> : std::remove_copy_if( -<span class="lineNum"> 85 </span> : std::istream_iterator< Category >( i ), -<span class="lineNum"> 86 </span> : std::istream_iterator< Category >(), -<span class="lineNum"> 87 </span> : std::inserter( m_categories, m_categories.begin() ), -<span class="lineNum"> 88 </span><span class="lineCov"> 16 : std::bind1st( std::equal_to< std::string >(), "" ) );</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 16 : }</span> -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span><span class="lineCov"> 16 : Categories categories() const { return m_categories; }</span> -<span class="lineNum"> 92 </span> : bool inCategory( std::string c ) const { -<span class="lineNum"> 93 </span> : return m_categories.find( c ) != m_categories.end(); -<span class="lineNum"> 94 </span> : } -<span class="lineNum"> 95 </span><span class="lineCov"> 34 : std::string id() const { return m_id; }</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 6 : std::string name() const { return m_name; }</span> -<span class="lineNum"> 97 </span> : std::string package() const { return m_package; } -<span class="lineNum"> 98 </span> : std::string description() const { return m_description; } -<span class="lineNum"> 99 </span> : std::string icon() const { return m_icon; } -<span class="lineNum"> 100 </span> : bool operator< ( const Entry &o ) const { -<span class="lineNum"> 101 </span> : if ( m_name < o.m_name ) return true; -<span class="lineNum"> 102 </span> : if ( m_name == o.m_name ) -<span class="lineNum"> 103 </span> : if ( m_package < o.m_package ) return true; -<span class="lineNum"> 104 </span> : return false; -<span class="lineNum"> 105 </span> : } -<span class="lineNum"> 106 </span> : protected: -<span class="lineNum"> 107 </span> : std::string m_name, m_package, m_description, m_icon, m_id; -<span class="lineNum"> 108 </span> : bool m_supported, m_free; -<span class="lineNum"> 109 </span> : Categories m_categories; -<span class="lineNum"> 110 </span> : }; -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 450 : struct InternalList {</span> -<span class="lineNum"> 113 </span> : std::string dir; -<span class="lineNum"> 114 </span> : std::string current; -<span class="lineNum"> 115 </span> : mutable Entry entry; -<span class="lineNum"> 116 </span> : off_t offset; -<span class="lineNum"> 117 </span> : mutable bool loaded; -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span><span class="lineCov"> 9 : InternalList() : dir( "" ), offset( -2 ), loaded( false ) {}</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 4 : InternalList( std::string d ) : dir( d ), offset( -1 ), loaded( false )</span> -<span class="lineNum"> 121 </span> : { -<span class="lineNum"> 122 </span><span class="lineCov"> 4 : firstFile();</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span><span class="lineCov"> 56 : Entry head() const {</span> -<span class="lineNum"> 126 </span><span class="lineCov"> 56 : if (!loaded)</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 16 : entry.load( current );</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 56 : loaded = true;</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 56 : return entry;</span> -<span class="lineNum"> 130 </span> : } -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span><span class="lineCov"> 33 : bool empty() const {</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 33 : return (offset == -2);</span> -<span class="lineNum"> 134 </span> : } -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span><span class="lineCov"> 4 : void firstFile() {</span> -<span class="lineNum"> 137 </span><span class="lineCov"> 4 : offset = -1;</span> -<span class="lineNum"> 138 </span><span class="lineCov"> 4 : nextFile();</span> -<span class="lineNum"> 139 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 140 </span> : -<span class="lineNum"> 141 </span><span class="lineCov"> 16 : InternalList tail() const {</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 16 : InternalList r = *this;</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 16 : r.nextFile();</span> -<span class="lineNum"> 144 </span><span class="lineNoCov"> 0 : return r;</span> -<span class="lineNum"> 145 </span> : } -<span class="lineNum"> 146 </span> : -<span class="lineNum"> 147 </span><span class="lineCov"> 20 : void nextFile() {</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 20 : loaded = false;</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 20 : DIR *d = opendir( dir.c_str() );</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 20 : if ( !d ) {</span> -<span class="lineNum"> 151 </span><span class="lineNoCov"> 0 : offset = -2;</span> -<span class="lineNum"> 152 </span><span class="lineNoCov"> 0 : closedir( d );</span> -<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : return;</span> -<span class="lineNum"> 154 </span> : } -<span class="lineNum"> 155 </span> : -<span class="lineNum"> 156 </span><span class="lineCov"> 20 : if ( offset != -1 )</span> -<span class="lineNum"> 157 </span><span class="lineCov"> 16 : seekdir( d, offset );</span> -<span class="lineNum"> 158 </span> : -<span class="lineNum"> 159 </span><span class="lineCov"> 20 : dirent *ent = 0;</span> -<span class="lineNum"> 160 </span><span class="lineCov"> 48 : while ( ( ent = readdir( d ) ) != 0 ) {</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 24 : std::string name( ent->d_name );</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 48 : if ( name == "." || name == ".." )</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 8 : continue;</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 16 : if ( !wibble::str::endsWith( name, ".desktop" ) )</span> -<span class="lineNum"> 165 </span> : continue; -<span class="lineNum"> 166 </span><span class="lineCov"> 16 : current = dir + "/" + name;</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 16 : offset = telldir( d );</span> -<span class="lineNum"> 168 </span><span class="lineCov"> 16 : closedir( d );</span> -<span class="lineNum"> 169 </span><span class="lineCov"> 16 : return;</span> -<span class="lineNum"> 170 </span> : } -<span class="lineNum"> 171 </span><span class="lineCov"> 4 : closedir( d );</span> -<span class="lineNum"> 172 </span><span class="lineCov"> 4 : offset = -2;</span> -<span class="lineNum"> 173 </span> : } -<span class="lineNum"> 174 </span> : }; -<span class="lineNum"> 175 </span> : -<span class="lineNum"> 176 </span> : struct Setup { -<span class="lineNum"> 177 </span> : typedef ept::Token Token; -<span class="lineNum"> 178 </span> : typedef Entry Internal; -<span class="lineNum"> 179 </span> : typedef desktop::PropertyId PropertyId; -<span class="lineNum"> 180 </span> : typedef desktop::InternalList InternalList; -<span class="lineNum"> 181 </span> : }; -<span class="lineNum"> 182 </span> : -<span class="lineNum"> 183 </span><span class="lineCov"> 5 : struct GroupPolicy {</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 16 : virtual std::string group( const Entry &e )</span> -<span class="lineNum"> 185 </span> : { -<span class="lineNum"> 186 </span><span class="lineCov"> 16 : return wibble::str::fmt( e.categories() );</span> -<span class="lineNum"> 187 </span> : } -<span class="lineNum"> 188 </span><span class="lineCov"> 5 : virtual ~GroupPolicy() {}</span> -<span class="lineNum"> 189 </span> : }; -<span class="lineNum"> 190 </span> : -<span class="lineNum"> 191 </span> : struct Source : core::Source< Source, Setup, PropertyType > -<span class="lineNum"> 192 </span><span class="lineCov"> 5 : {</span> -<span class="lineNum"> 193 </span> : std::string m_dir; -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span> : GroupPolicy m_defaultPolicy; -<span class="lineNum"> 196 </span> : GroupPolicy *m_policy; -<span class="lineNum"> 197 </span> : -<span class="lineNum"> 198 </span><span class="lineCov"> 5 : Source( std::string dir ) : m_dir( dir ),</span> -<span class="lineNum"> 199 </span><span class="lineCov"> 5 : m_policy( &m_defaultPolicy ) {}</span> -<span class="lineNum"> 200 </span> : -<span class="lineNum"> 201 </span><span class="lineCov"> 4 : InternalList listInternal() {</span> -<span class="lineNum"> 202 </span><span class="lineCov"> 4 : return InternalList( m_dir );</span> -<span class="lineNum"> 203 </span> : } -<span class="lineNum"> 204 </span> : -<span class="lineNum"> 205 </span><span class="lineCov"> 34 : Token getToken( Entry i ) {</span> -<span class="lineNum"> 206 </span><span class="lineCov"> 34 : Token t;</span> -<span class="lineNum"> 207 </span><span class="lineCov"> 34 : t._id = std::string( "desktop:" ) + i.id();</span> -<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 209 </span> : } -<span class="lineNum"> 210 </span> : -<span class="lineNum"> 211 </span> : Entry lookupToken( Token t ) { -<span class="lineNum"> 212 </span> : Entry e; -<span class="lineNum"> 213 </span> : e.load( t.desktop() ); -<span class="lineNum"> 214 </span> : return e; -<span class="lineNum"> 215 </span> : } -<span class="lineNum"> 216 </span> : -<span class="lineNum"> 217 </span> : void setGroupPolicy( GroupPolicy *p ) { -<span class="lineNum"> 218 </span> : m_policy = p; -<span class="lineNum"> 219 </span> : } -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span> : template< PropertyId p > -<span class="lineNum"> 222 </span> : typename PropertyType< p >::T getInternal( Entry ); -<span class="lineNum"> 223 </span> : -<span class="lineNum"> 224 </span><span class="lineCov"> 56 : struct IsInGroup {</span> -<span class="lineNum"> 225 </span> : std::string g; -<span class="lineNum"> 226 </span><span class="lineCov"> 2 : IsInGroup( std::string _g = "" ) : g( _g ) {}</span> -<span class="lineNum"> 227 </span><span class="lineCov"> 8 : bool operator()( Token, std::string gr ) const {</span> -<span class="lineNum"> 228 </span><span class="lineCov"> 8 : return gr == g;</span> -<span class="lineNum"> 229 </span> : } -<span class="lineNum"> 230 </span> : }; -<span class="lineNum"> 231 </span> : -<span class="lineNum"> 232 </span><span class="lineCov"> 1 : PropertyFilter< Group, IsInGroup >::T group( std::string id )</span> -<span class="lineNum"> 233 </span> : { -<span class="lineNum"> 234 </span><span class="lineCov"> 1 : return propertyFilter< Group >( IsInGroup( id ) );</span> -<span class="lineNum"> 235 </span> : } -<span class="lineNum"> 236 </span> : -<span class="lineNum"> 237 </span><span class="lineCov"> 4 : static std::string projectGroup( ComposedList< Name > t ) {</span> -<span class="lineNum"> 238 </span><span class="lineCov"> 4 : return t.get< Group >();</span> -<span class="lineNum"> 239 </span> : } -<span class="lineNum"> 240 </span> : -<span class="lineNum"> 241 </span> : list::Unique< list::Sorted< -<span class="lineNum"> 242 </span> : list::Map< ComposedList< Name >, -<span class="lineNum"> 243 </span> : __typeof( std::ptr_fun( &projectGroup ) ) > > > -<span class="lineNum"> 244 </span><span class="lineCov"> 1 : groupList() {</span> -<span class="lineNum"> 245 </span> : return list::unique( -<span class="lineNum"> 246 </span> : list::sort( list::map( list< Name >(), -<span class="lineNum"> 247 </span><span class="lineCov"> 1 : std::ptr_fun( &projectGroup ) ) ) );</span> -<span class="lineNum"> 248 </span> : } -<span class="lineNum"> 249 </span> : }; -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span><span class="lineCov"> 6 : template<> inline std::string Source::getInternal< Name >( Entry e ) {</span> -<span class="lineNum"> 252 </span><span class="lineCov"> 6 : return e.name();</span> -<span class="lineNum"> 253 </span> : } -<span class="lineNum"> 254 </span> : -<span class="lineNum"> 255 </span> : template<> inline std::string Source::getInternal< Icon >( Entry e ) { -<span class="lineNum"> 256 </span> : return e.icon(); -<span class="lineNum"> 257 </span> : } -<span class="lineNum"> 258 </span> : -<span class="lineNum"> 259 </span> : template<> inline ept::Token Source::getInternal< Package >( Entry e ) { -<span class="lineNum"> 260 </span> : ept::Token t; -<span class="lineNum"> 261 </span> : t._id = e.package(); -<span class="lineNum"> 262 </span> : return t; -<span class="lineNum"> 263 </span> : } -<span class="lineNum"> 264 </span> : -<span class="lineNum"> 265 </span><span class="lineCov"> 16 : template<> inline std::string Source::getInternal< Group >( Entry e ) {</span> -<span class="lineNum"> 266 </span><span class="lineCov"> 16 : return m_policy->group( e );</span> -<span class="lineNum"> 267 </span> : } -<span class="lineNum"> 268 </span> : -<span class="lineNum"> 269 </span> : template<> inline std::string Source::getInternal< ShortDescription >( Entry e ) { -<span class="lineNum"> 270 </span> : return e.description(); -<span class="lineNum"> 271 </span> : } -<span class="lineNum"> 272 </span> : -<span class="lineNum"> 273 </span> : } -<span class="lineNum"> 274 </span> : } -<span class="lineNum"> 275 </span> : } -<span class="lineNum"> 276 </span> : -<span class="lineNum"> 277 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/desktop.test.h.gcov.html b/rep/ept/core/desktop.test.h.gcov.html deleted file mode 100644 index 0d08106..0000000 --- a/rep/ept/core/desktop.test.h.gcov.html +++ /dev/null @@ -1,135 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/desktop.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktop.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">33</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%">33</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/config.h> -<span class="lineNum"> 3 </span> : #include <ept/core/desktop.h> -<span class="lineNum"> 4 </span> : #include <ept/core/list.h> -<span class="lineNum"> 5 </span> : #include <ept/test.h> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : using namespace ept::core; -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span><span class="lineCov"> 5 : struct TestDesktop {</span> -<span class="lineNum"> 10 </span> : desktop::Source desk; -<span class="lineNum"> 11 </span> : ept::Token t; -<span class="lineNum"> 12 </span> : -<span class="lineNum"> 13 </span><span class="lineCov"> 5 : TestDesktop() : desk( TEST_ENV_DIR "desktop" ) {}</span> -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span> : template< desktop::PropertyId P, typename L > -<span class="lineNum"> 16 </span><span class="lineCov"> 3 : void checkIteration2( int c, const char **check, L l ) {</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 3 : int i = 0;</span> -<span class="lineNum"> 18 </span><span class="lineCov"> 16 : while ( !l.empty() ) {</span> -<span class="lineNum"> 19 </span><span class="lineCov"> 10 : assert_eq( l.head().template get< P >(), check[ i ] );</span> -<span class="lineNum"> 20 </span><span class="lineCov"> 20 : l = l.tail();</span> -<span class="lineNum"> 21 </span><span class="lineCov"> 10 : ++ i;</span> -<span class="lineNum"> 22 </span> : } -<span class="lineNum"> 23 </span><span class="lineCov"> 3 : assert_eq( i, c );</span> -<span class="lineNum"> 24 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : template< desktop::PropertyId P, typename L > -<span class="lineNum"> 27 </span><span class="lineCov"> 3 : void checkIteration( int c, const char **check, L l ) {</span> -<span class="lineNum"> 28 </span><span class="lineCov"> 3 : checkIteration2< P >( c, check, list::sort( l ) );</span> -<span class="lineNum"> 29 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span><span class="lineCov"> 1 : Test iteration() {</span> -<span class="lineNum"> 32 </span><span class="lineCov"> 1 : const char *check[] = { "Kdict", "foo", "XQF", "X-Server" };</span> -<span class="lineNum"> 33 </span> : checkIteration< desktop::Name >( -<span class="lineNum"> 34 </span><span class="lineCov"> 1 : 4, check, desk.list< desktop::Name >() );</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span><span class="lineCov"> 1 : Test groupProperty() {</span> -<span class="lineNum"> 38 </span> : const char *check[] = { -<span class="lineNum"> 39 </span> : "{ KDE, Qt, Utility }", -<span class="lineNum"> 40 </span> : "{ KDE, Qt, Utility }", -<span class="lineNum"> 41 </span> : "{ Application, Game, X-SuSE-Core-Game }", -<span class="lineNum"> 42 </span> : "{ KDE, Qt, X-KDE-information }", -<span class="lineNum"> 43 </span><span class="lineCov"> 1 : };</span> -<span class="lineNum"> 44 </span> : checkIteration< desktop::Group >( -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : 4, check, desk.list< desktop::Name >() );</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : Test groups() {</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : const char *check[] = { "Kdict", "foo" };</span> -<span class="lineNum"> 50 </span> : checkIteration< desktop::Name >( -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : 2, check, desk.group( "{ KDE, Qt, Utility }" ) );</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : Test groupList() {</span> -<span class="lineNum"> 55 </span> : std::string check[] = { -<span class="lineNum"> 56 </span> : "{ Application, Game, X-SuSE-Core-Game }", -<span class="lineNum"> 57 </span> : "{ KDE, Qt, Utility }", -<span class="lineNum"> 58 </span> : "{ KDE, Qt, X-KDE-information }", -<span class="lineNum"> 59 </span><span class="lineCov"> 1 : };</span> -<span class="lineNum"> 60 </span> : -<span class="lineNum"> 61 </span><span class="lineCov"> 2 : assert_list_eq( desk.groupList(), check );</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 63 </span> : -<span class="lineNum"> 64 </span><span class="lineCov"> 1 : Test emptyGroupList() {</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : desktop::InternalList l;</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : assert( l.empty() );</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 68 </span> : }; -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/desktopfile.h.gcov.html b/rep/ept/core/desktopfile.h.gcov.html deleted file mode 100644 index 9ed8552..0000000 --- a/rep/ept/core/desktopfile.h.gcov.html +++ /dev/null @@ -1,205 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/desktopfile.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - desktopfile.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">77</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">75.3 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">58</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /// -*- C++ -*- (c) 2006, 2007 Petr Rockai <me@mornfall.net> -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <iostream> -<span class="lineNum"> 4 </span> : #include <string> -<span class="lineNum"> 5 </span> : #include <map> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : #ifndef EPT_CORE_DESKTOPFILE_H -<span class="lineNum"> 8 </span> : #define EPT_CORE_DESKTOPFILE_H -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span> : namespace ept { -<span class="lineNum"> 11 </span> : namespace core { -<span class="lineNum"> 12 </span> : namespace desktop { -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span><span class="lineCov"> 32 : struct File {</span> -<span class="lineNum"> 15 </span><span class="lineCov"> 13540 : struct Entry {</span> -<span class="lineNum"> 16 </span> : std::string key; -<span class="lineNum"> 17 </span> : std::string value; -<span class="lineNum"> 18 </span> : }; -<span class="lineNum"> 19 </span> : typedef std::map< std::string, Entry > EntryMap; -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span><span class="lineCov"> 144 : struct Group {</span> -<span class="lineNum"> 22 </span> : std::string name; -<span class="lineNum"> 23 </span> : EntryMap entries; -<span class="lineNum"> 24 </span><span class="lineCov"> 88 : Entry &entry( std::string k ) { return entries[ k ]; }</span> -<span class="lineNum"> 25 </span> : }; -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : typedef std::map< std::string, Group > GroupMap; -<span class="lineNum"> 28 </span> : GroupMap groups; -<span class="lineNum"> 29 </span><span class="lineCov"> 16 : Group &group( std::string k ) { return groups[ k ]; }</span> -<span class="lineNum"> 30 </span> : }; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 1228 : inline std::istream &operator >>( std::istream &i, File::Entry &e )</span> -<span class="lineNum"> 33 </span> : { -<span class="lineNum"> 34 </span><span class="lineCov"> 1228 : std::string spaces = ""; char c; bool started = false;</span> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 1228 : e.key = "";</span> -<span class="lineNum"> 37 </span> : // read key -<span class="lineNum"> 38 </span><span class="lineCov"> 16056 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 14820 : c = i.get();</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 14820 : if ( !started && c == '\n' )</span> -<span class="lineNum"> 41 </span><span class="lineCov"> 8 : return i >> e;</span> -<span class="lineNum"> 42 </span><span class="lineCov"> 14812 : if ( isspace( c ) ) {</span> -<span class="lineNum"> 43 </span><span class="lineNoCov"> 0 : spaces += c;</span> -<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 45 </span> : } -<span class="lineNum"> 46 </span><span class="lineCov"> 14812 : if ( !started && c == '#' ) {</span> -<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : while ( i.peek() != EOF && i.get() != '\n' )</span> -<span class="lineNum"> 48 </span> : ; // read till eol -<span class="lineNum"> 49 </span><span class="lineNoCov"> 0 : return i >> e; // restart reading</span> -<span class="lineNum"> 50 </span> : } -<span class="lineNum"> 51 </span><span class="lineCov"> 14812 : started = true;</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 14812 : if ( c == '=' )</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 1212 : break;</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 13600 : e.key += spaces;</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 13600 : e.key += c;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 13600 : spaces = "";</span> -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span> : // std::cerr << "read key: " << e.key << std::endl; -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span><span class="lineCov"> 1220 : started = false;</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 1220 : bool backslash = false;</span> -<span class="lineNum"> 62 </span> : // read value -<span class="lineNum"> 63 </span><span class="lineCov"> 37496 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 36268 : c = i.get();</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 36268 : if ( c == '\n' ) {</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 1212 : if ( backslash )</span> -<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : e.value += '\\';</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1212 : return i;</span> -<span class="lineNum"> 69 </span> : } -<span class="lineNum"> 70 </span><span class="lineCov"> 35056 : if ( !started && isspace( c ) )</span> -<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 35056 : started = true;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 35056 : if ( backslash ) { // interpret escape sequences</span> -<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : if ( c == '\\' ) e.value += '\\';</span> -<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : else if ( c == 'n' ) e.value += '\n';</span> -<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : else if ( c == 't' ) e.value += '\t';</span> -<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : else if ( c == 'r' ) e.value += '\r';</span> -<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : else if ( c == 's' ) e.value += ' ';</span> -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : else { e.value += '\\'; e.value += c; }</span> -<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : backslash = false;</span> -<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span><span class="lineCov"> 35056 : if ( c == '\\' ) {</span> -<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : backslash = true;</span> -<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 86 </span> : } -<span class="lineNum"> 87 </span><span class="lineCov"> 35056 : e.value += c;</span> -<span class="lineNum"> 88 </span> : } -<span class="lineNum"> 89 </span><span class="lineCov"> 8 : return i;</span> -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span><span class="lineCov"> 16 : inline std::istream &operator >>( std::istream &i, File::Group &g )</span> -<span class="lineNum"> 93 </span> : { -<span class="lineNum"> 94 </span><span class="lineCov"> 16 : bool started = false; char c;</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 16 : g.name = "";</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 256 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 240 : c = i.get();</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 240 : if ( !started && isspace( c ) )</span> -<span class="lineNum"> 99 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 240 : if ( !started && c == '#' ) {</span> -<span class="lineNum"> 101 </span><span class="lineNoCov"> 0 : while( i.peek() != EOF && i.get() != '\n' )</span> -<span class="lineNum"> 102 </span> : ; // read till eol -<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : return i >> g; // restart reading</span> -<span class="lineNum"> 104 </span> : } -<span class="lineNum"> 105 </span><span class="lineCov"> 240 : if ( !started && c == '[' ) {</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 16 : started = true;</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 16 : continue;</span> -<span class="lineNum"> 108 </span> : } -<span class="lineNum"> 109 </span><span class="lineCov"> 224 : if ( started && c == ']' ) {</span> -<span class="lineNum"> 110 </span><span class="lineCov"> 16 : while( i.peek() != EOF && i.get() != '\n' )</span> -<span class="lineNum"> 111 </span> : ; // read till eol -<span class="lineNum"> 112 </span><span class="lineCov"> 16 : break;</span> -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span><span class="lineCov"> 208 : g.name += c;</span> -<span class="lineNum"> 115 </span> : } -<span class="lineNum"> 116 </span><span class="lineCov"> 1236 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 117 </span><span class="lineCov"> 1220 : File::Entry e;</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 1220 : i >> e;</span> -<span class="lineNum"> 119 </span><span class="lineCov"> 1220 : g.entries[ e.key ] = e;</span> -<span class="lineNum"> 120 </span> : } -<span class="lineNum"> 121 </span><span class="lineCov"> 16 : return i;</span> -<span class="lineNum"> 122 </span> : } -<span class="lineNum"> 123 </span> : -<span class="lineNum"> 124 </span><span class="lineCov"> 16 : inline std::istream &operator >>( std::istream &i, File &f )</span> -<span class="lineNum"> 125 </span> : { -<span class="lineNum"> 126 </span><span class="lineCov"> 32 : while ( i.peek() != EOF ) {</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 16 : File::Group g;</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 16 : i >> g;</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 16 : f.groups[ g.name ] = g;</span> -<span class="lineNum"> 130 </span> : } -<span class="lineNum"> 131 </span><span class="lineCov"> 16 : return i;</span> -<span class="lineNum"> 132 </span> : } -<span class="lineNum"> 133 </span> : -<span class="lineNum"> 134 </span> : } -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span> : } -<span class="lineNum"> 137 </span> : -<span class="lineNum"> 138 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/index.html b/rep/ept/core/index.html deleted file mode 100644 index bec608b..0000000 --- a/rep/ept/core/index.html +++ /dev/null @@ -1,164 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/core</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">688</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">82.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">570</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.cpp.gcov.html">apt.cpp</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">7 / 7 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.h.gcov.html">apt.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=80 height=10 alt="79.8%"><img src="../../snow.png" width=20 height=10 alt="79.8%"></td></tr></table> - </td> - <td class="coverPerHi">79.8 %</td> - <td class="coverNumHi">138 / 173 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="apt.test.h.gcov.html">apt.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">60 / 60 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="desktop.h.gcov.html">desktop.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=94 height=10 alt="94.2%"><img src="../../snow.png" width=6 height=10 alt="94.2%"></td></tr></table> - </td> - <td class="coverPerHi">94.2 %</td> - <td class="coverNumHi">97 / 103 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="desktop.test.h.gcov.html">desktop.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">33 / 33 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="desktopfile.h.gcov.html">desktopfile.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=75 height=10 alt="75.3%"><img src="../../snow.png" width=25 height=10 alt="75.3%"></td></tr></table> - </td> - <td class="coverPerHi">75.3 %</td> - <td class="coverNumHi">58 / 77 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="source.h.gcov.html">source.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">34 / 34 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="xapian.cpp.gcov.html">xapian.cpp</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../amber.png" width=21 height=10 alt="21.4%"><img src="../../snow.png" width=79 height=10 alt="21.4%"></td></tr></table> - </td> - <td class="coverPerMed">21.4 %</td> - <td class="coverNumMed">12 / 56 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="xapian.h.gcov.html">xapian.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="87.2%"><img src="../../snow.png" width=13 height=10 alt="87.2%"></td></tr></table> - </td> - <td class="coverPerHi">87.2 %</td> - <td class="coverNumHi">95 / 109 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="xapian.test.h.gcov.html">xapian.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">36 / 36 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/source.h.gcov.html b/rep/ept/core/source.h.gcov.html deleted file mode 100644 index 2c2d8e5..0000000 --- a/rep/ept/core/source.h.gcov.html +++ /dev/null @@ -1,181 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/source.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - source.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">34</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">100.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">34</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : #include <ept/core/list.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #ifndef EPT_CORE_SOURCE_H -<span class="lineNum"> 6 </span> : #define EPT_CORE_SOURCE_H -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : namespace ept { -<span class="lineNum"> 9 </span> : namespace core { -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : template< typename Self, typename Setup, -<span class="lineNum"> 12 </span> : template< typename Setup::PropertyId > class PType > -<span class="lineNum"> 13 </span><span class="lineCov"> 38 : struct Source {</span> -<span class="lineNum"> 14 </span> : typedef typename Setup::PropertyId PropertyId; -<span class="lineNum"> 15 </span> : typedef typename Setup::Token Token; -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span> : Token m_cachedToken; -<span class="lineNum"> 18 </span> : typename Setup::Internal m_cached; -<span class="lineNum"> 19 </span> : -<span class="lineNum"> 20 </span><span class="lineCov"> 43 : Self &self() { return *static_cast< Self * >( this ); }</span> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : template< PropertyId property > -<span class="lineNum"> 23 </span><span class="lineCov"> 13 : typename PType< property >::T get( Token t ) {</span> -<span class="lineNum"> 24 </span><span class="lineCov"> 13 : if ( m_cachedToken != t ) {</span> -<span class="lineNum"> 25 </span><span class="lineCov"> 10 : m_cachedToken = t;</span> -<span class="lineNum"> 26 </span><span class="lineCov"> 10 : m_cached = self().lookupToken( t );</span> -<span class="lineNum"> 27 </span> : } -<span class="lineNum"> 28 </span><span class="lineCov"> 13 : return self().template getInternal< property >( m_cached );</span> -<span class="lineNum"> 29 </span> : } -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : void invalidate() { -<span class="lineNum"> 32 </span> : m_cachedToken = ept::Token(); -<span class="lineNum"> 33 </span> : m_cached = typename Setup::Internal(); -<span class="lineNum"> 34 </span> : } -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : template< PropertyId _property > -<span class="lineNum"> 37 </span> : struct ComposedList : wibble::mixin::Comparable< ComposedList< _property > > -<span class="lineNum"> 38 </span><span class="lineCov"> 4009 : {</span> -<span class="lineNum"> 39 </span> : typedef Self Origin; -<span class="lineNum"> 40 </span> : typedef typename Setup::Token Token; -<span class="lineNum"> 41 </span> : typedef typename PType< _property >::T Property; -<span class="lineNum"> 42 </span> : typedef ComposedList Type; -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span> : Origin *origin; -<span class="lineNum"> 45 </span> : typename Setup::InternalList internal; -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineCov"> 12056 : ComposedList tail() const {</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 12056 : return ComposedList< _property >( *origin, internal.tail() );</span> -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 12078 : bool empty() const { return internal.empty(); }</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineCov"> 13 : bool operator<( const ComposedList &o ) const {</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 13 : return token() < o.token();</span> -<span class="lineNum"> 55 </span> : } -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span><span class="lineCov"> 18 : ComposedList &head() { return *this; }</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 4 : const ComposedList &head() const { return *this; }</span> -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span><span class="lineCov"> 6054 : Token token() const { return origin->getToken( internal.head() ); }</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 7836 : Property property() const {</span> -<span class="lineNum"> 63 </span> : return origin->template getInternal< _property >( -<span class="lineNum"> 64 </span><span class="lineCov"> 7836 : internal.head() );</span> -<span class="lineNum"> 65 </span> : } -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span> : template< PropertyId P > -<span class="lineNum"> 68 </span> : typename PType< P >::T -<span class="lineNum"> 69 </span><span class="lineCov"> 14 : get() const {</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 14 : return origin->template getInternal< P >( internal.head() );</span> -<span class="lineNum"> 71 </span> : } -<span class="lineNum"> 72 </span> : -<span class="lineNum"> 73 </span><span class="lineCov"> 8 : ComposedList() : origin( 0 ) {}</span> -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span><span class="lineCov"> 12066 : ComposedList( Origin &o, typename Setup::InternalList i )</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 12066 : : origin( &o ), internal( i ) {}</span> -<span class="lineNum"> 77 </span> : }; -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span> : template< PropertyId property > -<span class="lineNum"> 80 </span><span class="lineCov"> 10 : ComposedList< property > list()</span> -<span class="lineNum"> 81 </span> : { -<span class="lineNum"> 82 </span><span class="lineCov"> 10 : return ComposedList< property >( self(), self().listInternal() );</span> -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : template< PropertyId P, typename F > -<span class="lineNum"> 86 </span><span class="lineCov"> 50 : struct Propertify {</span> -<span class="lineNum"> 87 </span> : F f; -<span class="lineNum"> 88 </span><span class="lineCov"> 2 : Propertify( F _f = F() ) : f( _f ) {}</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 8 : bool operator()( const ComposedList< P > &x ) const {</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 8 : return f( x.token(), x.property() );</span> -<span class="lineNum"> 91 </span> : } -<span class="lineNum"> 92 </span> : }; -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : template< PropertyId P, typename F > -<span class="lineNum"> 95 </span> : struct PropertyFilter { -<span class="lineNum"> 96 </span> : typedef typename list::Filtered< -<span class="lineNum"> 97 </span> : ComposedList< P >, Propertify< P, F > > T; -<span class="lineNum"> 98 </span> : }; -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span> : template< PropertyId P, typename F > -<span class="lineNum"> 101 </span> : typename PropertyFilter< P, F >::T -<span class="lineNum"> 102 </span><span class="lineCov"> 1 : propertyFilter( F f ) {</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 1 : return list::filter( list< P >(), Propertify< P, F >( f ) );</span> -<span class="lineNum"> 104 </span> : } -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span><span class="lineCov"> 38 : Source()</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 38 : {</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 38 : }</span> -<span class="lineNum"> 109 </span> : }; -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span> : } -<span class="lineNum"> 112 </span> : } -<span class="lineNum"> 113 </span> : -<span class="lineNum"> 114 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/xapian.cpp.gcov.html b/rep/ept/core/xapian.cpp.gcov.html deleted file mode 100644 index fdd7a16..0000000 --- a/rep/ept/core/xapian.cpp.gcov.html +++ /dev/null @@ -1,208 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/xapian.cpp</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.cpp</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">56</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">21.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">12</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- (c) 2007 Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 2 </span> : // Petr Rockai <me@mornfall.net> -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /* -<span class="lineNum"> 5 </span> : * Copyright (C) 2007 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/core/xapian.h> -<span class="lineNum"> 23 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 24 </span> : #include <ept/core/apt/record.h> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #include <ept/textsearch/maint/path.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <wibble/regexp.h> -<span class="lineNum"> 29 </span> : #include <cctype> -<span class="lineNum"> 30 </span> : #include <cmath> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : #include <xapian/queryparser.h> -<span class="lineNum"> 33 </span> : #include <xapian/base.h> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : #include <algorithm> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : #include <iostream> -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : using namespace std; -<span class="lineNum"> 40 </span> : using namespace ept; -<span class="lineNum"> 41 </span> : // using namespace ept::debtags; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : namespace ept { -<span class="lineNum"> 44 </span> : namespace core { -<span class="lineNum"> 45 </span> : namespace xapian { -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span> : size_t max_index = 0; -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span><span class="lineCov"> 4 : Source::Source()</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 4 : : m_stem("en"), m_opened( false )</span> -<span class="lineNum"> 51 </span> : { -<span class="lineNum"> 52 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span><span class="lineCov"> 9 : time_t Source::timestamp() const {</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 9 : return textsearch::Path::indexTimestamp();</span> -<span class="lineNum"> 56 </span> : } -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span><span class="lineCov"> 9 : void Source::open() const {</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 9 : if (timestamp()) {</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 9 : std::string path = textsearch::Path::index();</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 9 : m_db = Xapian::Database( path );</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 9 : m_opened = true;</span> -<span class="lineNum"> 63 </span> : } -<span class="lineNum"> 64 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : std::string Source::toLower(const std::string& str)</span> -<span class="lineNum"> 67 </span> : { -<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : std::string res;</span> -<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : res.reserve(str.size());</span> -<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)</span> -<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : res += tolower(*i);</span> -<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 73 </span> : } -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span> : void Source::normalize_and_add(Xapian::Document& doc, const std::string& term, -<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : int& /* pos */) const</span> -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : string t = Source::toLower(term);</span> -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : string s = m_stem(t);</span> -<span class="lineNum"> 80 </span><span class="lineNoCov"> 0 : doc.add_term(t);</span> -<span class="lineNum"> 81 </span><span class="lineNoCov"> 0 : if (s != t)</span> -<span class="lineNum"> 82 </span><span class="lineNoCov"> 0 : doc.add_term(s);</span> -<span class="lineNum"> 83 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineNoCov"> 0 : Xapian::docid Source::docidByName(const std::string& pkgname) const</span> -<span class="lineNum"> 86 </span> : { -<span class="lineNum"> 87 </span><span class="lineNoCov"> 0 : Xapian::PostingIterator i = m_db.postlist_begin("pkg:"+pkgname);</span> -<span class="lineNum"> 88 </span><span class="lineNoCov"> 0 : if (i == m_db.postlist_end("pkg:"+pkgname))</span> -<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 90 </span> : else -<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return *i;</span> -<span class="lineNum"> 92 </span> : } -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span><span class="lineNoCov"> 0 : Xapian::Query Source::makeRelatedQuery(const std::string& pkgname) const</span> -<span class="lineNum"> 95 </span> : { -<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : Xapian::Enquire enquire(db());</span> -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span> : // Retrieve the document for the given package -<span class="lineNum"> 99 </span><span class="lineNoCov"> 0 : enquire.set_query(Xapian::Query("pkg:"+pkgname));</span> -<span class="lineNum"> 100 </span><span class="lineNoCov"> 0 : Xapian::MSet matches = enquire.get_mset(0, 1);</span> -<span class="lineNum"> 101 </span><span class="lineNoCov"> 0 : Xapian::MSetIterator mi = matches.begin();</span> -<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : if (mi == matches.end()) return Xapian::Query();</span> -<span class="lineNum"> 103 </span><span class="lineNoCov"> 0 : Xapian::Document doc = mi.get_document();</span> -<span class="lineNum"> 104 </span> : -<span class="lineNum"> 105 </span> : // Return the query to get the list of similar documents -<span class="lineNum"> 106 </span><span class="lineNoCov"> 0 : return Xapian::Query(Xapian::Query::OP_OR, doc.termlist_begin(), doc.termlist_end());</span> -<span class="lineNum"> 107 </span> : } -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : double Source::getDoubleValue(const std::string& pkgname, -<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : Xapian::valueno val_id) const</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineNoCov"> 0 : Xapian::docid id = docidByName(pkgname);</span> -<span class="lineNum"> 113 </span><span class="lineNoCov"> 0 : if (id == 0)</span> -<span class="lineNum"> 114 </span><span class="lineNoCov"> 0 : return 0.0;</span> -<span class="lineNum"> 115 </span><span class="lineNoCov"> 0 : Xapian::Document doc = db().get_document(id);</span> -<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : string val = doc.get_value(val_id);</span> -<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : if (val.empty())</span> -<span class="lineNum"> 118 </span><span class="lineNoCov"> 0 : return 0.0;</span> -<span class="lineNum"> 119 </span> : else -<span class="lineNum"> 120 </span><span class="lineNoCov"> 0 : return Xapian::sortable_unserialise(val);</span> -<span class="lineNum"> 121 </span> : } -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : int Source::getIntValue(const std::string& pkgname, -<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : Xapian::valueno val_id) const</span> -<span class="lineNum"> 125 </span> : { -<span class="lineNum"> 126 </span><span class="lineNoCov"> 0 : Xapian::docid id = docidByName(pkgname);</span> -<span class="lineNum"> 127 </span><span class="lineNoCov"> 0 : if (id == 0)</span> -<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 129 </span><span class="lineNoCov"> 0 : Xapian::Document doc = db().get_document(id);</span> -<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : string val = doc.get_value(val_id);</span> -<span class="lineNum"> 131 </span><span class="lineNoCov"> 0 : if (val.empty())</span> -<span class="lineNum"> 132 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 133 </span> : else -<span class="lineNum"> 134 </span><span class="lineNoCov"> 0 : return (int)nearbyint(Xapian::sortable_unserialise(val));</span> -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span> : -<span class="lineNum"> 137 </span> : } -<span class="lineNum"> 138 </span> : } -<span class="lineNum"> 139 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 140 </span> : -<span class="lineNum"> 141 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/xapian.h.gcov.html b/rep/ept/core/xapian.h.gcov.html deleted file mode 100644 index d38457e..0000000 --- a/rep/ept/core/xapian.h.gcov.html +++ /dev/null @@ -1,456 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/xapian.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">109</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">87.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">95</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <xapian.h> -<span class="lineNum"> 3 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 4 </span> : #include <wibble/regexp.h> -<span class="lineNum"> 5 </span> : #include <wibble/sys/pipe.h> -<span class="lineNum"> 6 </span> : #include <wibble/sys/exec.h> -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : #ifndef EPT_XAPIAN_H -<span class="lineNum"> 9 </span> : #define EPT_XAPIAN_H -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : namespace ept { -<span class="lineNum"> 12 </span> : namespace core { -<span class="lineNum"> 13 </span> : namespace xapian { -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span> : // Allocate value indexes for known values -<span class="lineNum"> 16 </span> : const Xapian::valueno VAL_APT_INSTALLED_SIZE = 1; -<span class="lineNum"> 17 </span> : const Xapian::valueno VAL_APT_PACKAGE_SIZE = 2; -<span class="lineNum"> 18 </span> : const Xapian::valueno VAL_POPCON = 10; -<span class="lineNum"> 19 </span> : const Xapian::valueno VAL_ITERATING_RATING = 20; -<span class="lineNum"> 20 </span> : const Xapian::valueno VAL_ITERATING_FUNCTIONALITY = 21; -<span class="lineNum"> 21 </span> : const Xapian::valueno VAL_ITERATING_USABILITY = 22; -<span class="lineNum"> 22 </span> : const Xapian::valueno VAL_ITERATING_SECURITY = 23; -<span class="lineNum"> 23 </span> : const Xapian::valueno VAL_ITERATING_PERFORMANCE = 24; -<span class="lineNum"> 24 </span> : const Xapian::valueno VAL_ITERATING_QUALITY = 25; -<span class="lineNum"> 25 </span> : const Xapian::valueno VAL_ITERATING_SUPPORT = 26; -<span class="lineNum"> 26 </span> : const Xapian::valueno VAL_ITERATING_ADOPTION = 27; -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : struct TagFilter : public Xapian::ExpandDecider -<span class="lineNum"> 29 </span><span class="lineCov"> 8 : {</span> -<span class="lineNum"> 30 </span><span class="lineCov"> 1760 : virtual bool operator()(const std::string &term) const {</span> -<span class="lineNum"> 31 </span><span class="lineCov"> 1760 : return term[0] == 'X' && term[1] == 'T';</span> -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : }; -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span><span class="lineCov"> 91 : struct List {</span> -<span class="lineNum"> 36 </span> : char m_enqPlace[sizeof(Xapian::Enquire)]; -<span class="lineNum"> 37 </span> : mutable Xapian::MSet m_matches; -<span class="lineNum"> 38 </span> : mutable Xapian::MSet::const_iterator m_iter; -<span class="lineNum"> 39 </span> : mutable int m_pos; -<span class="lineNum"> 40 </span> : typedef List Type; -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span> : static const size_t chunkSize = 20; -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span> : List head() const { -<span class="lineNum"> 45 </span> : seek(); -<span class="lineNum"> 46 </span> : return *this; -<span class="lineNum"> 47 </span> : } -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span><span class="lineCov"> 15 : Token token() const {</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 15 : Token t;</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 15 : t._id = m_iter.get_document().get_data();</span> -<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 53 </span> : } -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span> : bool operator<( const List &o ) const { -<span class="lineNum"> 56 </span> : return token() < o.token(); -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span><span class="lineCov"> 58 : void seek() const {</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 58 : if ( m_matches.size() == chunkSize && m_iter == m_matches.end() ) {</span> -<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : m_matches = enq().get_mset( m_pos, chunkSize );</span> -<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : m_iter = m_matches.begin();</span> -<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : m_pos += chunkSize;</span> -<span class="lineNum"> 64 </span> : } -<span class="lineNum"> 65 </span><span class="lineCov"> 58 : }</span> -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineCov"> 30 : bool empty() const {</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 30 : if ( m_pos == -1 )</span> -<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 70 </span><span class="lineCov"> 30 : seek();</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 30 : return m_matches.size() < 30 && m_iter == m_matches.end();</span> -<span class="lineNum"> 72 </span> : } -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span><span class="lineCov"> 28 : List tail() const {</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 28 : List t = *this;</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 28 : t.seek();</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 28 : t.m_iter ++;</span> -<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : return t;</span> -<span class="lineNum"> 79 </span> : } -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 6 : Xapian::Enquire const &enq() const {</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 6 : return *reinterpret_cast< Xapian::Enquire const * >( m_enqPlace );</span> -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineCov"> 3 : List( Xapian::Enquire _enq )</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 3 : {</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 3 : Xapian::Enquire *e = new (m_enqPlace) Xapian::Enquire( _enq );</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 3 : assert_eq( e, &enq() );</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 6 : m_matches = enq().get_mset( 0, chunkSize );</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 3 : m_iter = m_matches.begin();</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 3 : m_pos = chunkSize;</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span> : List() {} -<span class="lineNum"> 95 </span> : }; -<span class="lineNum"> 96 </span> : -<span class="lineNum"> 97 </span><span class="lineCov"> 13 : struct Query {</span> -<span class="lineNum"> 98 </span> : Xapian::Database *m_db; -<span class="lineNum"> 99 </span> : Xapian::Enquire m_enq; -<span class="lineNum"> 100 </span> : Xapian::Stem m_stem; -<span class="lineNum"> 101 </span> : typedef std::set< std::string > Terms; -<span class="lineNum"> 102 </span> : Terms m_include, m_exclude; -<span class="lineNum"> 103 </span> : int m_cutoff; -<span class="lineNum"> 104 </span> : bool m_expand; -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span><span class="lineCov"> 5 : void setQualityCutoff( int c ) {</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 5 : m_cutoff = c;</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 5 : }</span> -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span><span class="lineCov"> 5 : void setExpand( bool e ) { m_expand = e; }</span> -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 9 : Query( Xapian::Database &e ) : m_db( &e ), m_enq( e ) {</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 9 : m_cutoff = 50;</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 9 : m_expand = true;</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 9 : }</span> -<span class="lineNum"> 116 </span> : -<span class="lineNum"> 117 </span><span class="lineCov"> 5 : wibble::Tokenizer queryTokenizer( std::string q ) const {</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 5 : return wibble::Tokenizer( q, "[A-Za-z0-9_+:-]+", REG_EXTENDED );</span> -<span class="lineNum"> 119 </span> : } -<span class="lineNum"> 120 </span> : -<span class="lineNum"> 121 </span> : template< typename Out > -<span class="lineNum"> 122 </span><span class="lineCov"> 5 : void tokenizeQuery( std::string q, Out o ) const</span> -<span class="lineNum"> 123 </span> : { -<span class="lineNum"> 124 </span><span class="lineCov"> 5 : wibble::Tokenizer tok = queryTokenizer( q );</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 15 : for (wibble::Tokenizer::const_iterator i = tok.begin(); i != tok.end(); ++i )</span> -<span class="lineNum"> 126 </span> : { -<span class="lineNum"> 127 </span><span class="lineCov"> 10 : if ( (*i).find( "::" ) != std::string::npos ) { // assume tag</span> -<span class="lineNum"> 128 </span><span class="lineNoCov"> 0 : *o++ = ("XT" + *i);</span> -<span class="lineNum"> 129 </span> : } else { -<span class="lineNum"> 130 </span><span class="lineCov"> 10 : std::string t = wibble::str::tolower(*i);</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 10 : std::string s = m_stem(t);</span> -<span class="lineNum"> 132 </span><span class="lineCov"> 10 : *o++ = t;</span> -<span class="lineNum"> 133 </span><span class="lineCov"> 10 : if (s != t)</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 5 : *o++ = ("Z" + s);</span> -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span> : } -<span class="lineNum"> 137 </span><span class="lineCov"> 5 : }</span> -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : template< typename Out > -<span class="lineNum"> 140 </span><span class="lineCov"> 4 : void expand( Out o ) const</span> -<span class="lineNum"> 141 </span> : { -<span class="lineNum"> 142 </span><span class="lineCov"> 4 : Xapian::RSet rset;</span> -<span class="lineNum"> 143 </span> : // Get the top 5 results as 'good ones' to compute the search expansion -<span class="lineNum"> 144 </span><span class="lineCov"> 4 : Xapian::MSet mset = m_enq.get_mset(0, 5);</span> -<span class="lineNum"> 145 </span><span class="lineCov"> 24 : for ( Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i )</span> -<span class="lineNum"> 146 </span><span class="lineCov"> 24 : rset.add_document(i);</span> -<span class="lineNum"> 147 </span> : // Get the expanded set, only expanding the query with tag names -<span class="lineNum"> 148 </span><span class="lineCov"> 4 : TagFilter tagf;</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 4 : Xapian::ESet eset = m_enq.get_eset(5, rset, &tagf);</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 4 : for ( Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i )</span> -<span class="lineNum"> 151 </span><span class="lineCov"> 4 : *o++ = *i;</span> -<span class="lineNum"> 152 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 153 </span> : -<span class="lineNum"> 154 </span><span class="lineCov"> 8 : void updateEnquire() {</span> -<span class="lineNum"> 155 </span> : // set up query now -<span class="lineNum"> 156 </span> : Xapian::Query inc( Xapian::Query::OP_OR, -<span class="lineNum"> 157 </span> : m_include.begin(), -<span class="lineNum"> 158 </span><span class="lineCov"> 8 : m_include.end() ),</span> -<span class="lineNum"> 159 </span> : exc( Xapian::Query::OP_OR, -<span class="lineNum"> 160 </span> : m_exclude.begin(), -<span class="lineNum"> 161 </span><span class="lineCov"> 8 : m_exclude.end() ),</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 8 : query( Xapian::Query::OP_AND_NOT, inc, exc );</span> -<span class="lineNum"> 163 </span> : -<span class="lineNum"> 164 </span><span class="lineCov"> 8 : m_enq.set_query( query );</span> -<span class="lineNum"> 165 </span> : -<span class="lineNum"> 166 </span><span class="lineCov"> 8 : if ( m_expand ) {</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 4 : m_expand = false;</span> -<span class="lineNum"> 168 </span><span class="lineCov"> 4 : expand( std::inserter( m_include, m_include.begin() ) );</span> -<span class="lineNum"> 169 </span><span class="lineCov"> 4 : updateEnquire();</span> -<span class="lineNum"> 170 </span><span class="lineCov"> 4 : m_expand = true;</span> -<span class="lineNum"> 171 </span><span class="lineCov"> 4 : return;</span> -<span class="lineNum"> 172 </span> : } -<span class="lineNum"> 173 </span> : -<span class="lineNum"> 174 </span><span class="lineCov"> 4 : Xapian::MSet first = m_enq.get_mset(0, 1, 0, 0, 0);</span> -<span class="lineNum"> 175 </span><span class="lineCov"> 4 : Xapian::MSetIterator ifirst = first.begin();</span> -<span class="lineNum"> 176 </span><span class="lineCov"> 4 : if ( ifirst != first.end() ) {</span> -<span class="lineNum"> 177 </span><span class="lineCov"> 4 : Xapian::percent cutoff = ifirst.get_percent() * m_cutoff / 100;</span> -<span class="lineNum"> 178 </span><span class="lineCov"> 4 : m_enq.set_cutoff(cutoff);</span> -<span class="lineNum"> 179 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 180 </span> : } -<span class="lineNum"> 181 </span> : -<span class="lineNum"> 182 </span><span class="lineCov"> 3 : List results() {</span> -<span class="lineNum"> 183 </span><span class="lineCov"> 3 : updateEnquire();</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 3 : return List( m_enq );</span> -<span class="lineNum"> 185 </span> : } -<span class="lineNum"> 186 </span> : -<span class="lineNum"> 187 </span> : std::map< std::string, int > relevantTags( int n = 30 ) { -<span class="lineNum"> 188 </span> : updateEnquire(); -<span class="lineNum"> 189 </span> : std::map< std::string, int > relev; -<span class="lineNum"> 190 </span> : Xapian::RSet rset; -<span class="lineNum"> 191 </span> : Xapian::MSet mset = m_enq.get_mset(0, 100); -<span class="lineNum"> 192 </span> : for ( Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i ) -<span class="lineNum"> 193 </span> : rset.add_document(i); -<span class="lineNum"> 194 </span> : // Get the expanded set, only expanding the query with tag names -<span class="lineNum"> 195 </span> : TagFilter tagf; -<span class="lineNum"> 196 </span> : Xapian::ESet eset = m_enq.get_eset(n, rset, &tagf); -<span class="lineNum"> 197 </span> : for ( Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i ) -<span class="lineNum"> 198 </span> : relev.insert( relev.begin(), -<span class="lineNum"> 199 </span> : std::make_pair( -<span class="lineNum"> 200 </span> : std::string( *i, 2, std::string::npos ), -<span class="lineNum"> 201 </span> : i.get_weight() ) ); -<span class="lineNum"> 202 </span> : return relev; -<span class="lineNum"> 203 </span> : } -<span class="lineNum"> 204 </span> : -<span class="lineNum"> 205 </span><span class="lineCov"> 5 : void addTerms( std::string t, bool partial = false, bool exclude = false ) {</span> -<span class="lineNum"> 206 </span><span class="lineCov"> 5 : Terms &to = exclude ? m_exclude : m_include;</span> -<span class="lineNum"> 207 </span><span class="lineCov"> 5 : std::vector< std::string > tok;</span> -<span class="lineNum"> 208 </span><span class="lineCov"> 5 : tokenizeQuery( t, std::back_inserter( tok ) );</span> -<span class="lineNum"> 209 </span><span class="lineCov"> 5 : if ( partial ) {</span> -<span class="lineNum"> 210 </span><span class="lineNoCov"> 0 : if ( tok.back().size() == 1 ) {</span> -<span class="lineNum"> 211 </span><span class="lineNoCov"> 0 : tok.pop_back();</span> -<span class="lineNum"> 212 </span> : } else { -<span class="lineNum"> 213 </span> : std::copy( -<span class="lineNum"> 214 </span> : m_db->allterms_begin( tok.back() ), -<span class="lineNum"> 215 </span> : m_db->allterms_end( tok.back() ), -<span class="lineNum"> 216 </span><span class="lineNoCov"> 0 : std::back_inserter( tok ) );</span> -<span class="lineNum"> 217 </span> : } -<span class="lineNum"> 218 </span> : } -<span class="lineNum"> 219 </span><span class="lineCov"> 5 : std::copy( tok.begin(), tok.end(), std::inserter( to, to.begin() ) );</span> -<span class="lineNum"> 220 </span><span class="lineCov"> 5 : }</span> -<span class="lineNum"> 221 </span> : -<span class="lineNum"> 222 </span> : void addTerms( const Terms &t, bool exclude = false ) { -<span class="lineNum"> 223 </span> : Terms &to = exclude ? m_exclude : m_include; -<span class="lineNum"> 224 </span> : std::copy( t.begin(), t.end(), std::inserter( to, to.begin() ) ); -<span class="lineNum"> 225 </span> : } -<span class="lineNum"> 226 </span> : -<span class="lineNum"> 227 </span> : }; -<span class="lineNum"> 228 </span> : -<span class="lineNum"> 229 </span> : struct Source -<span class="lineNum"> 230 </span><span class="lineCov"> 4 : {</span> -<span class="lineNum"> 231 </span> : protected: -<span class="lineNum"> 232 </span> : mutable Xapian::Database m_db; -<span class="lineNum"> 233 </span> : Xapian::Stem m_stem; -<span class="lineNum"> 234 </span> : mutable bool m_opened; -<span class="lineNum"> 235 </span> : -<span class="lineNum"> 236 </span> : /// Return a lowercased copy of the string -<span class="lineNum"> 237 </span> : static std::string toLower(const std::string& str); -<span class="lineNum"> 238 </span> : -<span class="lineNum"> 239 </span> : /** -<span class="lineNum"> 240 </span> : * Add normalised tokens computed from the string to the document doc. -<span class="lineNum"> 241 </span> : * -<span class="lineNum"> 242 </span> : * pos is used as a sequence generator for entering the token position in -<span class="lineNum"> 243 </span> : * the document. -<span class="lineNum"> 244 </span> : */ -<span class="lineNum"> 245 </span> : void normalize_and_add(Xapian::Document& doc, const std::string& term, -<span class="lineNum"> 246 </span> : int& pos) const; -<span class="lineNum"> 247 </span> : -<span class="lineNum"> 248 </span> : public: -<span class="lineNum"> 249 </span> : Source(); -<span class="lineNum"> 250 </span> : -<span class="lineNum"> 251 </span> : /// Access the Xapian database -<span class="lineNum"> 252 </span><span class="lineCov"> 9 : Xapian::Database& db() {</span> -<span class="lineNum"> 253 </span><span class="lineCov"> 9 : open();</span> -<span class="lineNum"> 254 </span><span class="lineCov"> 9 : return m_db;</span> -<span class="lineNum"> 255 </span> : } -<span class="lineNum"> 256 </span> : -<span class="lineNum"> 257 </span> : /// Access the Xapian database -<span class="lineNum"> 258 </span><span class="lineNoCov"> 0 : const Xapian::Database& db() const {</span> -<span class="lineNum"> 259 </span><span class="lineNoCov"> 0 : open();</span> -<span class="lineNum"> 260 </span><span class="lineNoCov"> 0 : return m_db;</span> -<span class="lineNum"> 261 </span> : } -<span class="lineNum"> 262 </span> : -<span class="lineNum"> 263 </span> : void open() const; -<span class="lineNum"> 264 </span> : void invalidate() { -<span class="lineNum"> 265 </span> : m_db = Xapian::Database(); -<span class="lineNum"> 266 </span> : m_opened = false; -<span class="lineNum"> 267 </span> : } -<span class="lineNum"> 268 </span> : -<span class="lineNum"> 269 </span> : /// Timestamp of when the Xapian database was last updated -<span class="lineNum"> 270 </span> : time_t timestamp() const; -<span class="lineNum"> 271 </span> : -<span class="lineNum"> 272 </span> : void updateLeniently( AptDatabase &apt, OpProgress *op = 0 ) { -<span class="lineNum"> 273 </span> : if (apt.timestamp() - timestamp() > 86400 * 8) // a little over a week -<span class="lineNum"> 274 </span> : update( op ); -<span class="lineNum"> 275 </span> : } -<span class="lineNum"> 276 </span> : -<span class="lineNum"> 277 </span> : void update( OpProgress *op = 0 ) { -<span class="lineNum"> 278 </span> : if ( !op ) -<span class="lineNum"> 279 </span> : op = new OpProgress(); -<span class="lineNum"> 280 </span> : -<span class="lineNum"> 281 </span> : wibble::exception::AddContext _ctx( "Rebuilding Xapian database." ); -<span class="lineNum"> 282 </span> : int outfd; -<span class="lineNum"> 283 </span> : std::string op_str; -<span class="lineNum"> 284 </span> : -<span class="lineNum"> 285 </span> : wibble::sys::Exec ex( "update-apt-xapian-index" ); -<span class="lineNum"> 286 </span> : ex.args.push_back( "--batch-mode" ); -<span class="lineNum"> 287 </span> : ex.searchInPath = true; -<span class="lineNum"> 288 </span> : ex.forkAndRedirect( 0, &outfd, 0 ); -<span class="lineNum"> 289 </span> : -<span class="lineNum"> 290 </span> : wibble::sys::Pipe monit( outfd ); -<span class="lineNum"> 291 </span> : while ( !monit.eof() ) { -<span class="lineNum"> 292 </span> : std::string line = monit.nextLine(); -<span class="lineNum"> 293 </span> : if ( line.empty() ) { -<span class="lineNum"> 294 </span> : usleep( 100000 ); -<span class="lineNum"> 295 </span> : continue; -<span class="lineNum"> 296 </span> : } -<span class="lineNum"> 297 </span> : std::cerr << "got : " << line << std::endl; -<span class="lineNum"> 298 </span> : if ( wibble::str::startsWith( line, "begin: " ) ) { -<span class="lineNum"> 299 </span> : op_str = std::string( line, 7, std::string::npos ); -<span class="lineNum"> 300 </span> : op->OverallProgress( 0, 100, 100, op_str ); -<span class="lineNum"> 301 </span> : -<span class="lineNum"> 302 </span> : } else if ( wibble::str::startsWith( line, "done: " ) ) { -<span class="lineNum"> 303 </span> : op->Done(); -<span class="lineNum"> 304 </span> : } else if ( wibble::str::startsWith( line, "progress: " ) ) { -<span class="lineNum"> 305 </span> : wibble::ERegexp re( "progress: ([0-9]+)/([0-9]+)", 3 ); -<span class="lineNum"> 306 </span> : if ( re.match( line ) ) { -<span class="lineNum"> 307 </span> : assert_eq( re[2], "100" ); -<span class="lineNum"> 308 </span> : op->OverallProgress( atoi( re[1].c_str() ), 100, 100, op_str ); -<span class="lineNum"> 309 </span> : } -<span class="lineNum"> 310 </span> : } -<span class="lineNum"> 311 </span> : } -<span class="lineNum"> 312 </span> : ex.waitForSuccess(); -<span class="lineNum"> 313 </span> : invalidate(); -<span class="lineNum"> 314 </span> : } -<span class="lineNum"> 315 </span> : -<span class="lineNum"> 316 </span> : /// Returns true if the index has data -<span class="lineNum"> 317 </span> : bool hasData() const { return timestamp() > 0; } -<span class="lineNum"> 318 </span> : -<span class="lineNum"> 319 </span> : Query query( const std::string &s, -<span class="lineNum"> 320 </span> : bool expand = true, -<span class="lineNum"> 321 </span><span class="lineCov"> 5 : int qualityCutoff = 50 )</span> -<span class="lineNum"> 322 </span> : { -<span class="lineNum"> 323 </span><span class="lineCov"> 5 : Query q( db() );</span> -<span class="lineNum"> 324 </span><span class="lineCov"> 5 : q.setQualityCutoff( qualityCutoff );</span> -<span class="lineNum"> 325 </span><span class="lineCov"> 5 : q.setExpand( expand );</span> -<span class="lineNum"> 326 </span><span class="lineCov"> 5 : q.addTerms( s );</span> -<span class="lineNum"> 327 </span><span class="lineNoCov"> 0 : return q;</span> -<span class="lineNum"> 328 </span> : } -<span class="lineNum"> 329 </span> : -<span class="lineNum"> 330 </span> : Query partialQuery( const std::string &s ) { -<span class="lineNum"> 331 </span> : Query q( db() ); -<span class="lineNum"> 332 </span> : q.addTerms( s, true ); // partial -<span class="lineNum"> 333 </span> : return q; -<span class="lineNum"> 334 </span> : } -<span class="lineNum"> 335 </span> : -<span class="lineNum"> 336 </span> : /// Returns true if the index is older than the Apt database information -<span class="lineNum"> 337 </span> : // bool needsRebuild(apt::Apt& apt); -<span class="lineNum"> 338 </span> : -<span class="lineNum"> 339 </span> : Xapian::docid docidByName(const std::string& pkgname) const; -<span class="lineNum"> 340 </span> : -<span class="lineNum"> 341 </span> : /** -<span class="lineNum"> 342 </span> : * Tokenize the string and build an OR query with the resulting keywords -<span class="lineNum"> 343 </span> : */ -<span class="lineNum"> 344 </span> : Xapian::Query makeORQuery(const std::string& keywords) const; -<span class="lineNum"> 345 </span> : -<span class="lineNum"> 346 </span> : /** -<span class="lineNum"> 347 </span> : * Tokenize the string and build an OR query with the resulting keywords. -<span class="lineNum"> 348 </span> : * -<span class="lineNum"> 349 </span> : * The last token in keywords is considered to be typed only partially, to -<span class="lineNum"> 350 </span> : * implement proper search-as-you-type. -<span class="lineNum"> 351 </span> : */ -<span class="lineNum"> 352 </span> : Xapian::Query makePartialORQuery(const std::string& keywords) const; -<span class="lineNum"> 353 </span> : -<span class="lineNum"> 354 </span> : /** -<span class="lineNum"> 355 </span> : * Build a query with the given keywords, specified as iterators of strings -<span class="lineNum"> 356 </span> : */ -<span class="lineNum"> 357 </span> : template<typename ITER> -<span class="lineNum"> 358 </span> : Xapian::Query makeORQuery(const ITER& begin, const ITER& end) const -<span class="lineNum"> 359 </span> : { -<span class="lineNum"> 360 </span> : return Xapian::Query(Xapian::Query::OP_OR, begin, end); -<span class="lineNum"> 361 </span> : } -<span class="lineNum"> 362 </span> : -<span class="lineNum"> 363 </span> : /// Return a list of tag-based terms that can be used to expand an OR query -<span class="lineNum"> 364 </span> : std::vector<std::string> expand(Xapian::Enquire& enq) const; -<span class="lineNum"> 365 </span> : -<span class="lineNum"> 366 </span> : // std::vector<std::string> similar(const std::string& pkg); -<span class="lineNum"> 367 </span> : -<span class="lineNum"> 368 </span> : /** -<span class="lineNum"> 369 </span> : * Create a query to look for packages similar to the given one -<span class="lineNum"> 370 </span> : */ -<span class="lineNum"> 371 </span> : Xapian::Query makeRelatedQuery(const std::string& pkgname) const; -<span class="lineNum"> 372 </span> : -<span class="lineNum"> 373 </span> : /** -<span class="lineNum"> 374 </span> : * Get the integer value for -<span class="lineNum"> 375 </span> : */ -<span class="lineNum"> 376 </span> : double getDoubleValue(const std::string& pkgname, -<span class="lineNum"> 377 </span> : Xapian::valueno val_id) const; -<span class="lineNum"> 378 </span> : -<span class="lineNum"> 379 </span> : /** -<span class="lineNum"> 380 </span> : * Get the integer value for -<span class="lineNum"> 381 </span> : */ -<span class="lineNum"> 382 </span> : int getIntValue(const std::string& pkgname, Xapian::valueno val_id) const; -<span class="lineNum"> 383 </span> : }; -<span class="lineNum"> 384 </span> : -<span class="lineNum"> 385 </span> : } -<span class="lineNum"> 386 </span> : } -<span class="lineNum"> 387 </span> : } -<span class="lineNum"> 388 </span> : -<span class="lineNum"> 389 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/core/xapian.test.h.gcov.html b/rep/ept/core/xapian.test.h.gcov.html deleted file mode 100644 index 17fc9dd..0000000 --- a/rep/ept/core/xapian.test.h.gcov.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/core/xapian.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/core</a> - xapian.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">36</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%">36</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <ept/test.h> -<span class="lineNum"> 3 </span> : #include <ept/core/list.h> -<span class="lineNum"> 4 </span> : #include <ept/core/xapian.h> -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : // TODO temporary, for building test database -<span class="lineNum"> 7 </span> : #include <ept/apt/apt.h> -<span class="lineNum"> 8 </span> : #include <ept/textsearch/textsearch.h> -<span class="lineNum"> 9 </span> : #include <ept/textsearch/maint/path.h> -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : using namespace ept; -<span class="lineNum"> 12 </span> : using namespace core; -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span> : namespace ept { -<span class="lineNum"> 15 </span> : namespace textsearch { -<span class="lineNum"> 16 </span> : extern size_t max_index; -<span class="lineNum"> 17 </span> : } -<span class="lineNum"> 18 </span> : } -<span class="lineNum"> 19 </span> : -<span class="lineNum"> 20 </span><span class="lineCov"> 4 : struct XapianTestEnvironment : AptTestEnvironment {</span> -<span class="lineNum"> 21 </span> : textsearch::Path::OverrideIndexDir oid; -<span class="lineNum"> 22 </span> : textsearch::TextSearch textsearch; -<span class="lineNum"> 23 </span> : apt::Apt apt; -<span class="lineNum"> 24 </span><span class="lineCov"> 4 : XapianTestEnvironment()</span> -<span class="lineNum"> 25 </span><span class="lineCov"> 4 : : oid( TEST_ENV_DIR "xapian" )</span> -<span class="lineNum"> 26 </span> : { -<span class="lineNum"> 27 </span><span class="lineCov"> 4 : ept::textsearch::max_index = 1000;</span> -<span class="lineNum"> 28 </span><span class="lineCov"> 4 : textsearch.rebuildIfNeeded(apt);</span> -<span class="lineNum"> 29 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 30 </span> : }; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span><span class="lineCov"> 4 : struct TestXapian : XapianTestEnvironment {</span> -<span class="lineNum"> 33 </span> : xapian::Source xap; -<span class="lineNum"> 34 </span> : xapian::Query query; -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 4 : TestXapian() : query( xap.db() )</span> -<span class="lineNum"> 37 </span> : { -<span class="lineNum"> 38 </span><span class="lineCov"> 4 : query = xap.query( "sgml tool" );</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 4 : }</span> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 1 : Test enquire() {</span> -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : query.updateEnquire();</span> -<span class="lineNum"> 43 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 100);</span> -<span class="lineNum"> 44 </span><span class="lineCov"> 1 : assert( matches.size() > 0 );</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 2 : assert_eq( matches.begin().get_document().get_data(), "psgml" );</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : Test listCount() {</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : xapian::List l( query.results() );</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 6000);</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : assert_eq( list::count( l ), matches.size() );</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span> : template< typename List > -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : void checkXapianList( List l, Xapian::MSet m ) {</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1 : Xapian::MSet::const_iterator i = m.begin();</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 16 : while (! l.empty() ) {</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 14 : assert_eq( l.token().package(), i.get_document().get_data() );</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 14 : l = l.tail();</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 15 : ++ i;</span> -<span class="lineNum"> 61 </span> : } -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 63 </span> : -<span class="lineNum"> 64 </span><span class="lineCov"> 1 : Test list() {</span> -<span class="lineNum"> 65 </span><span class="lineCov"> 1 : xapian::List l( query.results() );</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 1 : Xapian::MSet matches = query.m_enq.get_mset(0, 6000);</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : checkXapianList( l, matches );</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 69 </span> : -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test checkQuery() {</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 1 : assert_eq( xap.query( "sgml tool" ).results().token().package(), "psgml" );</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : }; -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/debtags/debtags.cc.gcov.html b/rep/ept/debtags/debtags.cc.gcov.html deleted file mode 100644 index a924a43..0000000 --- a/rep/ept/debtags/debtags.cc.gcov.html +++ /dev/null @@ -1,317 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/debtags/debtags.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current 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> diff --git a/rep/ept/index.html b/rep/ept/index.html deleted file mode 100644 index bbf0716..0000000 --- a/rep/ept/index.html +++ /dev/null @@ -1,110 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept</title> - <link rel="stylesheet" type="text/css" href="../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - ept</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">38</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">73.7 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">28</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="progresscallback.cpp.gcov.html">progresscallback.cpp</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../snow.png" width=100 height=10 alt="0.0%"></td></tr></table> - </td> - <td class="coverPerLo">0.0 %</td> - <td class="coverNumLo">0 / 4 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="progresscallback.h.gcov.html">progresscallback.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../snow.png" width=100 height=10 alt="0.0%"></td></tr></table> - </td> - <td class="coverPerLo">0.0 %</td> - <td class="coverNumLo">0 / 3 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="test.h.gcov.html">test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">15 / 15 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="token.h.gcov.html">token.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../emerald.png" width=81 height=10 alt="81.2%"><img src="../snow.png" width=19 height=10 alt="81.2%"></td></tr></table> - </td> - <td class="coverPerHi">81.2 %</td> - <td class="coverNumHi">13 / 16 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/index.html b/rep/ept/popcon/index.html deleted file mode 100644 index d87cf3d..0000000 --- a/rep/ept/popcon/index.html +++ /dev/null @@ -1,128 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/popcon</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">161</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">83.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">134</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="local.cc.gcov.html">local.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=62 height=10 alt="62.1%"><img src="../../snow.png" width=38 height=10 alt="62.1%"></td></tr></table> - </td> - <td class="coverPerHi">62.1 %</td> - <td class="coverNumHi">41 / 66 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="local.h.gcov.html">local.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">1 / 1 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="local.test.h.gcov.html">local.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">8 / 8 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="popcon.cc.gcov.html">popcon.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="95.7%"><img src="../../snow.png" width=4 height=10 alt="95.7%"></td></tr></table> - </td> - <td class="coverPerHi">95.7 %</td> - <td class="coverNumHi">22 / 23 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="popcon.h.gcov.html">popcon.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="96.0%"><img src="../../snow.png" width=4 height=10 alt="96.0%"></td></tr></table> - </td> - <td class="coverPerHi">96.0 %</td> - <td class="coverNumHi">24 / 25 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="popcon.test.h.gcov.html">popcon.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">38 / 38 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/local.cc.gcov.html b/rep/ept/popcon/local.cc.gcov.html deleted file mode 100644 index e6b44b8..0000000 --- a/rep/ept/popcon/local.cc.gcov.html +++ /dev/null @@ -1,235 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/local.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">66</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">62.1 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">41</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** @file -<span class="lineNum"> 2 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 3 </span> : * Correlate popcon data with local popcon information -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * Copyright (C) 2007 Enrico Zini <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 <ept/popcon/local.h> -<span class="lineNum"> 25 </span> : #include <ept/popcon/popcon.h> -<span class="lineNum"> 26 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <wibble/exception.h> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : #include <algorithm> -<span class="lineNum"> 31 </span> : #include <fstream> -<span class="lineNum"> 32 </span> : #include <cmath> -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : //#include <iostream> -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : using namespace std; -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : namespace ept { -<span class="lineNum"> 39 </span> : namespace popcon { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : // Split a string where there are separators -<span class="lineNum"> 42 </span><span class="lineCov"> 1903 : static vector<string> split(const std::string& str, char sep = ' ')</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span><span class="lineCov"> 1903 : vector<string> res;</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 1903 : size_t start = 0;</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 10435 : while (start < str.size())</span> -<span class="lineNum"> 47 </span> : { -<span class="lineNum"> 48 </span><span class="lineCov"> 8531 : size_t end = str.find(sep, start);</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 8531 : if (end == string::npos)</span> -<span class="lineNum"> 50 </span> : { -<span class="lineNum"> 51 </span><span class="lineCov"> 1902 : res.push_back(str.substr(start));</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 1902 : break;</span> -<span class="lineNum"> 53 </span> : } -<span class="lineNum"> 54 </span> : else -<span class="lineNum"> 55 </span> : { -<span class="lineNum"> 56 </span><span class="lineCov"> 6629 : res.push_back(str.substr(start, end-start));</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 6629 : start = end + 1;</span> -<span class="lineNum"> 58 </span> : } -<span class="lineNum"> 59 </span> : } -<span class="lineNum"> 60 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 61 </span> : } -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : // Reverse sort pairs by comparing their second element -<span class="lineNum"> 64 </span> : struct secondsort -<span class="lineNum"> 65 </span> : { -<span class="lineNum"> 66 </span><span class="lineNoCov"> 0 : bool operator()(const pair<string, float>& a, const pair<string, float>& b) const</span> -<span class="lineNum"> 67 </span> : { -<span class="lineNum"> 68 </span><span class="lineNoCov"> 0 : if (a.second == b.second)</span> -<span class="lineNum"> 69 </span><span class="lineNoCov"> 0 : return a.first > b.first;</span> -<span class="lineNum"> 70 </span> : else -<span class="lineNum"> 71 </span><span class="lineNoCov"> 0 : return a.second > b.second;</span> -<span class="lineNum"> 72 </span> : } -<span class="lineNum"> 73 </span> : }; -<span class="lineNum"> 74 </span> : -<span class="lineNum"> 75 </span><span class="lineCov"> 1 : Local::Local(const std::string& file)</span> -<span class="lineNum"> 76 </span> : { -<span class="lineNum"> 77 </span><span class="lineCov"> 1 : m_timestamp = Path::timestamp(file);</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : if (m_timestamp == 0)</span> -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : return;</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : ifstream in;</span> -<span class="lineNum"> 82 </span><span class="lineCov"> 1 : in.open(file.c_str());</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 1 : if (!in.good())</span> -<span class="lineNum"> 84 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(file, "opening file for reading");</span> -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span><span class="lineCov"> 1907 : while (!in.eof())</span> -<span class="lineNum"> 87 </span> : { -<span class="lineNum"> 88 </span><span class="lineCov"> 1905 : std::string line;</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 1905 : getline(in, line);</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 1905 : if (line.substr(0, 10) == "POPULARITY")</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 3 : continue;</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1904 : if (line.substr(0, 14) == "END-POPULARITY")</span> -<span class="lineNum"> 93 </span> : continue; -<span class="lineNum"> 94 </span><span class="lineCov"> 1903 : vector<string> data = split(line);</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 1903 : if (data.size() < 4)</span> -<span class="lineNum"> 96 </span> : continue; -<span class="lineNum"> 97 </span><span class="lineCov"> 1902 : if (data[3] == "<NOFILES>")</span> -<span class="lineNum"> 98 </span> : // This is an empty / virtual package -<span class="lineNum"> 99 </span><span class="lineCov"> 979 : m_scores.insert(make_pair(data[2], 0.1));</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 923 : else if (data.size() == 4)</span> -<span class="lineNum"> 101 </span> : // Package normally in use -<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : m_scores.insert(make_pair(data[2], 1.0));</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 923 : else if (data[4] == "<OLD>")</span> -<span class="lineNum"> 104 </span> : // Unused packages -<span class="lineNum"> 105 </span><span class="lineCov"> 745 : m_scores.insert(make_pair(data[2], 0.3));</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 178 : else if (data[4] == "<RECENT-CTIME>")</span> -<span class="lineNum"> 107 </span> : // Recently installed packages -<span class="lineNum"> 108 </span><span class="lineCov"> 178 : m_scores.insert(make_pair(data[2], 0.5));</span> -<span class="lineNum"> 109 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 2 : float Local::score(const std::string& pkg) const</span> -<span class="lineNum"> 113 </span> : { -<span class="lineNum"> 114 </span><span class="lineCov"> 2 : std::map<std::string, float>::const_iterator i = m_scores.find(pkg);</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 2 : if (i == m_scores.end())</span> -<span class="lineNum"> 116 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 117 </span> : else -<span class="lineNum"> 118 </span><span class="lineCov"> 2 : return i->second;</span> -<span class="lineNum"> 119 </span> : } -<span class="lineNum"> 120 </span> : -<span class="lineNum"> 121 </span> : /** -<span class="lineNum"> 122 </span> : * Return the TFIDF score of the package computed against the popcon -<span class="lineNum"> 123 </span> : * information. -<span class="lineNum"> 124 </span> : */ -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : float Local::tfidf(const Popcon& popcon, const std::string& pkg) const</span> -<span class="lineNum"> 126 </span> : { -<span class="lineNum"> 127 </span><span class="lineCov"> 1 : float popconScore = popcon.score(pkg);</span> -<span class="lineNum"> 128 </span> : //cerr << pkg << ": " << score(pkg) << " * log(" << (float)popcon.submissions() << " / " << popconScore << ") = " << score(pkg) * log((float)popcon.submissions() / popconScore) << endl; -<span class="lineNum"> 129 </span><span class="lineCov"> 1 : if (popconScore == 0)</span> -<span class="lineNum"> 130 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 131 </span> : else -<span class="lineNum"> 132 </span><span class="lineCov"> 1 : return score(pkg) * log((float)popcon.submissions() / popconScore);</span> -<span class="lineNum"> 133 </span> : -<span class="lineNum"> 134 </span> : } -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span><span class="lineNoCov"> 0 : std::vector< std::pair<std::string, float> > Local::scores() const</span> -<span class="lineNum"> 137 </span> : { -<span class="lineNum"> 138 </span><span class="lineNoCov"> 0 : vector< pair<string, float> > res;</span> -<span class="lineNum"> 139 </span> : // Copy the scores in res -<span class="lineNum"> 140 </span><span class="lineNoCov"> 0 : copy(m_scores.begin(), m_scores.end(), back_inserter(res));</span> -<span class="lineNum"> 141 </span> : // Sort res by score -<span class="lineNum"> 142 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span> -<span class="lineNum"> 143 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 144 </span> : } -<span class="lineNum"> 145 </span> : -<span class="lineNum"> 146 </span><span class="lineNoCov"> 0 : std::vector< std::pair<std::string, float> > Local::tfidf(const Popcon& popcon) const</span> -<span class="lineNum"> 147 </span> : { -<span class="lineNum"> 148 </span><span class="lineNoCov"> 0 : vector< pair<string, float> > res;</span> -<span class="lineNum"> 149 </span> : // Compute the tfidf scores and store them into res -<span class="lineNum"> 150 </span><span class="lineNoCov"> 0 : for (std::map<std::string, float>::const_iterator i = m_scores.begin();</span> -<span class="lineNum"> 151 </span> : i != m_scores.end(); ++i) -<span class="lineNum"> 152 </span> : { -<span class="lineNum"> 153 </span><span class="lineNoCov"> 0 : float popconScore = popcon.score(i->first);</span> -<span class="lineNum"> 154 </span><span class="lineNoCov"> 0 : if (popconScore == 0)</span> -<span class="lineNum"> 155 </span><span class="lineNoCov"> 0 : res.push_back(make_pair(i->first, 0.0f));</span> -<span class="lineNum"> 156 </span> : else -<span class="lineNum"> 157 </span> : res.push_back(make_pair(i->first, -<span class="lineNum"> 158 </span><span class="lineNoCov"> 0 : i->second * log((float)popcon.submissions() / popconScore)));</span> -<span class="lineNum"> 159 </span> : } -<span class="lineNum"> 160 </span> : // Sort res by score -<span class="lineNum"> 161 </span><span class="lineNoCov"> 0 : sort(res.begin(), res.end(), secondsort());</span> -<span class="lineNum"> 162 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 163 </span> : } -<span class="lineNum"> 164 </span> : -<span class="lineNum"> 165 </span> : } -<span class="lineNum"> 166 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 167 </span> : -<span class="lineNum"> 168 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/local.h.gcov.html b/rep/ept/popcon/local.h.gcov.html deleted file mode 100644 index a8cb45d..0000000 --- a/rep/ept/popcon/local.h.gcov.html +++ /dev/null @@ -1,154 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/local.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">1</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%">1</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #ifndef EPT_POPCON_LOCAL_H -<span class="lineNum"> 2 </span> : #define EPT_POPCON_LOCAL_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Correlate popcon data with local popcon information -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini <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 <string> -<span class="lineNum"> 28 </span> : #include <vector> -<span class="lineNum"> 29 </span> : #include <map> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : namespace ept { -<span class="lineNum"> 32 </span> : namespace popcon { -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : class Popcon; -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : /** -<span class="lineNum"> 37 </span> : * Access the results of the local daily popcon scan. -<span class="lineNum"> 38 </span> : */ -<span class="lineNum"> 39 </span> : class Local -<span class="lineNum"> 40 </span><span class="lineCov"> 1 : {</span> -<span class="lineNum"> 41 </span> : protected: -<span class="lineNum"> 42 </span> : std::map<std::string, float> m_scores; -<span class="lineNum"> 43 </span> : time_t m_timestamp; -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span> : public: -<span class="lineNum"> 46 </span> : Local(const std::string& file = std::string("/var/log/popularity-contest")); -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : /// Get the timestamp of the local popcon information -<span class="lineNum"> 49 </span> : time_t timestamp() const { return m_timestamp; } -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : /// Return true if this data source has data, false if it's empty -<span class="lineNum"> 52 </span> : bool hasData() const { return m_timestamp != 0; } -<span class="lineNum"> 53 </span> : -<span class="lineNum"> 54 </span> : /** -<span class="lineNum"> 55 </span> : * Return the local score of the package -<span class="lineNum"> 56 </span> : */ -<span class="lineNum"> 57 </span> : float score(const std::string& pkg) const; -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span> : /** -<span class="lineNum"> 60 </span> : * Return the TFIDF score of the package computed against the popcon -<span class="lineNum"> 61 </span> : * information. -<span class="lineNum"> 62 </span> : * -<span class="lineNum"> 63 </span> : * The TFIDF score is high when a package is representative of this system, -<span class="lineNum"> 64 </span> : * that is, it is used in this system and not much used in other systems. -<span class="lineNum"> 65 </span> : */ -<span class="lineNum"> 66 </span> : float tfidf(const Popcon& popcon, const std::string& pkg) const; -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span> : /** -<span class="lineNum"> 69 </span> : * Read the local popcon vote and return the list of packages and their -<span class="lineNum"> 70 </span> : * local scores, sorted by ascending score. -<span class="lineNum"> 71 </span> : */ -<span class="lineNum"> 72 </span> : std::vector< std::pair<std::string, float> > scores() const; -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : /** -<span class="lineNum"> 75 </span> : * Read the local popcon vote and return the list of packages and their -<span class="lineNum"> 76 </span> : * TFIDF scores computed against the popcon information. -<span class="lineNum"> 77 </span> : * -<span class="lineNum"> 78 </span> : * The packages will be sorted by ascending score. -<span class="lineNum"> 79 </span> : */ -<span class="lineNum"> 80 </span> : std::vector< std::pair<std::string, float> > tfidf(const Popcon& popcon) const; -<span class="lineNum"> 81 </span> : }; -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : } -<span class="lineNum"> 85 </span> : -<span class="lineNum"> 86 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 87 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/local.test.h.gcov.html b/rep/ept/popcon/local.test.h.gcov.html deleted file mode 100644 index 05ce32e..0000000 --- a/rep/ept/popcon/local.test.h.gcov.html +++ /dev/null @@ -1,178 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/local.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - local.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">8</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%">8</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /* -<span class="lineNum"> 3 </span> : * popcon/local test -<span class="lineNum"> 4 </span> : * -<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini <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/popcon/local.h> -<span class="lineNum"> 23 </span> : #include <ept/popcon/popcon.h> -<span class="lineNum"> 24 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : #include <ept/test.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : using namespace std; -<span class="lineNum"> 29 </span> : using namespace ept; -<span class="lineNum"> 30 </span> : using namespace ept::popcon; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : struct TestPopconLocal -<span class="lineNum"> 33 </span><span class="lineCov"> 1 : {</span> -<span class="lineNum"> 34 </span> : Path::OverridePopconSourceDir odsd; -<span class="lineNum"> 35 </span> : Path::OverridePopconIndexDir odid; -<span class="lineNum"> 36 </span> : Path::OverridePopconUserSourceDir odusd; -<span class="lineNum"> 37 </span> : Path::OverridePopconUserIndexDir oduid; -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : Popcon popcon; -<span class="lineNum"> 40 </span> : Local local; -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : TestPopconLocal()</span> -<span class="lineNum"> 43 </span> : : odsd( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 44 </span> : odid( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 45 </span> : odusd( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 46 </span> : oduid( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : local( TEST_ENV_DIR "popcon/popularity-contest" )</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : {}</span> -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : // Very basic access -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert(local.score("apt") > 0);</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(local.tfidf(popcon, "apt") > 0);</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : #if 0 // mornfall: apparently left out by enrico, leaving as it is -<span class="lineNum"> 58 </span> : // Check that every valid index is accessible -<span class="lineNum"> 59 </span> : template<> template<> -<span class="lineNum"> 60 </span> : void to::test< 2 >() -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span> : for (size_t i = 0; i < popcon.size(); ++i) -<span class="lineNum"> 63 </span> : { -<span class="lineNum"> 64 </span> : //cerr << popcon.name(i) << " " << popcon.score(i) << endl; -<span class="lineNum"> 65 </span> : assert(popcon.score(i) > 0); -<span class="lineNum"> 66 </span> : } -<span class="lineNum"> 67 </span> : } -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span> : // Check that we can get a score for every package -<span class="lineNum"> 70 </span> : template<> template<> -<span class="lineNum"> 71 </span> : void to::test< 3 >() -<span class="lineNum"> 72 </span> : { -<span class="lineNum"> 73 </span> : int has = 0; -<span class="lineNum"> 74 </span> : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i) -<span class="lineNum"> 75 </span> : { -<span class="lineNum"> 76 </span> : float score = popcon.score(*i); -<span class="lineNum"> 77 </span> : if (score > 0) -<span class="lineNum"> 78 </span> : ++has; -<span class="lineNum"> 79 </span> : } -<span class="lineNum"> 80 </span> : // At least 1000 packages should have a score -<span class="lineNum"> 81 </span> : assert(has > 1000); -<span class="lineNum"> 82 </span> : } -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : // Check that scores are meaningful -<span class="lineNum"> 85 </span> : template<> template<> -<span class="lineNum"> 86 </span> : void to::test< 4 >() -<span class="lineNum"> 87 </span> : { -<span class="lineNum"> 88 </span> : assert(popcon["apt"] > popcon["libapt-pkg-dev"]); -<span class="lineNum"> 89 </span> : } -<span class="lineNum"> 90 </span> : -<span class="lineNum"> 91 </span> : // If there is no data, Popcon should work as if all scores were 0 -<span class="lineNum"> 92 </span> : template<> template<> -<span class="lineNum"> 93 </span> : void to::test<5>() -<span class="lineNum"> 94 </span> : { -<span class="lineNum"> 95 </span> : Path::OverridePopconSourceDir odsd("./empty"); -<span class="lineNum"> 96 </span> : Path::OverridePopconIndexDir odid("./empty"); -<span class="lineNum"> 97 </span> : Path::OverridePopconUserSourceDir odusd("./empty"); -<span class="lineNum"> 98 </span> : Path::OverridePopconUserIndexDir oduid("./empty"); -<span class="lineNum"> 99 </span> : Popcon empty; -<span class="lineNum"> 100 </span> : -<span class="lineNum"> 101 </span> : assert_eq(empty.timestamp(), 0); -<span class="lineNum"> 102 </span> : assert(!empty.hasData()); -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span> : assert(empty.size() == 0); -<span class="lineNum"> 105 </span> : assert(empty.score("apt") == 0.0); -<span class="lineNum"> 106 </span> : } -<span class="lineNum"> 107 </span> : #endif -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : }; -<span class="lineNum"> 110 </span> : -<span class="lineNum"> 111 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/index.html b/rep/ept/popcon/maint/index.html deleted file mode 100644 index f507903..0000000 --- a/rep/ept/popcon/maint/index.html +++ /dev/null @@ -1,128 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/popcon/maint</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">258</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">88.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">228</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=98 height=10 alt="97.6%"><img src="../../../snow.png" width=2 height=10 alt="97.6%"></td></tr></table> - </td> - <td class="coverPerHi">97.6 %</td> - <td class="coverNumHi">41 / 42 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="popconindexer.cc.gcov.html">popconindexer.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=79 height=10 alt="79.3%"><img src="../../../snow.png" width=21 height=10 alt="79.3%"></td></tr></table> - </td> - <td class="coverPerHi">79.3 %</td> - <td class="coverNumHi">92 / 116 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="popconindexer.h.gcov.html">popconindexer.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=100 height=10 alt="100.0%"></td></tr></table> - </td> - <td class="coverPerHi">100.0 %</td> - <td class="coverNumHi">5 / 5 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="sourcedir.cc.gcov.html">sourcedir.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=93 height=10 alt="93.4%"><img src="../../../snow.png" width=7 height=10 alt="93.4%"></td></tr></table> - </td> - <td class="coverPerHi">93.4 %</td> - <td class="coverNumHi">71 / 76 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">2 / 2 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/path.cc.gcov.html b/rep/ept/popcon/maint/path.cc.gcov.html deleted file mode 100644 index b332e8d..0000000 --- a/rep/ept/popcon/maint/path.cc.gcov.html +++ /dev/null @@ -1,182 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/path.cc</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">42</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">97.6 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">41</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : /** \file -<span class="lineNum"> 4 </span> : * popcon paths -<span class="lineNum"> 5 </span> : */ -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : /* -<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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/config.h> -<span class="lineNum"> 26 </span> : #include <ept/popcon/maint/path.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 popcon { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 2 : static std::string userdir()</span> -<span class="lineNum"> 42 </span> : { -<span class="lineNum"> 43 </span><span class="lineCov"> 2 : std::string rcdir;</span> -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 2 : struct passwd* udata = getpwuid(getuid());</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 2 : rcdir = str::joinpath(udata->pw_dir, ".popcon");</span> -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : return rcdir;</span> -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span> : -<span class="lineNum"> 52 </span><span class="lineCov"> 178 : Path &Path::instance() {</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 178 : if (!s_instance) {</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 1 : s_instance = new Path;</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : instance().m_popconSourceDir = POPCON_DB_DIR;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 1 : instance().m_popconIndexDir = POPCON_DB_DIR;</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 2 : instance().m_popconUserSourceDir = userdir();</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 2 : instance().m_popconUserIndexDir = userdir();</span> -<span class="lineNum"> 59 </span> : } -<span class="lineNum"> 60 </span><span class="lineCov"> 178 : return *s_instance;</span> -<span class="lineNum"> 61 </span> : } -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span><span class="lineCov"> 2 : int Path::access( const std::string &s, int m ) {</span> -<span class="lineNum"> 64 </span><span class="lineCov"> 2 : return ::access( s.c_str(), m );</span> -<span class="lineNum"> 65 </span> : } -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineCov"> 49 : time_t Path::timestamp( const std::string& file ) {</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 49 : std::auto_ptr<struct stat> st = wibble::sys::fs::stat(file);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 90 : 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"> 14 : void Path::setPopconSourceDir( const std::string &s )</span> -<span class="lineNum"> 73 </span> : { -<span class="lineNum"> 74 </span><span class="lineCov"> 14 : instance().m_popconSourceDir = s;</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 14 : }</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 14 : void Path::setPopconIndexDir( const std::string &s )</span> -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span><span class="lineCov"> 14 : instance().m_popconIndexDir = s;</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 14 : }</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 14 : void Path::setPopconUserSourceDir( const std::string &s )</span> -<span class="lineNum"> 81 </span> : { -<span class="lineNum"> 82 </span><span class="lineCov"> 14 : instance().m_popconUserSourceDir = s;</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 14 : }</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 14 : void Path::setPopconUserIndexDir( const std::string &s )</span> -<span class="lineNum"> 85 </span> : { -<span class="lineNum"> 86 </span><span class="lineCov"> 14 : instance().m_popconUserIndexDir = s;</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 14 : }</span> -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span><span class="lineCov"> 14 : std::string Path::popconSourceDir() { return instance().m_popconSourceDir; }</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 43 : std::string Path::popconIndexDir() { return instance().m_popconIndexDir; }</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 14 : std::string Path::popconUserSourceDir() { return instance().m_popconUserSourceDir; }</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 47 : std::string Path::popconUserIndexDir() { return instance().m_popconUserIndexDir; }</span> -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span><span class="lineCov"> 17 : std::string Path::scores() {</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), "scores");</span> -<span class="lineNum"> 96 </span> : } -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span><span class="lineCov"> 17 : std::string Path::scoresIndex() {</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 17 : return str::joinpath(popconIndexDir(), "scores.idx");</span> -<span class="lineNum"> 100 </span> : } -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span><span class="lineCov"> 20 : std::string Path::userScores() {</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), "scores");</span> -<span class="lineNum"> 104 </span> : } -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span><span class="lineCov"> 20 : std::string Path::userScoresIndex() {</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 20 : return str::joinpath(popconUserIndexDir(), "scores.idx");</span> -<span class="lineNum"> 108 </span> : } -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span> : Path *Path::s_instance = 0; -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span> : } -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/path.h.gcov.html b/rep/ept/popcon/maint/path.h.gcov.html deleted file mode 100644 index 557613c..0000000 --- a/rep/ept/popcon/maint/path.h.gcov.html +++ /dev/null @@ -1,194 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/path.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - path.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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> : * popcon paths -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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> : #ifndef EPT_POPCON_PATH_H -<span class="lineNum"> 25 </span> : #define EPT_POPCON_PATH_H -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : #include <string> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : struct stat; -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : namespace ept { -<span class="lineNum"> 32 </span> : namespace popcon { -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : /** -<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Popcon paths -<span class="lineNum"> 36 </span> : */ -<span class="lineNum"> 37 </span> : class Path -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span> -<span class="lineNum"> 39 </span> : public: -<span class="lineNum"> 40 </span> : static std::string scores(); -<span class="lineNum"> 41 </span> : static std::string scoresIndex(); -<span class="lineNum"> 42 </span> : static std::string userScores(); -<span class="lineNum"> 43 </span> : static std::string userScoresIndex(); -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span> : static std::string popconSourceDir(); -<span class="lineNum"> 46 </span> : static std::string popconIndexDir(); -<span class="lineNum"> 47 </span> : static std::string popconUserSourceDir(); -<span class="lineNum"> 48 </span> : static std::string popconUserIndexDir(); -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : // Directory where Popcon source data is found -<span class="lineNum"> 51 </span> : static void setPopconSourceDir( const std::string &s ); -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : // Directory where Popcon indexes are kept -<span class="lineNum"> 54 </span> : static void setPopconIndexDir( const std::string &s ); -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span> : // User-specific directory for Popcon source data -<span class="lineNum"> 57 </span> : static void setPopconUserSourceDir( const std::string &s ); -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span> : // User-specific directory for Popcon index data -<span class="lineNum"> 60 </span> : static void setPopconUserIndexDir( const std::string &s ); -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : static int access( const std::string &, int ); -<span class="lineNum"> 63 </span> : static time_t timestamp( const std::string& ); -<span class="lineNum"> 64 </span> : -<span class="lineNum"> 65 </span> : // RAII-style classes to temporarily override directories -<span class="lineNum"> 66 </span> : class OverridePopconSourceDir -<span class="lineNum"> 67 </span> : { -<span class="lineNum"> 68 </span> : std::string old; -<span class="lineNum"> 69 </span> : public: -<span class="lineNum"> 70 </span><span class="lineCov"> 7 : OverridePopconSourceDir(const std::string& path) : old(Path::popconSourceDir())</span> -<span class="lineNum"> 71 </span> : { -<span class="lineNum"> 72 </span><span class="lineCov"> 7 : Path::setPopconSourceDir(path);</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 7 : ~OverridePopconSourceDir() { Path::setPopconSourceDir(old); }</span> -<span class="lineNum"> 75 </span> : }; -<span class="lineNum"> 76 </span> : class OverridePopconIndexDir -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span> : std::string old; -<span class="lineNum"> 79 </span> : public: -<span class="lineNum"> 80 </span><span class="lineCov"> 7 : OverridePopconIndexDir(const std::string& path) : old(Path::popconIndexDir())</span> -<span class="lineNum"> 81 </span> : { -<span class="lineNum"> 82 </span><span class="lineCov"> 7 : Path::setPopconIndexDir(path);</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 7 : ~OverridePopconIndexDir() { Path::setPopconIndexDir(old); }</span> -<span class="lineNum"> 85 </span> : }; -<span class="lineNum"> 86 </span> : class OverridePopconUserSourceDir -<span class="lineNum"> 87 </span> : { -<span class="lineNum"> 88 </span> : std::string old; -<span class="lineNum"> 89 </span> : public: -<span class="lineNum"> 90 </span><span class="lineCov"> 7 : OverridePopconUserSourceDir(const std::string& path) : old(Path::popconUserSourceDir())</span> -<span class="lineNum"> 91 </span> : { -<span class="lineNum"> 92 </span><span class="lineCov"> 7 : Path::setPopconUserSourceDir(path);</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 7 : ~OverridePopconUserSourceDir() { Path::setPopconUserSourceDir(old); }</span> -<span class="lineNum"> 95 </span> : }; -<span class="lineNum"> 96 </span> : class OverridePopconUserIndexDir -<span class="lineNum"> 97 </span> : { -<span class="lineNum"> 98 </span> : std::string old; -<span class="lineNum"> 99 </span> : public: -<span class="lineNum"> 100 </span><span class="lineCov"> 7 : OverridePopconUserIndexDir(const std::string& path) : old(Path::popconUserIndexDir())</span> -<span class="lineNum"> 101 </span> : { -<span class="lineNum"> 102 </span><span class="lineCov"> 7 : Path::setPopconUserIndexDir(path);</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 104 </span><span class="lineCov"> 7 : ~OverridePopconUserIndexDir() { Path::setPopconUserIndexDir(old); }</span> -<span class="lineNum"> 105 </span> : }; -<span class="lineNum"> 106 </span> : protected: -<span class="lineNum"> 107 </span> : static Path *s_instance; -<span class="lineNum"> 108 </span> : static Path &instance(); -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span> : // Directory where Popcon source data is found -<span class="lineNum"> 111 </span> : std::string m_popconSourceDir; -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span> : // Directory where Popcon indexes are kept -<span class="lineNum"> 114 </span> : std::string m_popconIndexDir; -<span class="lineNum"> 115 </span> : -<span class="lineNum"> 116 </span> : // User-specific directory for Popcon source data -<span class="lineNum"> 117 </span> : std::string m_popconUserSourceDir; -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span> : // User-specific directory for Popcon index data -<span class="lineNum"> 120 </span> : std::string m_popconUserIndexDir; -<span class="lineNum"> 121 </span> : }; -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : } -<span class="lineNum"> 124 </span> : } -<span class="lineNum"> 125 </span> : -<span class="lineNum"> 126 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 127 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/popconindexer.cc.gcov.html b/rep/ept/popcon/maint/popconindexer.cc.gcov.html deleted file mode 100644 index 28d6298..0000000 --- a/rep/ept/popcon/maint/popconindexer.cc.gcov.html +++ /dev/null @@ -1,314 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/popconindexer.cc</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">116</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">79.3 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">92</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #include <ept/popcon/popcon.h> -<span class="lineNum"> 2 </span> : #include <ept/popcon/maint/popconindexer.h> -<span class="lineNum"> 3 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #include <wibble/exception.h> -<span class="lineNum"> 6 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : #include <tagcoll/diskindex/mmap.h> -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span> : #include <set> -<span class="lineNum"> 11 </span> : #include <string> -<span class="lineNum"> 12 </span> : #include <cstdio> -<span class="lineNum"> 13 </span> : #include <cstring> -<span class="lineNum"> 14 </span> : -<span class="lineNum"> 15 </span> : using namespace std; -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span> : namespace ept { -<span class="lineNum"> 18 </span> : namespace popcon { -<span class="lineNum"> 19 </span> : -<span class="lineNum"> 20 </span> : template<typename STRUCT> -<span class="lineNum"> 21 </span> : struct StructIndexer : public tagcoll::diskindex::MMapIndexer -<span class="lineNum"> 22 </span><span class="lineCov"> 1 : {</span> -<span class="lineNum"> 23 </span> : const STRUCT& data; -<span class="lineNum"> 24 </span><span class="lineCov"> 1 : StructIndexer(const STRUCT& data) : data(data) {}</span> -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span><span class="lineCov"> 1 : int encodedSize() const { return sizeof(STRUCT); }</span> -<span class="lineNum"> 27 </span><span class="lineCov"> 1 : void encode(char* buf) const { *(STRUCT*)buf = data; }</span> -<span class="lineNum"> 28 </span> : }; -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : /// MMapIndexer that indexes the package names -<span class="lineNum"> 31 </span> : struct PopconGenerator : public tagcoll::diskindex::MMapIndexer -<span class="lineNum"> 32 </span><span class="lineCov"> 4 : {</span> -<span class="lineNum"> 33 </span> : // Sorted set of all available package names and data -<span class="lineNum"> 34 </span> : std::map<std::string, Score> data; -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 1 : int encodedSize() const</span> -<span class="lineNum"> 37 </span> : { -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : int size = data.size() * sizeof(Score);</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 69911 : for (std::map<std::string, Score>::const_iterator i = data.begin();</span> -<span class="lineNum"> 40 </span> : i != data.end(); ++i) -<span class="lineNum"> 41 </span><span class="lineCov"> 69910 : size += i->first.size() + 1;</span> -<span class="lineNum"> 42 </span><span class="lineCov"> 1 : return tagcoll::diskindex::MMap::align(size);</span> -<span class="lineNum"> 43 </span> : } -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 1 : void encode(char* buf) const</span> -<span class="lineNum"> 46 </span> : { -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : int pos = data.size() * sizeof(Score);</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : int idx = 0;</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 69911 : for (std::map<std::string, Score>::const_iterator i = data.begin();</span> -<span class="lineNum"> 50 </span> : i != data.end(); ++i) -<span class="lineNum"> 51 </span> : { -<span class="lineNum"> 52 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx] = i->second;</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 69910 : ((Score*)buf)[idx].offset = pos;</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 69910 : memcpy(buf + pos, i->first.c_str(), i->first.size() + 1);</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 69910 : pos += i->first.size() + 1;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 69910 : ++idx;</span> -<span class="lineNum"> 57 </span> : } -<span class="lineNum"> 58 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 59 </span> : }; -<span class="lineNum"> 60 </span> : -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span><span class="lineCov"> 7 : PopconIndexer::PopconIndexer()</span> -<span class="lineNum"> 63 </span> : : mainSource(Path::popconSourceDir()), -<span class="lineNum"> 64 </span><span class="lineCov"> 7 : userSource(Path::popconUserSourceDir())</span> -<span class="lineNum"> 65 </span> : { -<span class="lineNum"> 66 </span><span class="lineCov"> 7 : rescan();</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span><span class="lineCov"> 7 : void PopconIndexer::rescan()</span> -<span class="lineNum"> 70 </span> : { -<span class="lineNum"> 71 </span><span class="lineCov"> 7 : ts_main_src = mainSource.timestamp();</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 7 : ts_user_src = userSource.timestamp();</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 7 : ts_main_sco = Path::timestamp(Path::scores());</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 14 : ts_user_sco = Path::timestamp(Path::userScores());</span> -<span class="lineNum"> 75 </span><span class="lineCov"> 14 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 14 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 7 : }</span> -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span><span class="lineCov"> 7 : bool PopconIndexer::needsRebuild() const</span> -<span class="lineNum"> 80 </span> : { -<span class="lineNum"> 81 </span> : // If there are no indexes of any kind, then we need rebuilding -<span class="lineNum"> 82 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 || ts_main_sco == 0 || ts_user_idx == 0 && ts_main_idx == 0)</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 2 : return true;</span> -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span> : // If the user index is ok, then we are fine -<span class="lineNum"> 86 </span><span class="lineCov"> 5 : if (ts_user_sco >= sourceTimestamp() && ts_user_idx >= sourceTimestamp())</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 5 : return false;</span> -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : // If there are user sources, then we cannot use the system index -<span class="lineNum"> 90 </span><span class="lineNoCov"> 0 : if (ts_user_src > 0)</span> -<span class="lineNum"> 91 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : // If there are no user sources, then we can fallback on the system -<span class="lineNum"> 94 </span> : // indexes in case the user indexes are not up to date -<span class="lineNum"> 95 </span><span class="lineNoCov"> 0 : if (ts_main_sco >= sourceTimestamp() && ts_main_idx >= sourceTimestamp())</span> -<span class="lineNum"> 96 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 99 </span> : } -<span class="lineNum"> 100 </span> : -<span class="lineNum"> 101 </span><span class="lineCov"> 7 : bool PopconIndexer::userIndexIsRedundant() const</span> -<span class="lineNum"> 102 </span> : { -<span class="lineNum"> 103 </span> : // If there is no user index, then it is not redundant -<span class="lineNum"> 104 </span><span class="lineCov"> 7 : if (ts_user_idx == 0)</span> -<span class="lineNum"> 105 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 106 </span> : -<span class="lineNum"> 107 </span> : // If the system index is not up to date, then the user index is not -<span class="lineNum"> 108 </span> : // redundant -<span class="lineNum"> 109 </span><span class="lineCov"> 6 : if (ts_main_idx < sourceTimestamp())</span> -<span class="lineNum"> 110 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span><span class="lineCov"> 6 : return true;</span> -<span class="lineNum"> 113 </span> : } -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span><span class="lineCov"> 2 : bool PopconIndexer::rebuild(const std::string& scofname, const std::string& idxfname)</span> -<span class="lineNum"> 116 </span> : { -<span class="lineNum"> 117 </span><span class="lineCov"> 2 : PopconGenerator gen;</span> -<span class="lineNum"> 118 </span> : InfoStruct is; -<span class="lineNum"> 119 </span><span class="lineCov"> 2 : is.submissions = 0;</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 2 : if (!mainSource.readScores(gen.data, is.submissions))</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 1 : userSource.readScores(gen.data, is.submissions);</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 2 : if (gen.data.empty())</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span><span class="lineCov"> 1 : StructIndexer<InfoStruct> infoStruct(is);</span> -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : // Create the index -<span class="lineNum"> 128 </span><span class="lineCov"> 1 : tagcoll::diskindex::MasterMMapIndexer master(idxfname);</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 1 : master.append(gen);</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 1 : master.append(infoStruct);</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 1 : master.commit();</span> -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : // for (map<string, Score>::const_iterator i = gen.data.begin(); i != gen.data.end(); ++i) -<span class="lineNum"> 134 </span> : // { -<span class="lineNum"> 135 </span> : // fprintf(stderr, "%s %d %f\n", i->first.c_str(), i->second.offset, i->second.score); -<span class="lineNum"> 136 </span> : // } -<span class="lineNum"> 137 </span> : -<span class="lineNum"> 138 </span> : // Create the score file -<span class="lineNum"> 139 </span><span class="lineCov"> 1 : FILE* out = fopen(scofname.c_str(), "wt");</span> -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : if (out == NULL)</span> -<span class="lineNum"> 141 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(scofname, "opening and truncating file for writing");</span> -<span class="lineNum"> 142 </span><span class="lineCov"> 69911 : for (map<string, Score>::const_iterator i = gen.data.begin();</span> -<span class="lineNum"> 143 </span> : i != gen.data.end(); ++i) -<span class="lineNum"> 144 </span> : { -<span class="lineNum"> 145 </span><span class="lineCov"> 69910 : fprintf(out, "%s %f\n", i->first.c_str(), i->second.score);</span> -<span class="lineNum"> 146 </span> : } -<span class="lineNum"> 147 </span><span class="lineCov"> 1 : fclose(out);</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 1 : return true;</span> -<span class="lineNum"> 149 </span> : } -<span class="lineNum"> 150 </span> : -<span class="lineNum"> 151 </span><span class="lineCov"> 7 : bool PopconIndexer::rebuildIfNeeded()</span> -<span class="lineNum"> 152 </span> : { -<span class="lineNum"> 153 </span><span class="lineCov"> 7 : if (needsRebuild())</span> -<span class="lineNum"> 154 </span> : { -<span class="lineNum"> 155 </span> : // Decide if we rebuild the user index or the system index -<span class="lineNum"> 156 </span><span class="lineCov"> 2 : if (Path::access(Path::popconIndexDir(), W_OK) == 0)</span> -<span class="lineNum"> 157 </span> : { -<span class="lineNum"> 158 </span> : // Since we can write on the system index directory, we rebuild -<span class="lineNum"> 159 </span> : // the system index -<span class="lineNum"> 160 </span><span class="lineCov"> 2 : if (!rebuild(Path::scores(), Path::scoresIndex()))</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 1 : ts_main_sco = Path::timestamp(Path::scores());</span> -<span class="lineNum"> 163 </span><span class="lineCov"> 2 : ts_main_idx = Path::timestamp(Path::scoresIndex());</span> -<span class="lineNum"> 164 </span><span class="lineCov"> 2 : if (Path::scores() == Path::userScores())</span> -<span class="lineNum"> 165 </span><span class="lineCov"> 1 : ts_user_sco = ts_main_sco;</span> -<span class="lineNum"> 166 </span><span class="lineCov"> 1 : if (Path::scoresIndex() == Path::userScoresIndex())</span> -<span class="lineNum"> 167 </span><span class="lineCov"> 1 : ts_user_idx = ts_main_idx;</span> -<span class="lineNum"> 168 </span> : } else { -<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScores());</span> -<span class="lineNum"> 170 </span><span class="lineNoCov"> 0 : wibble::sys::fs::mkFilePath(Path::userScoresIndex());</span> -<span class="lineNum"> 171 </span><span class="lineNoCov"> 0 : if (!rebuild(Path::userScores(), Path::userScoresIndex()))</span> -<span class="lineNum"> 172 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 173 </span><span class="lineNoCov"> 0 : ts_user_sco = Path::timestamp(Path::userScores());</span> -<span class="lineNum"> 174 </span><span class="lineNoCov"> 0 : ts_user_idx = Path::timestamp(Path::userScoresIndex());</span> -<span class="lineNum"> 175 </span> : } -<span class="lineNum"> 176 </span><span class="lineCov"> 1 : return true;</span> -<span class="lineNum"> 177 </span> : } -<span class="lineNum"> 178 </span><span class="lineCov"> 5 : return false;</span> -<span class="lineNum"> 179 </span> : } -<span class="lineNum"> 180 </span> : -<span class="lineNum"> 181 </span><span class="lineCov"> 7 : bool PopconIndexer::deleteRedundantUserIndex()</span> -<span class="lineNum"> 182 </span> : { -<span class="lineNum"> 183 </span><span class="lineCov"> 7 : if (userIndexIsRedundant())</span> -<span class="lineNum"> 184 </span> : { -<span class="lineNum"> 185 </span> : // Delete the user indexes if they exist -<span class="lineNum"> 186 </span><span class="lineCov"> 6 : if (Path::scores() != Path::userScores())</span> -<span class="lineNum"> 187 </span> : { -<span class="lineNum"> 188 </span><span class="lineNoCov"> 0 : unlink(Path::userScores().c_str());</span> -<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : ts_user_sco = 0;</span> -<span class="lineNum"> 190 </span> : } -<span class="lineNum"> 191 </span><span class="lineCov"> 6 : if (Path::scoresIndex() != Path::userScoresIndex())</span> -<span class="lineNum"> 192 </span> : { -<span class="lineNum"> 193 </span><span class="lineNoCov"> 0 : unlink(Path::userScoresIndex().c_str());</span> -<span class="lineNum"> 194 </span><span class="lineNoCov"> 0 : ts_user_idx = 0;</span> -<span class="lineNum"> 195 </span> : } -<span class="lineNum"> 196 </span><span class="lineCov"> 6 : return true;</span> -<span class="lineNum"> 197 </span> : } -<span class="lineNum"> 198 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 199 </span> : } -<span class="lineNum"> 200 </span> : -<span class="lineNum"> 201 </span><span class="lineCov"> 7 : bool PopconIndexer::getUpToDatePopcon(std::string& scofname, std::string& idxfname)</span> -<span class="lineNum"> 202 </span> : { -<span class="lineNum"> 203 </span> : // If there are no indexes of any kind, then we have nothing to return -<span class="lineNum"> 204 </span><span class="lineCov"> 7 : if (ts_user_sco == 0 && ts_main_sco == 0 && ts_user_idx == 0 && ts_main_idx == 0)</span> -<span class="lineNum"> 205 </span><span class="lineCov"> 1 : return false;</span> -<span class="lineNum"> 206 </span> : -<span class="lineNum"> 207 </span> : // If the user index is up to date, use it -<span class="lineNum"> 208 </span><span class="lineCov"> 6 : if (ts_user_sco >= sourceTimestamp() &&</span> -<span class="lineNum"> 209 </span> : ts_user_idx >= sourceTimestamp()) -<span class="lineNum"> 210 </span> : { -<span class="lineNum"> 211 </span><span class="lineCov"> 6 : scofname = Path::userScores();</span> -<span class="lineNum"> 212 </span><span class="lineCov"> 12 : idxfname = Path::userScoresIndex();</span> -<span class="lineNum"> 213 </span><span class="lineCov"> 6 : return true;</span> -<span class="lineNum"> 214 </span> : } -<span class="lineNum"> 215 </span> : -<span class="lineNum"> 216 </span> : // If the user index is not up to date and we have user sources, we cannot -<span class="lineNum"> 217 </span> : // fall back to the system index -<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : if (ts_user_src != 0)</span> -<span class="lineNum"> 219 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 220 </span> : -<span class="lineNum"> 221 </span> : // Fallback to the system index -<span class="lineNum"> 222 </span><span class="lineNoCov"> 0 : if (ts_main_sco >= sourceTimestamp() &&</span> -<span class="lineNum"> 223 </span> : ts_main_idx >= sourceTimestamp()) -<span class="lineNum"> 224 </span> : { -<span class="lineNum"> 225 </span><span class="lineNoCov"> 0 : scofname = Path::scores();</span> -<span class="lineNum"> 226 </span><span class="lineNoCov"> 0 : idxfname = Path::scoresIndex();</span> -<span class="lineNum"> 227 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 228 </span> : } -<span class="lineNum"> 229 </span> : -<span class="lineNum"> 230 </span><span class="lineNoCov"> 0 : return false;</span> -<span class="lineNum"> 231 </span> : } -<span class="lineNum"> 232 </span> : -<span class="lineNum"> 233 </span> : -<span class="lineNum"> 234 </span><span class="lineCov"> 7 : bool PopconIndexer::obtainWorkingPopcon(std::string& scofname, std::string& idxfname)</span> -<span class="lineNum"> 235 </span> : { -<span class="lineNum"> 236 </span><span class="lineCov"> 7 : PopconIndexer indexer;</span> -<span class="lineNum"> 237 </span> : -<span class="lineNum"> 238 </span><span class="lineCov"> 7 : indexer.rebuildIfNeeded();</span> -<span class="lineNum"> 239 </span><span class="lineCov"> 7 : indexer.deleteRedundantUserIndex();</span> -<span class="lineNum"> 240 </span><span class="lineCov"> 7 : return indexer.getUpToDatePopcon(scofname, idxfname);</span> -<span class="lineNum"> 241 </span> : } -<span class="lineNum"> 242 </span> : -<span class="lineNum"> 243 </span> : -<span class="lineNum"> 244 </span> : } -<span class="lineNum"> 245 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 246 </span> : -<span class="lineNum"> 247 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/popconindexer.h.gcov.html b/rep/ept/popcon/maint/popconindexer.h.gcov.html deleted file mode 100644 index fe36a9d..0000000 --- a/rep/ept/popcon/maint/popconindexer.h.gcov.html +++ /dev/null @@ -1,142 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/popconindexer.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - popconindexer.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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_PKGIDINDEXER_H -<span class="lineNum"> 2 </span> : #define EPT_DEBTAGS_PKGIDINDEXER_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Rebuild and maintain the map from package IDs to package names -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2003-2007 Enrico Zini <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/popcon/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 popcon { -<span class="lineNum"> 32 </span> : -<span class="lineNum"> 33 </span> : struct InfoStruct -<span class="lineNum"> 34 </span> : { -<span class="lineNum"> 35 </span> : size_t submissions; -<span class="lineNum"> 36 </span> : }; -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : struct PopconIndexer -<span class="lineNum"> 39 </span><span class="lineCov"> 7 : {</span> -<span class="lineNum"> 40 </span> : SourceDir mainSource; -<span class="lineNum"> 41 </span> : SourceDir userSource; -<span class="lineNum"> 42 </span> : time_t ts_main_src; -<span class="lineNum"> 43 </span> : time_t ts_user_src; -<span class="lineNum"> 44 </span> : time_t ts_main_sco; -<span class="lineNum"> 45 </span> : time_t ts_user_sco; -<span class="lineNum"> 46 </span> : time_t ts_main_idx; -<span class="lineNum"> 47 </span> : time_t ts_user_idx; -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span><span class="lineCov"> 28 : time_t sourceTimestamp() const</span> -<span class="lineNum"> 50 </span> : { -<span class="lineNum"> 51 </span><span class="lineCov"> 28 : time_t res = ts_main_src;</span> -<span class="lineNum"> 52 </span><span class="lineCov"> 28 : if (ts_user_src > res) res = ts_user_src;</span> -<span class="lineNum"> 53 </span><span class="lineCov"> 28 : return res;</span> -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span> : } -<span class="lineNum"> 56 </span> : bool needsRebuild() const; -<span class="lineNum"> 57 </span> : bool rebuild(const std::string& scofname, const std::string& idxfname); -<span class="lineNum"> 58 </span> : bool rebuildIfNeeded(); -<span class="lineNum"> 59 </span> : bool getUpToDatePopcon(std::string& scofname, std::string& idxfname); -<span class="lineNum"> 60 </span> : -<span class="lineNum"> 61 </span> : bool userIndexIsRedundant() const; -<span class="lineNum"> 62 </span> : bool deleteRedundantUserIndex(); -<span class="lineNum"> 63 </span> : -<span class="lineNum"> 64 </span> : void rescan(); -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span> : PopconIndexer(); -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span> : static bool obtainWorkingPopcon(std::string& scofname, std::string& idxfname); -<span class="lineNum"> 69 </span> : }; -<span class="lineNum"> 70 </span> : -<span class="lineNum"> 71 </span> : } -<span class="lineNum"> 72 </span> : } -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 75 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/sourcedir.cc.gcov.html b/rep/ept/popcon/maint/sourcedir.cc.gcov.html deleted file mode 100644 index 80a1a4e..0000000 --- a/rep/ept/popcon/maint/sourcedir.cc.gcov.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/sourcedir.cc</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">76</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">93.4 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">71</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #include <ept/popcon/maint/sourcedir.h> -<span class="lineNum"> 2 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : #include <wibble/string.h> -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : #include <tagcoll/input/zlib.h> -<span class="lineNum"> 7 </span> : #include <tagcoll/input/stdio.h> -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : #include <cstdlib> -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : using namespace std; -<span class="lineNum"> 12 </span> : using namespace wibble; -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span> : namespace ept { -<span class="lineNum"> 15 </span> : namespace popcon { -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span><span class="lineCov"> 93 : SourceDir::FileType SourceDir::fileType(const std::string& name)</span> -<span class="lineNum"> 18 </span> : { -<span class="lineNum"> 19 </span><span class="lineCov"> 93 : if (name[0] == '.') return SKIP;</span> -<span class="lineNum"> 20 </span> : -<span class="lineNum"> 21 </span><span class="lineCov"> 59 : if (name == "all-popcon-results.txt") return RAW;</span> -<span class="lineNum"> 22 </span><span class="lineCov"> 59 : if (name == "all-popcon-results.txt.gz") return RAWGZ;</span> -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span><span class="lineCov"> 46 : return SKIP;</span> -<span class="lineNum"> 25 </span> : } -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span><span class="lineCov"> 14 : time_t SourceDir::timestamp()</span> -<span class="lineNum"> 28 </span> : { -<span class="lineNum"> 29 </span><span class="lineCov"> 14 : if (!valid()) return 0;</span> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span><span class="lineCov"> 14 : time_t max = 0;</span> -<span class="lineNum"> 32 </span><span class="lineCov"> 98 : for (const_iterator d = begin(); d != end(); ++d)</span> -<span class="lineNum"> 33 </span> : { -<span class="lineNum"> 34 </span><span class="lineCov"> 84 : FileType type = fileType(d->d_name);</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 84 : if (type == SKIP) continue;</span> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span><span class="lineCov"> 12 : time_t ts = Path::timestamp(str::joinpath(path(), d->d_name));</span> -<span class="lineNum"> 38 </span><span class="lineCov"> 24 : if (ts > max) max = ts;</span> -<span class="lineNum"> 39 </span><span class="lineCov"> 14 : }</span> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span><span class="lineCov"> 14 : return max;</span> -<span class="lineNum"> 42 </span> : } -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineCov"> 70200 : bool readLine(tagcoll::input::Input& in, string& str)</span> -<span class="lineNum"> 45 </span> : { -<span class="lineNum"> 46 </span><span class="lineCov"> 70200 : str.clear();</span> -<span class="lineNum"> 47 </span> : int c; -<span class="lineNum"> 48 </span><span class="lineCov"> 4594913 : while ((c = in.nextChar()) != tagcoll::input::Input::Eof && c != '\n')</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 4454513 : str += c;</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 70200 : return c != tagcoll::input::Input::Eof;</span> -<span class="lineNum"> 51 </span> : } -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : static void parseScores(tagcoll::input::Input& in, map<std::string, Score>& out, size_t& submissions)</span> -<span class="lineNum"> 54 </span> : { -<span class="lineNum"> 55 </span><span class="lineCov"> 1 : string line;</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 140349 : while (readLine(in, line))</span> -<span class="lineNum"> 57 </span> : { -<span class="lineNum"> 58 </span><span class="lineCov"> 70199 : if (line.size() < 10)</span> -<span class="lineNum"> 59 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 70199 : if (line.substr(0, 13) == "Submissions: ")</span> -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span><span class="lineCov"> 1 : submissions = strtoul(line.substr(13).c_str(), 0, 10);</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 1 : continue;</span> -<span class="lineNum"> 64 </span> : } -<span class="lineNum"> 65 </span><span class="lineCov"> 70198 : if (line.substr(0, 9) != "Package: ")</span> -<span class="lineNum"> 66 </span><span class="lineCov"> 50 : continue;</span> -<span class="lineNum"> 67 </span><span class="lineCov"> 70148 : size_t start = 9;</span> -<span class="lineNum"> 68 </span><span class="lineCov"> 70148 : size_t end = line.find(' ', start);</span> -<span class="lineNum"> 69 </span><span class="lineCov"> 70148 : if (end == string::npos)</span> -<span class="lineNum"> 70 </span><span class="lineNoCov"> 0 : continue;</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 70148 : string name = line.substr(start, end-start);</span> -<span class="lineNum"> 72 </span> : // Skip packages not in the apt index -<span class="lineNum"> 73 </span> : //if (!apt.isValid(name)) -<span class="lineNum"> 74 </span> : //continue; -<span class="lineNum"> 75 </span> : -<span class="lineNum"> 76 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 70148 : string vote = line.substr(start, end-start);</span> -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> -<span class="lineNum"> 84 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> -<span class="lineNum"> 85 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 70148 : string old = line.substr(start, end-start);</span> -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> -<span class="lineNum"> 89 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> -<span class="lineNum"> 90 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 70148 : if (end == string::npos) continue;</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 70148 : string recent = line.substr(start, end-start);</span> -<span class="lineNum"> 93 </span> : -<span class="lineNum"> 94 </span><span class="lineCov"> 70148 : start = line.find_first_not_of(' ', end);</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 70148 : if (start == string::npos) continue;</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 70148 : end = line.find(' ', start);</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 70148 : if (end == string::npos) end = line.size();</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 70148 : string nofiles = line.substr(start, end-start);</span> -<span class="lineNum"> 99 </span> : -<span class="lineNum"> 100 </span> : float score = (float)strtoul(vote.c_str(), NULL, 10) -<span class="lineNum"> 101 </span> : + (float)strtoul(recent.c_str(), NULL, 10) * 0.5f -<span class="lineNum"> 102 </span> : + (float)strtoul(old.c_str(), NULL, 10) * 0.3f -<span class="lineNum"> 103 </span><span class="lineCov"> 70148 : + (float)strtoul(nofiles.c_str(), NULL, 10) * 0.8f;</span> -<span class="lineNum"> 104 </span> : -<span class="lineNum"> 105 </span><span class="lineCov"> 70148 : if (score > 0)</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 69910 : out.insert(make_pair(name, Score(score)));</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span><span class="lineCov"> 3 : bool SourceDir::readScores(map<std::string, Score>& out, size_t& submissions)</span> -<span class="lineNum"> 111 </span> : { -<span class="lineNum"> 112 </span><span class="lineCov"> 3 : if (!valid()) return false;</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 3 : bool done = false;</span> -<span class="lineNum"> 114 </span> : -<span class="lineNum"> 115 </span><span class="lineCov"> 12 : for (const_iterator d = begin(); d != end(); ++d)</span> -<span class="lineNum"> 116 </span> : { -<span class="lineNum"> 117 </span><span class="lineCov"> 9 : FileType type = fileType(d->d_name);</span> -<span class="lineNum"> 118 </span><span class="lineCov"> 9 : if (type == RAW)</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span> : // Read uncompressed data -<span class="lineNum"> 121 </span><span class="lineNoCov"> 0 : tagcoll::input::Stdio in(str::joinpath(path(), d->d_name));</span> -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : // Read the scores -<span class="lineNum"> 124 </span><span class="lineNoCov"> 0 : parseScores(in, out, submissions);</span> -<span class="lineNum"> 125 </span><span class="lineNoCov"> 0 : done = true;</span> -<span class="lineNum"> 126 </span> : } -<span class="lineNum"> 127 </span><span class="lineCov"> 9 : else if (type == RAWGZ)</span> -<span class="lineNum"> 128 </span> : { -<span class="lineNum"> 129 </span> : // Read compressed data -<span class="lineNum"> 130 </span><span class="lineCov"> 1 : tagcoll::input::Zlib in(str::joinpath(path(), d->d_name));</span> -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span> : // Read the scores -<span class="lineNum"> 133 </span><span class="lineCov"> 1 : parseScores(in, out, submissions);</span> -<span class="lineNum"> 134 </span><span class="lineCov"> 1 : done = true;</span> -<span class="lineNum"> 135 </span> : } -<span class="lineNum"> 136 </span><span class="lineCov"> 3 : }</span> -<span class="lineNum"> 137 </span><span class="lineCov"> 3 : return done;</span> -<span class="lineNum"> 138 </span> : } -<span class="lineNum"> 139 </span> : -<span class="lineNum"> 140 </span> : } -<span class="lineNum"> 141 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 142 </span> : -<span class="lineNum"> 143 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/maint/sourcedir.h.gcov.html b/rep/ept/popcon/maint/sourcedir.h.gcov.html deleted file mode 100644 index 56c0640..0000000 --- a/rep/ept/popcon/maint/sourcedir.h.gcov.html +++ /dev/null @@ -1,130 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/maint/sourcedir.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/popcon/maint</a> - sourcedir.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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_POPCON_SOURCEDIR_H -<span class="lineNum"> 2 </span> : #define EPT_POPCON_SOURCEDIR_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Popcon data source directory access -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2003,2004,2005,2006,2007 Enrico Zini <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/popcon/popcon.h> -<span class="lineNum"> 28 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 29 </span> : #include <string> -<span class="lineNum"> 30 </span> : #include <map> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : namespace ept { -<span class="lineNum"> 33 </span> : namespace popcon { -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : /** -<span class="lineNum"> 36 </span> : * Access a directory containing Debtags data files -<span class="lineNum"> 37 </span> : */ -<span class="lineNum"> 38 </span> : class SourceDir : public wibble::sys::fs::Directory -<span class="lineNum"> 39 </span><span class="lineCov"> 14 : {</span> -<span class="lineNum"> 40 </span> : protected: -<span class="lineNum"> 41 </span> : enum FileType { SKIP, RAW, RAWGZ }; -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : // Check if a file name is a tag file, a vocabulary file or a file to skip. -<span class="lineNum"> 44 </span> : // Please notice that it works on file names, not paths. -<span class="lineNum"> 45 </span> : FileType fileType(const std::string& name); -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span> : public: -<span class="lineNum"> 48 </span><span class="lineCov"> 14 : SourceDir(const std::string& path) : Directory(path) {}</span> -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : /// Return the time of the newest file in the source directory -<span class="lineNum"> 51 </span> : time_t timestamp(); -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : /** -<span class="lineNum"> 54 </span> : * Read the tag files in the directory and output their content to the map -<span class="lineNum"> 55 </span> : */ -<span class="lineNum"> 56 </span> : bool readScores(std::map<std::string, Score>& out, size_t& submissions); -<span class="lineNum"> 57 </span> : }; -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span> : } -<span class="lineNum"> 60 </span> : } -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 63 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/popcon.cc.gcov.html b/rep/ept/popcon/popcon.cc.gcov.html deleted file mode 100644 index f38fb61..0000000 --- a/rep/ept/popcon/popcon.cc.gcov.html +++ /dev/null @@ -1,162 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/popcon.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">23</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">95.7 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">22</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : /** @file -<span class="lineNum"> 4 </span> : * @author Enrico Zini <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) 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/popcon/popcon.h> -<span class="lineNum"> 27 </span> : #include <ept/popcon/maint/popconindexer.h> -<span class="lineNum"> 28 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span> : //#include <iostream> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : using namespace std; -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : namespace ept { -<span class="lineNum"> 35 </span> : namespace popcon { -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span><span class="lineCov"> 3 : size_t Popcon::GeneralInfo::submissions() const</span> -<span class="lineNum"> 38 </span> : { -<span class="lineNum"> 39 </span><span class="lineCov"> 3 : if (!m_buf) return 0;</span> -<span class="lineNum"> 40 </span><span class="lineCov"> 2 : return ((InfoStruct*)m_buf)->submissions;</span> -<span class="lineNum"> 41 </span> : } -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span><span class="lineCov"> 7 : Popcon::Popcon()</span> -<span class="lineNum"> 44 </span> : { -<span class="lineNum"> 45 </span><span class="lineCov"> 7 : std::string scofname, idxfname;</span> -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span><span class="lineCov"> 7 : if (!PopconIndexer::obtainWorkingPopcon(scofname, idxfname))</span> -<span class="lineNum"> 48 </span> : { -<span class="lineNum"> 49 </span><span class="lineCov"> 1 : m_timestamp = 0;</span> -<span class="lineNum"> 50 </span><span class="lineCov"> 1 : return;</span> -<span class="lineNum"> 51 </span> : } -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : //cerr << "GOT " << scofname << " " << idxfname << endl; -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span><span class="lineCov"> 6 : m_timestamp = Path::timestamp(idxfname);</span> -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span><span class="lineCov"> 6 : mastermmap.init(idxfname);</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 6 : tagcoll::diskindex::MMap::init(mastermmap, 0);</span> -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span><span class="lineCov"> 6 : m_info.init(mastermmap, 1);</span> -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : //cerr << "SIZE " << size() << endl; -<span class="lineNum"> 63 </span> : //for (size_t i = 0; i < size(); ++i) -<span class="lineNum"> 64 </span> : //{ -<span class="lineNum"> 65 </span> : // cerr << "EL " << i << ": " << ((Score*)m_buf)[i].offset << " " << ((Score*)m_buf)[i].score << endl; -<span class="lineNum"> 66 </span> : //} -<span class="lineNum"> 67 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span><span class="lineCov"> 1792 : float Popcon::scoreByName(const std::string& name) const</span> -<span class="lineNum"> 70 </span> : { -<span class="lineNum"> 71 </span> : // Binary search the index to find the package ID -<span class="lineNum"> 72 </span> : int begin, end; -<span class="lineNum"> 73 </span> : -<span class="lineNum"> 74 </span> : /* Binary search */ -<span class="lineNum"> 75 </span><span class="lineCov"> 1792 : begin = -1, end = size();</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 32470 : while (end - begin > 1)</span> -<span class="lineNum"> 77 </span> : { -<span class="lineNum"> 78 </span><span class="lineCov"> 28886 : int cur = (end + begin) / 2;</span> -<span class="lineNum"> 79 </span><span class="lineCov"> 28886 : if (this->name(cur) > name)</span> -<span class="lineNum"> 80 </span><span class="lineCov"> 14367 : end = cur;</span> -<span class="lineNum"> 81 </span> : else -<span class="lineNum"> 82 </span><span class="lineCov"> 14519 : begin = cur;</span> -<span class="lineNum"> 83 </span> : } -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineCov"> 1792 : if (begin == -1 || this->name(begin) != name)</span> -<span class="lineNum"> 86 </span> : //throw NotFoundException(string("looking for the ID of string ") + str); -<span class="lineNum"> 87 </span><span class="lineCov"> 31 : return 0;</span> -<span class="lineNum"> 88 </span> : else -<span class="lineNum"> 89 </span><span class="lineCov"> 1761 : return score(begin);</span> -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span> : } -<span class="lineNum"> 93 </span> : } -<span class="lineNum"> 94 </span> : -<span class="lineNum"> 95 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/popcon.h.gcov.html b/rep/ept/popcon/popcon.h.gcov.html deleted file mode 100644 index 270736f..0000000 --- a/rep/ept/popcon/popcon.h.gcov.html +++ /dev/null @@ -1,220 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/popcon.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">25</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">96.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">24</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : #ifndef EPT_POPCON_POPCON_H -<span class="lineNum"> 3 </span> : #define EPT_POPCON_POPCON_H -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : /** @file -<span class="lineNum"> 6 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 7 </span> : * Access popcon data -<span class="lineNum"> 8 </span> : */ -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span> : /* -<span class="lineNum"> 11 </span> : * Copyright (C) 2007 Enrico Zini <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 apt { -<span class="lineNum"> 33 </span> : class Apt; -<span class="lineNum"> 34 </span> : } -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span> : namespace popcon { -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : /** -<span class="lineNum"> 39 </span> : * Store the score information in the popcon cache. -<span class="lineNum"> 40 </span> : * -<span class="lineNum"> 41 </span> : * Currently, this is only one float; more can be added in the future. -<span class="lineNum"> 42 </span> : */ -<span class="lineNum"> 43 </span> : class Score -<span class="lineNum"> 44 </span> : { -<span class="lineNum"> 45 </span> : protected: -<span class="lineNum"> 46 </span> : unsigned offset; -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : public: -<span class="lineNum"> 49 </span> : float score; -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 69910 : Score(float score) : offset(offset), score(score) {}</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : friend class Popcon; -<span class="lineNum"> 54 </span> : friend class PopconIndexer; -<span class="lineNum"> 55 </span> : friend class PopconGenerator; -<span class="lineNum"> 56 </span> : }; -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : /** -<span class="lineNum"> 59 </span> : * Maps Packages to IDs and vice-versa. -<span class="lineNum"> 60 </span> : * -<span class="lineNum"> 61 </span> : * This is used in building the Debtags fast index, which works representing -<span class="lineNum"> 62 </span> : * tags and packages as int IDs. -<span class="lineNum"> 63 </span> : * -<span class="lineNum"> 64 </span> : * Index building works like this: -<span class="lineNum"> 65 </span> : * 1. The file all-popcon-results.txt.gz is downloaded from -<span class="lineNum"> 66 </span> : * http://popcon.debian.org/all-popcon-results.txt.gz -<span class="lineNum"> 67 </span> : * 2. The file is put in either ~/.popcon/all-popcon-results.txt.gz -<span class="lineNum"> 68 </span> : * or in /var/lib/popcon/all-popcon-results.txt.gz -<span class="lineNum"> 69 </span> : * 3. If the file is newer than the index, it will be automatically used to -<span class="lineNum"> 70 </span> : * recompute the scores and rebuild the index. -<span class="lineNum"> 71 </span> : */ -<span class="lineNum"> 72 </span> : class Popcon : public tagcoll::diskindex::MMap -<span class="lineNum"> 73 </span><span class="lineCov"> 7 : {</span> -<span class="lineNum"> 74 </span> : struct GeneralInfo : public tagcoll::diskindex::MMap -<span class="lineNum"> 75 </span><span class="lineCov"> 7 : {</span> -<span class="lineNum"> 76 </span> : size_t submissions() const; -<span class="lineNum"> 77 </span> : }; -<span class="lineNum"> 78 </span> : -<span class="lineNum"> 79 </span> : tagcoll::diskindex::MasterMMap mastermmap; -<span class="lineNum"> 80 </span> : time_t m_timestamp; -<span class="lineNum"> 81 </span> : -<span class="lineNum"> 82 </span> : GeneralInfo m_info; -<span class="lineNum"> 83 </span> : -<span class="lineNum"> 84 </span> : /// Get the score structure by index -<span class="lineNum"> 85 </span><span class="lineCov"> 102350 : const Score* structByIndex(size_t idx) const</span> -<span class="lineNum"> 86 </span> : { -<span class="lineNum"> 87 </span><span class="lineCov"> 102350 : if (idx >= 0 && idx < size())</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 102350 : return (Score*)m_buf + idx;</span> -<span class="lineNum"> 89 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span> : -<span class="lineNum"> 92 </span> : public: -<span class="lineNum"> 93 </span> : Popcon(); -<span class="lineNum"> 94 </span> : -<span class="lineNum"> 95 </span> : /// Get the timestamp of when the index was last updated -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : time_t timestamp() const { return m_timestamp; }</span> -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span> : /// Return true if this data source has data, false if it's empty -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : bool hasData() const { return m_timestamp != 0; }</span> -<span class="lineNum"> 100 </span> : -<span class="lineNum"> 101 </span> : /// Return the total number of popcon submissions -<span class="lineNum"> 102 </span><span class="lineCov"> 3 : size_t submissions() const { return m_info.submissions(); }</span> -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span> : /// Get the number of packages in the index -<span class="lineNum"> 105 </span><span class="lineCov"> 174055 : size_t size() const</span> -<span class="lineNum"> 106 </span> : { -<span class="lineNum"> 107 </span><span class="lineCov"> 174055 : if (m_buf)</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 174053 : return ((Score*)m_buf)->offset / sizeof(Score);</span> -<span class="lineNum"> 109 </span> : else -<span class="lineNum"> 110 </span><span class="lineCov"> 2 : return 0;</span> -<span class="lineNum"> 111 </span> : } -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span> : /** -<span class="lineNum"> 114 </span> : * Get a package name by index -<span class="lineNum"> 115 </span> : * -<span class="lineNum"> 116 </span> : * If the index is not valid, returns the empty string. -<span class="lineNum"> 117 </span> : */ -<span class="lineNum"> 118 </span><span class="lineCov"> 30678 : std::string name(size_t idx) const</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span><span class="lineCov"> 30678 : const Score* s = structByIndex(idx);</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 30678 : if (s == 0) return std::string();</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 30678 : return std::string(m_buf + s->offset);</span> -<span class="lineNum"> 123 </span> : } -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span> : /// Get the score by index -<span class="lineNum"> 126 </span><span class="lineCov"> 71672 : float scoreByIndex(size_t idx) const</span> -<span class="lineNum"> 127 </span> : { -<span class="lineNum"> 128 </span><span class="lineCov"> 71672 : const Score* s = structByIndex(idx);</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 71672 : if (!s) return 0;</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 71672 : return s->score;</span> -<span class="lineNum"> 131 </span> : } -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : /// Get the score structure by package name -<span class="lineNum"> 134 </span> : float scoreByName(const std::string& name) const; -<span class="lineNum"> 135 </span> : -<span class="lineNum"> 136 </span> : /// Get the score by index -<span class="lineNum"> 137 </span><span class="lineCov"> 71672 : float score(size_t idx) const { return scoreByIndex(idx); }</span> -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : /// Get the score by index -<span class="lineNum"> 140 </span> : float operator[](int idx) const { return scoreByIndex(idx); } -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span> : /// Get the score by name -<span class="lineNum"> 143 </span><span class="lineCov"> 1790 : float score(const std::string& name) const { return scoreByName(name); }</span> -<span class="lineNum"> 144 </span> : -<span class="lineNum"> 145 </span> : /// Get the score structure by package name -<span class="lineNum"> 146 </span><span class="lineCov"> 2 : float operator[](const std::string& name) const { return scoreByName(name); }</span> -<span class="lineNum"> 147 </span> : }; -<span class="lineNum"> 148 </span> : -<span class="lineNum"> 149 </span> : } -<span class="lineNum"> 150 </span> : } -<span class="lineNum"> 151 </span> : -<span class="lineNum"> 152 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 153 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/popcon/popcon.test.h.gcov.html b/rep/ept/popcon/popcon.test.h.gcov.html deleted file mode 100644 index 65387fc..0000000 --- a/rep/ept/popcon/popcon.test.h.gcov.html +++ /dev/null @@ -1,175 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/popcon/popcon.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/popcon</a> - popcon.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">38</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%">38</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /* -<span class="lineNum"> 3 </span> : * popcon test -<span class="lineNum"> 4 </span> : * -<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini <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/popcon/popcon.h> -<span class="lineNum"> 23 </span> : #include <ept/popcon/maint/path.h> -<span class="lineNum"> 24 </span> : #include <ept/apt/apt.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::popcon; -<span class="lineNum"> 32 </span> : using namespace ept::apt; -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : struct TestPopcon -<span class="lineNum"> 35 </span><span class="lineCov"> 5 : {</span> -<span class="lineNum"> 36 </span> : popcon::Path::OverridePopconSourceDir odsd; -<span class="lineNum"> 37 </span> : popcon::Path::OverridePopconIndexDir odid; -<span class="lineNum"> 38 </span> : popcon::Path::OverridePopconUserSourceDir odusd; -<span class="lineNum"> 39 </span> : popcon::Path::OverridePopconUserIndexDir oduid; -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : Apt apt; -<span class="lineNum"> 42 </span> : Popcon popcon; -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineCov"> 5 : TestPopcon()</span> -<span class="lineNum"> 45 </span> : : odsd( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 46 </span> : odid( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 47 </span> : odusd( TEST_ENV_DIR "popcon" ), -<span class="lineNum"> 48 </span><span class="lineCov"> 5 : oduid( TEST_ENV_DIR "popcon" )</span> -<span class="lineNum"> 49 </span><span class="lineCov"> 5 : {}</span> -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineCov"> 1 : Test basicAccess()</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 1 : assert_eq(popcon.submissions(), 52024);</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 2 : assert(popcon.size() > 0);</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 2 : assert(popcon.score(0) > 0);</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 2 : assert(!popcon.name(0).empty());</span> -<span class="lineNum"> 57 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 58 </span> : -<span class="lineNum"> 59 </span> : // Check that every valid index is accessible -<span class="lineNum"> 60 </span><span class="lineCov"> 1 : Test accessibility()</span> -<span class="lineNum"> 61 </span> : { -<span class="lineNum"> 62 </span><span class="lineCov"> 139822 : for (size_t i = 0; i < popcon.size(); ++i)</span> -<span class="lineNum"> 63 </span> : { -<span class="lineNum"> 64 </span> : //cerr << popcon.name(i) << " " << popcon.score(i) << endl; -<span class="lineNum"> 65 </span><span class="lineCov"> 69910 : assert(popcon.score(i) > 0);</span> -<span class="lineNum"> 66 </span> : } -<span class="lineNum"> 67 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 68 </span> : -<span class="lineNum"> 69 </span> : // Check that we can get a score for every package -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Test haveScores()</span> -<span class="lineNum"> 71 </span> : { -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : int has = 0;</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 1789 : for (Apt::iterator i = apt.begin(); i != apt.end(); ++i)</span> -<span class="lineNum"> 74 </span> : { -<span class="lineNum"> 75 </span><span class="lineCov"> 1788 : float score = popcon.score(*i);</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 1788 : if (score > 0)</span> -<span class="lineNum"> 77 </span><span class="lineCov"> 1758 : ++has;</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 79 </span> : // At least 1000 packages should have a score -<span class="lineNum"> 80 </span><span class="lineCov"> 2 : assert(has > 1000);</span> -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : // Check that scores are meaningful -<span class="lineNum"> 84 </span><span class="lineCov"> 1 : Test validScores()</span> -<span class="lineNum"> 85 </span> : { -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert(popcon["apt"] > popcon["libapt-pkg-dev"]);</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : // If there is no data, Popcon should work as if all scores were 0 -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Test fallbackValues()</span> -<span class="lineNum"> 91 </span> : { -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : popcon::Path::OverridePopconSourceDir odsd("./empty");</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconIndexDir odid("./empty");</span> -<span class="lineNum"> 94 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserSourceDir odusd("./empty");</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 2 : popcon::Path::OverridePopconUserIndexDir oduid("./empty");</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : Popcon empty;</span> -<span class="lineNum"> 97 </span> : -<span class="lineNum"> 98 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span> -<span class="lineNum"> 100 </span> : -<span class="lineNum"> 101 </span><span class="lineCov"> 2 : assert_eq(empty.submissions(), 0);</span> -<span class="lineNum"> 102 </span><span class="lineCov"> 2 : assert(empty.size() == 0);</span> -<span class="lineNum"> 103 </span><span class="lineCov"> 2 : assert(empty.score("apt") == 0.0);</span> -<span class="lineNum"> 104 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span> : }; -<span class="lineNum"> 107 </span> : -<span class="lineNum"> 108 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/progresscallback.cpp.gcov.html b/rep/ept/progresscallback.cpp.gcov.html deleted file mode 100644 index 1a46d4e..0000000 --- a/rep/ept/progresscallback.cpp.gcov.html +++ /dev/null @@ -1,79 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/progresscallback.cpp</title> - <link rel="stylesheet" type="text/css" href="../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - progresscallback.cpp</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">4</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">0.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">0</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #include <ept/progresscallback.h> -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : namespace ept { -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span><span class="lineNoCov"> 0 : bool ProgressCallback::Pulse(pkgAcquire *Owner)</span> -<span class="lineNum"> 6 </span> : { -<span class="lineNum"> 7 </span><span class="lineNoCov"> 0 : pkgAcquireStatus::Pulse(Owner);</span> -<span class="lineNum"> 8 </span><span class="lineNoCov"> 0 : UpdatePulse(FetchedBytes, CurrentCPS, CurrentItems);</span> -<span class="lineNum"> 9 </span><span class="lineNoCov"> 0 : return true;</span> -<span class="lineNum"> 10 </span> : } -<span class="lineNum"> 11 </span> : -<span class="lineNum"> 12 </span> : } -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/progresscallback.h.gcov.html b/rep/ept/progresscallback.h.gcov.html deleted file mode 100644 index 9dbb029..0000000 --- a/rep/ept/progresscallback.h.gcov.html +++ /dev/null @@ -1,95 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/progresscallback.h</title> - <link rel="stylesheet" type="text/css" href="../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - progresscallback.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">3</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">0.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">0</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : /** -*- C++ -*- -<span class="lineNum"> 2 </span> : @file progresscallback.h -<span class="lineNum"> 3 </span> : @author Michael Vogt <mvo@debian.org> -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : #ifndef EPT_PROGRESSCALLBACK_H -<span class="lineNum"> 7 </span> : #define EPT_PROGRESSCALLBACK_H -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : #include <apt-pkg/acquire.h> -<span class="lineNum"> 10 </span> : -<span class="lineNum"> 11 </span> : namespace ept { -<span class="lineNum"> 12 </span> : -<span class="lineNum"> 13 </span> : class ProgressCallback : public pkgAcquireStatus -<span class="lineNum"> 14 </span> : { -<span class="lineNum"> 15 </span> : protected: -<span class="lineNum"> 16 </span> : virtual bool Pulse(pkgAcquire *Owner); -<span class="lineNum"> 17 </span> : public: -<span class="lineNum"> 18 </span> : ProgressCallback() {}; -<span class="lineNum"> 19 </span><span class="lineNoCov"> 0 : virtual ~ProgressCallback() {};</span> -<span class="lineNum"> 20 </span><span class="lineNoCov"> 0 : virtual bool MediaChange( string, string ) { return false; } // bah</span> -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span> : // override this to get periodic updates -<span class="lineNum"> 23 </span><span class="lineNoCov"> 0 : virtual void UpdatePulse( double, double, unsigned long ) {}</span> -<span class="lineNum"> 24 </span> : }; -<span class="lineNum"> 25 </span> : -<span class="lineNum"> 26 </span> : } -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/test.h.gcov.html b/rep/ept/test.h.gcov.html deleted file mode 100644 index 4004bd7..0000000 --- a/rep/ept/test.h.gcov.html +++ /dev/null @@ -1,105 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/test.h</title> - <link rel="stylesheet" type="text/css" href="../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">15</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%">15</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #include <ept/core/apt.h> -<span class="lineNum"> 2 </span> : #include <ept/config.h> -<span class="lineNum"> 3 </span> : #include <ept/debtags/maint/path.h> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #include <wibble/test.h> -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : #ifndef EPT_TEST_H -<span class="lineNum"> 8 </span> : #define EPT_TEST_H -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span><span class="lineCov"> 73 : struct AptTestEnvironment {</span> -<span class="lineNum"> 11 </span> : ept::core::AptDatabase db; -<span class="lineNum"> 12 </span><span class="lineCov"> 73 : AptTestEnvironment() {</span> -<span class="lineNum"> 13 </span><span class="lineCov"> 73 : pkgInitConfig (*_config);</span> -<span class="lineNum"> 14 </span><span class="lineCov"> 73 : _config->Set("Initialized", 1);</span> -<span class="lineNum"> 15 </span><span class="lineCov"> 73 : _config->Set("Dir", TEST_ENV_DIR);</span> -<span class="lineNum"> 16 </span><span class="lineCov"> 146 : _config->Set("Dir::Cache", "cache");</span> -<span class="lineNum"> 17 </span><span class="lineCov"> 146 : _config->Set("Dir::State", "state");</span> -<span class="lineNum"> 18 </span><span class="lineCov"> 146 : _config->Set("Dir::Etc", "etc");</span> -<span class="lineNum"> 19 </span><span class="lineCov"> 146 : _config->Set("Dir::State::status", TEST_ENV_DIR "dpkg-status");</span> -<span class="lineNum"> 20 </span><span class="lineCov"> 73 : pkgInitSystem (*_config, _system);</span> -<span class="lineNum"> 21 </span><span class="lineCov"> 73 : }</span> -<span class="lineNum"> 22 </span> : }; -<span class="lineNum"> 23 </span> : -<span class="lineNum"> 24 </span><span class="lineCov"> 29 : struct DebtagsTestEnvironment : AptTestEnvironment {</span> -<span class="lineNum"> 25 </span> : ept::debtags::Path::OverrideDebtagsSourceDir odsd; -<span class="lineNum"> 26 </span> : ept::debtags::Path::OverrideDebtagsIndexDir odid; -<span class="lineNum"> 27 </span> : ept::debtags::Path::OverrideDebtagsUserSourceDir odusd; -<span class="lineNum"> 28 </span> : ept::debtags::Path::OverrideDebtagsUserIndexDir oduid; -<span class="lineNum"> 29 </span> : -<span class="lineNum"> 30 </span><span class="lineCov"> 29 : DebtagsTestEnvironment()</span> -<span class="lineNum"> 31 </span> : : odsd( TEST_ENV_DIR "debtags/"), -<span class="lineNum"> 32 </span> : odid( TEST_ENV_DIR "debtags/"), -<span class="lineNum"> 33 </span> : odusd( TEST_ENV_DIR "debtags/"), -<span class="lineNum"> 34 </span><span class="lineCov"> 29 : oduid( TEST_ENV_DIR "debtags/")</span> -<span class="lineNum"> 35 </span><span class="lineCov"> 29 : {}</span> -<span class="lineNum"> 36 </span> : }; -<span class="lineNum"> 37 </span> : -<span class="lineNum"> 38 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/extraindexers.cc.gcov.html b/rep/ept/textsearch/extraindexers.cc.gcov.html deleted file mode 100644 index 9072fde..0000000 --- a/rep/ept/textsearch/extraindexers.cc.gcov.html +++ /dev/null @@ -1,125 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/extraindexers.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - extraindexers.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">10</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">0.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">0</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : -<span class="lineNum"> 2 </span> : /** @file -<span class="lineNum"> 3 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 4 </span> : * Fast full-text search -<span class="lineNum"> 5 </span> : */ -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : /* -<span class="lineNum"> 8 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> -<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/textsearch/extraindexers.h> -<span class="lineNum"> 26 </span> : #include <ept/apt/packagerecord.h> -<span class="lineNum"> 27 </span> : #include <ept/debtags/debtags.h> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : using namespace std; -<span class="lineNum"> 30 </span> : using namespace ept::debtags; -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : namespace ept { -<span class="lineNum"> 33 </span> : namespace textsearch { -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span><span class="lineNoCov"> 0 : void AptTagsExtraIndexer::operator()(Xapian::Document& doc, const apt::PackageRecord& rec) const</span> -<span class="lineNum"> 36 </span> : { -<span class="lineNum"> 37 </span> : // Index tags as well -<span class="lineNum"> 38 </span><span class="lineNoCov"> 0 : set<string> tags = rec.tag();</span> -<span class="lineNum"> 39 </span><span class="lineNoCov"> 0 : for (set<string>::const_iterator ti = tags.begin();</span> -<span class="lineNum"> 40 </span> : ti != tags.end(); ++ti) -<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : doc.add_term("XT"+*ti);</span> -<span class="lineNum"> 42 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineNoCov"> 0 : void DebtagsExtraIndexer::operator()(Xapian::Document& doc, const apt::PackageRecord& rec) const</span> -<span class="lineNum"> 45 </span> : { -<span class="lineNum"> 46 </span> : // Index tags as well -<span class="lineNum"> 47 </span><span class="lineNoCov"> 0 : set<Tag> tags = debtags.getTagsOfItem(doc.get_data());</span> -<span class="lineNum"> 48 </span><span class="lineNoCov"> 0 : for (set<Tag>::const_iterator ti = tags.begin();</span> -<span class="lineNum"> 49 </span> : ti != tags.end(); ++ti) -<span class="lineNum"> 50 </span><span class="lineNoCov"> 0 : doc.add_term("XT"+ti->fullname());</span> -<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span> : } -<span class="lineNum"> 54 </span> : } -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span> : #include <ept/debtags/debtags.tcc> -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/extraindexers.h.gcov.html b/rep/ept/textsearch/extraindexers.h.gcov.html deleted file mode 100644 index bb7734f..0000000 --- a/rep/ept/textsearch/extraindexers.h.gcov.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/extraindexers.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - extraindexers.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">2</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">0.0 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">0</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : #ifndef EPT_TEXTSEARCH_EXTRAINDEXERS_H -<span class="lineNum"> 2 </span> : #define EPT_TEXTSEARCH_EXTRAINDEXERS_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Fast full-text search -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini <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/textsearch/textsearch.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> : class Debtags; -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : namespace textsearch { -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : struct AptTagsExtraIndexer : public TextSearch::ExtraIndexer -<span class="lineNum"> 36 </span><span class="lineNoCov"> 0 : {</span> -<span class="lineNum"> 37 </span> : virtual void operator()(Xapian::Document& doc, const apt::PackageRecord& rec) const; -<span class="lineNum"> 38 </span> : }; -<span class="lineNum"> 39 </span> : -<span class="lineNum"> 40 </span> : struct DebtagsExtraIndexer : public TextSearch::ExtraIndexer -<span class="lineNum"> 41 </span><span class="lineNoCov"> 0 : {</span> -<span class="lineNum"> 42 </span> : const debtags::Debtags& debtags; -<span class="lineNum"> 43 </span> : DebtagsExtraIndexer(const debtags::Debtags& debtags) : debtags(debtags) {} -<span class="lineNum"> 44 </span> : virtual void operator()(Xapian::Document& doc, const apt::PackageRecord& rec) const; -<span class="lineNum"> 45 </span> : }; -<span class="lineNum"> 46 </span> : -<span class="lineNum"> 47 </span> : } -<span class="lineNum"> 48 </span> : } -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 51 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/index.html b/rep/ept/textsearch/index.html deleted file mode 100644 index 331b9e7..0000000 --- a/rep/ept/textsearch/index.html +++ /dev/null @@ -1,119 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - ept/textsearch</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">216</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">77.3 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">167</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="extraindexers.cc.gcov.html">extraindexers.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../snow.png" width=100 height=10 alt="0.0%"></td></tr></table> - </td> - <td class="coverPerLo">0.0 %</td> - <td class="coverNumLo">0 / 10 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="extraindexers.h.gcov.html">extraindexers.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../snow.png" width=100 height=10 alt="0.0%"></td></tr></table> - </td> - <td class="coverPerLo">0.0 %</td> - <td class="coverNumLo">0 / 2 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="textsearch.cc.gcov.html">textsearch.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=72 height=10 alt="72.2%"><img src="../../snow.png" width=28 height=10 alt="72.2%"></td></tr></table> - </td> - <td class="coverPerHi">72.2 %</td> - <td class="coverNumHi">83 / 115 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="textsearch.h.gcov.html">textsearch.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=87 height=10 alt="86.7%"><img src="../../snow.png" width=13 height=10 alt="86.7%"></td></tr></table> - </td> - <td class="coverPerHi">86.7 %</td> - <td class="coverNumHi">13 / 15 lines</td> - </tr> - - <tr> - <td class="coverFile"><a href="textsearch.test.h.gcov.html">textsearch.test.h</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../emerald.png" width=96 height=10 alt="95.9%"><img src="../../snow.png" width=4 height=10 alt="95.9%"></td></tr></table> - </td> - <td class="coverPerHi">95.9 %</td> - <td class="coverNumHi">71 / 74 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/maint/index.html b/rep/ept/textsearch/maint/index.html deleted file mode 100644 index 45b6542..0000000 --- a/rep/ept/textsearch/maint/index.html +++ /dev/null @@ -1,92 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/maint</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - ept/textsearch/maint</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">34</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">85.3 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">29</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <center> - <table width="80%" cellpadding=2 cellspacing=1 border=0> - - <tr> - <td width="50%"><br></td> - <td width="15%"></td> - <td width="15%"></td> - <td width="20%"></td> - </tr> - - <tr> - <td class="tableHead">Filename</td> - <td class="tableHead" colspan=3>Coverage</td> - </tr> - - <tr> - <td class="coverFile"><a href="path.cc.gcov.html">path.cc</a></td> - <td class="coverBar" align="center"> - <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="../../../emerald.png" width=83 height=10 alt="82.8%"><img src="../../../snow.png" width=17 height=10 alt="82.8%"></td></tr></table> - </td> - <td class="coverPerHi">82.8 %</td> - <td class="coverNumHi">24 / 29 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">5 / 5 lines</td> - </tr> - - </table> - </center> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/maint/path.cc.gcov.html b/rep/ept/textsearch/maint/path.cc.gcov.html deleted file mode 100644 index 6363c97..0000000 --- a/rep/ept/textsearch/maint/path.cc.gcov.html +++ /dev/null @@ -1,160 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/maint/path.cc</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/textsearch/maint</a> - path.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">29</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">82.8 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">24</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : -<span class="lineNum"> 3 </span> : /** \file -<span class="lineNum"> 4 </span> : * popcon paths -<span class="lineNum"> 5 </span> : */ -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : /* -<span class="lineNum"> 8 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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/config.h> -<span class="lineNum"> 26 </span> : #include <ept/textsearch/maint/path.h> -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : #include <wibble/exception.h> -<span class="lineNum"> 29 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 30 </span> : #include <wibble/string.h> -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : #include <cstdio> -<span class="lineNum"> 33 </span> : #include <cerrno> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : #include <sys/types.h> -<span class="lineNum"> 36 </span> : #include <sys/stat.h> -<span class="lineNum"> 37 </span> : #include <unistd.h> -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : using namespace std; -<span class="lineNum"> 40 </span> : using namespace wibble; -<span class="lineNum"> 41 </span> : -<span class="lineNum"> 42 </span> : namespace ept { -<span class="lineNum"> 43 </span> : namespace textsearch { -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span><span class="lineCov"> 111 : Path &Path::instance() {</span> -<span class="lineNum"> 46 </span><span class="lineCov"> 111 : if (!s_instance) {</span> -<span class="lineNum"> 47 </span><span class="lineCov"> 1 : s_instance = new Path;</span> -<span class="lineNum"> 48 </span><span class="lineCov"> 1 : instance().m_indexDir = TEXTSEARCH_DB_DIR;</span> -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span><span class="lineCov"> 111 : return *s_instance;</span> -<span class="lineNum"> 51 </span> : } -<span class="lineNum"> 52 </span> : -<span class="lineNum"> 53 </span><span class="lineNoCov"> 0 : int Path::access( const std::string &s, int m )</span> -<span class="lineNum"> 54 </span> : { -<span class="lineNum"> 55 </span><span class="lineNoCov"> 0 : return ::access( s.c_str(), m );</span> -<span class="lineNum"> 56 </span> : } -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span><span class="lineCov"> 20 : time_t Path::indexTimestamp()</span> -<span class="lineNum"> 59 </span> : { -<span class="lineNum"> 60 </span><span class="lineCov"> 20 : string tsfile = str::joinpath(instance().indexDir(), "update-timestamp");</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 40 : std::auto_ptr<struct stat> st = wibble::sys::fs::stat(tsfile);</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 20 : if (st.get())</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 18 : return st->st_mtime;</span> -<span class="lineNum"> 64 </span> : else -<span class="lineNum"> 65 </span><span class="lineCov"> 2 : return 0;</span> -<span class="lineNum"> 66 </span> : } -<span class="lineNum"> 67 </span> : -<span class="lineNum"> 68 </span><span class="lineCov"> 6 : void Path::setTimestamp(time_t ts)</span> -<span class="lineNum"> 69 </span> : { -<span class="lineNum"> 70 </span><span class="lineCov"> 6 : string tsfile = str::joinpath(instance().indexDir(), "/update-timestamp");</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 12 : FILE* out = fopen(tsfile.c_str(), "wt");</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 6 : if (!out)</span> -<span class="lineNum"> 73 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, "opening file for truncate/writing");</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 6 : if (fprintf(out, "%ld\n", ts) < 0)</span> -<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, "writing the modification time");</span> -<span class="lineNum"> 76 </span><span class="lineCov"> 6 : if (fclose(out) < 0)</span> -<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : throw wibble::exception::File(tsfile, "closing the file");</span> -<span class="lineNum"> 78 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 79 </span> : -<span class="lineNum"> 80 </span><span class="lineCov"> 22 : void Path::setIndexDir( const std::string &s )</span> -<span class="lineNum"> 81 </span> : { -<span class="lineNum"> 82 </span><span class="lineCov"> 22 : instance().m_indexDir = s;</span> -<span class="lineNum"> 83 </span><span class="lineCov"> 22 : }</span> -<span class="lineNum"> 84 </span> : -<span class="lineNum"> 85 </span><span class="lineCov"> 37 : std::string Path::indexDir() { return instance().m_indexDir; }</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 25 : std::string Path::index() { return str::joinpath(instance().m_indexDir, "/index"); }</span> -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : Path *Path::s_instance = 0; -<span class="lineNum"> 89 </span> : -<span class="lineNum"> 90 </span> : } -<span class="lineNum"> 91 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 92 </span> : -<span class="lineNum"> 93 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/maint/path.h.gcov.html b/rep/ept/textsearch/maint/path.h.gcov.html deleted file mode 100644 index 5505d7b..0000000 --- a/rep/ept/textsearch/maint/path.h.gcov.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/maint/path.h</title> - <link rel="stylesheet" type="text/css" href="../../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../../index.html">directory</a> - <a href="index.html">ept/textsearch/maint</a> - path.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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> : // -*- mode: c++; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /** \file -<span class="lineNum"> 3 </span> : * popcon paths -<span class="lineNum"> 4 </span> : */ -<span class="lineNum"> 5 </span> : -<span class="lineNum"> 6 </span> : /* -<span class="lineNum"> 7 </span> : * Copyright (C) 2005,2006,2007 Enrico Zini <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> : #ifndef EPT_TEXTSEARCH_PATH_H -<span class="lineNum"> 25 </span> : #define EPT_TEXTSEARCH_PATH_H -<span class="lineNum"> 26 </span> : -<span class="lineNum"> 27 </span> : #include <string> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : struct stat; -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : namespace ept { -<span class="lineNum"> 32 </span> : namespace textsearch { -<span class="lineNum"> 33 </span> : -<span class="lineNum"> 34 </span> : /** -<span class="lineNum"> 35 </span> : * Singleton class to configure and access the various Popcon paths -<span class="lineNum"> 36 </span> : */ -<span class="lineNum"> 37 </span> : class Path -<span class="lineNum"> 38 </span><span class="lineCov"> 1 : {</span> -<span class="lineNum"> 39 </span> : public: -<span class="lineNum"> 40 </span> : static std::string indexDir(); -<span class="lineNum"> 41 </span> : static std::string index(); -<span class="lineNum"> 42 </span> : -<span class="lineNum"> 43 </span> : // Directory where Popcon source data is found -<span class="lineNum"> 44 </span> : static void setIndexDir( const std::string &s ); -<span class="lineNum"> 45 </span> : -<span class="lineNum"> 46 </span> : static int access( const std::string &, int ); -<span class="lineNum"> 47 </span> : static time_t indexTimestamp(); -<span class="lineNum"> 48 </span> : static void setTimestamp(time_t ts); -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span> : // RAII-style classes to temporarily override directories -<span class="lineNum"> 51 </span> : class OverrideIndexDir -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span> : std::string old; -<span class="lineNum"> 54 </span> : public: -<span class="lineNum"> 55 </span><span class="lineCov"> 11 : OverrideIndexDir(const std::string& path) : old(Path::indexDir())</span> -<span class="lineNum"> 56 </span> : { -<span class="lineNum"> 57 </span><span class="lineCov"> 11 : Path::setIndexDir(path);</span> -<span class="lineNum"> 58 </span><span class="lineCov"> 11 : }</span> -<span class="lineNum"> 59 </span><span class="lineCov"> 11 : ~OverrideIndexDir() { Path::setIndexDir(old); }</span> -<span class="lineNum"> 60 </span> : }; -<span class="lineNum"> 61 </span> : -<span class="lineNum"> 62 </span> : protected: -<span class="lineNum"> 63 </span> : static Path *s_instance; -<span class="lineNum"> 64 </span> : static Path &instance(); -<span class="lineNum"> 65 </span> : -<span class="lineNum"> 66 </span> : // Directory where Popcon source data is found -<span class="lineNum"> 67 </span> : std::string m_indexDir; -<span class="lineNum"> 68 </span> : }; -<span class="lineNum"> 69 </span> : -<span class="lineNum"> 70 </span> : } -<span class="lineNum"> 71 </span> : } -<span class="lineNum"> 72 </span> : -<span class="lineNum"> 73 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 74 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/textsearch.cc.gcov.html b/rep/ept/textsearch/textsearch.cc.gcov.html deleted file mode 100644 index b1cdfba..0000000 --- a/rep/ept/textsearch/textsearch.cc.gcov.html +++ /dev/null @@ -1,323 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/textsearch.cc</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.cc</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">115</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">72.2 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">83</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : -<span class="lineNum"> 2 </span> : /** @file -<span class="lineNum"> 3 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 4 </span> : * Fast full-text search -<span class="lineNum"> 5 </span> : */ -<span class="lineNum"> 6 </span> : -<span class="lineNum"> 7 </span> : /* -<span class="lineNum"> 8 </span> : * Copyright (C) 2007 Enrico Zini <enrico@debian.org> -<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/textsearch/textsearch.h> -<span class="lineNum"> 26 </span> : #include <ept/textsearch/maint/path.h> -<span class="lineNum"> 27 </span> : #include <ept/apt/apt.h> -<span class="lineNum"> 28 </span> : #include <ept/apt/packagerecord.h> -<span class="lineNum"> 29 </span> : //#include <ept/debtags/debtags.h> -<span class="lineNum"> 30 </span> : -<span class="lineNum"> 31 </span> : #include <wibble/regexp.h> -<span class="lineNum"> 32 </span> : #include <cctype> -<span class="lineNum"> 33 </span> : #include <cmath> -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : #include <xapian/queryparser.h> -<span class="lineNum"> 36 </span> : -<span class="lineNum"> 37 </span> : #include <algorithm> -<span class="lineNum"> 38 </span> : -<span class="lineNum"> 39 </span> : #include <iostream> -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : using namespace std; -<span class="lineNum"> 42 </span> : using namespace ept::apt; -<span class="lineNum"> 43 </span> : using namespace ept::debtags; -<span class="lineNum"> 44 </span> : -<span class="lineNum"> 45 </span> : namespace ept { -<span class="lineNum"> 46 </span> : namespace textsearch { -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : size_t max_index = 0; -<span class="lineNum"> 49 </span> : -<span class="lineNum"> 50 </span><span class="lineCov"> 11 : TextSearch::TextSearch()</span> -<span class="lineNum"> 51 </span><span class="lineCov"> 11 : : m_timestamp(0), m_stem("en")</span> -<span class="lineNum"> 52 </span> : { -<span class="lineNum"> 53 </span><span class="lineCov"> 22 : m_timestamp = Path::indexTimestamp();</span> -<span class="lineNum"> 54 </span><span class="lineCov"> 11 : if (m_timestamp)</span> -<span class="lineNum"> 55 </span><span class="lineCov"> 9 : m_db.add_database(Xapian::Database(Path::index()));</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 11 : }</span> -<span class="lineNum"> 57 </span> : -<span class="lineNum"> 58 </span><span class="lineCov"> 7 : std::string TextSearch::toLower(const std::string& str)</span> -<span class="lineNum"> 59 </span> : { -<span class="lineNum"> 60 </span><span class="lineCov"> 7 : std::string res;</span> -<span class="lineNum"> 61 </span><span class="lineCov"> 7 : res.reserve(str.size());</span> -<span class="lineNum"> 62 </span><span class="lineCov"> 44 : for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)</span> -<span class="lineNum"> 63 </span><span class="lineCov"> 37 : res += tolower(*i);</span> -<span class="lineNum"> 64 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 65 </span> : } -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span><span class="lineCov"> 3 : bool TextSearch::needsRebuild(apt::Apt& apt)</span> -<span class="lineNum"> 68 </span> : { -<span class="lineNum"> 69 </span><span class="lineCov"> 3 : return apt.timestamp() > m_timestamp;</span> -<span class="lineNum"> 70 </span> : } -<span class="lineNum"> 71 </span> : -<span class="lineNum"> 72 </span><span class="lineNoCov"> 0 : void TextSearch::normalize_and_add(Xapian::Document& doc, const std::string& term, int& pos) const</span> -<span class="lineNum"> 73 </span> : { -<span class="lineNum"> 74 </span><span class="lineNoCov"> 0 : string t = TextSearch::toLower(term);</span> -<span class="lineNum"> 75 </span><span class="lineNoCov"> 0 : string s = m_stem(t);</span> -<span class="lineNum"> 76 </span><span class="lineNoCov"> 0 : doc.add_term(t);</span> -<span class="lineNum"> 77 </span><span class="lineNoCov"> 0 : if (s != t)</span> -<span class="lineNum"> 78 </span><span class="lineNoCov"> 0 : doc.add_term(s);</span> -<span class="lineNum"> 79 </span><span class="lineNoCov"> 0 : }</span> -<span class="lineNum"> 80 </span> : -<span class="lineNum"> 81 </span><span class="lineCov"> 10 : bool TextSearch::rebuildIfNeeded(apt::Apt& apt, const std::vector<const TextSearch::ExtraIndexer*>& extraIndexers)</span> -<span class="lineNum"> 82 </span> : { -<span class="lineNum"> 83 </span> : // Check if a rebuild is needed, and keep a copy of the APT timestamp for -<span class="lineNum"> 84 </span> : // saving later -<span class="lineNum"> 85 </span><span class="lineCov"> 10 : time_t aptts = apt.timestamp();</span> -<span class="lineNum"> 86 </span><span class="lineCov"> 10 : if (aptts <= m_timestamp)</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 4 : return false;</span> -<span class="lineNum"> 88 </span> : -<span class="lineNum"> 89 </span> : // Reindex -<span class="lineNum"> 90 </span><span class="lineCov"> 6 : Xapian::WritableDatabase database(Xapian::Flint::open(Path::index(), Xapian::DB_CREATE_OR_OPEN));</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 6 : Xapian::TermGenerator termgen;</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 6 : termgen.set_stemmer(m_stem);</span> -<span class="lineNum"> 93 </span> : //database.begin_transaction(); -<span class="lineNum"> 94 </span><span class="lineCov"> 6 : PackageRecord rec;</span> -<span class="lineNum"> 95 </span><span class="lineCov"> 6 : size_t count = 0;</span> -<span class="lineNum"> 96 </span><span class="lineCov"> 2610 : for (Apt::record_iterator i = apt.recordBegin();</span> -<span class="lineNum"> 97 </span> : i != apt.recordEnd(); ++i, ++count) -<span class="lineNum"> 98 </span> : { -<span class="lineNum"> 99 </span> : // If we are testing, we can set a limit to how many packages we index, -<span class="lineNum"> 100 </span> : // to avoid it taking too much time -<span class="lineNum"> 101 </span><span class="lineCov"> 2604 : if (max_index != 0 && count > max_index)</span> -<span class="lineNum"> 102 </span><span class="lineNoCov"> 0 : break;</span> -<span class="lineNum"> 103 </span> : -<span class="lineNum"> 104 </span><span class="lineCov"> 2604 : rec.scan(*i);</span> -<span class="lineNum"> 105 </span> : -<span class="lineNum"> 106 </span><span class="lineCov"> 2604 : Xapian::Document doc;</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 2604 : doc.set_data(rec.package());</span> -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span><span class="lineCov"> 2604 : string pkgid = "XP" + rec.package();</span> -<span class="lineNum"> 110 </span> : //std::cerr << "Add " << pkgid << ": " << idx << std::endl; -<span class="lineNum"> 111 </span><span class="lineCov"> 2604 : doc.add_term(pkgid);</span> -<span class="lineNum"> 112 </span> : -<span class="lineNum"> 113 </span> : // Index tags as well -<span class="lineNum"> 114 </span><span class="lineCov"> 2604 : set<string> tags = rec.tag();</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 2604 : for (set<string>::const_iterator ti = tags.begin();</span> -<span class="lineNum"> 116 </span> : ti != tags.end(); ++ti) -<span class="lineNum"> 117 </span><span class="lineNoCov"> 0 : doc.add_term("XT"+*ti);</span> -<span class="lineNum"> 118 </span> : -<span class="lineNum"> 119 </span><span class="lineCov"> 2604 : termgen.set_document(doc);</span> -<span class="lineNum"> 120 </span><span class="lineCov"> 2604 : termgen.index_text_without_positions(rec.package());</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 5208 : termgen.index_text_without_positions(rec.description());</span> -<span class="lineNum"> 122 </span> : -<span class="lineNum"> 123 </span> : // Add the values -<span class="lineNum"> 124 </span><span class="lineCov"> 5208 : doc.add_value(VAL_APT_INSTALLED_SIZE, Xapian::sortable_serialise(rec.installedSize()));</span> -<span class="lineNum"> 125 </span><span class="lineCov"> 2604 : doc.add_value(VAL_APT_PACKAGE_SIZE, Xapian::sortable_serialise(rec.packageSize()));</span> -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span><span class="lineCov"> 2604 : if (m_timestamp)</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 2170 : database.replace_document(pkgid, doc);</span> -<span class="lineNum"> 129 </span> : else -<span class="lineNum"> 130 </span><span class="lineCov"> 434 : database.add_document(doc);</span> -<span class="lineNum"> 131 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 132 </span> : -<span class="lineNum"> 133 </span> : //database.commit_transaction(); -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span><span class="lineCov"> 6 : if (!m_timestamp)</span> -<span class="lineNum"> 136 </span><span class="lineCov"> 1 : m_db.add_database(Xapian::Database(Path::index()));</span> -<span class="lineNum"> 137 </span> : else -<span class="lineNum"> 138 </span><span class="lineCov"> 5 : m_db.reopen();</span> -<span class="lineNum"> 139 </span> : -<span class="lineNum"> 140 </span><span class="lineCov"> 6 : m_timestamp = aptts;</span> -<span class="lineNum"> 141 </span> : -<span class="lineNum"> 142 </span><span class="lineCov"> 6 : Path::setTimestamp(aptts);</span> -<span class="lineNum"> 143 </span> : -<span class="lineNum"> 144 </span><span class="lineCov"> 6 : return true;</span> -<span class="lineNum"> 145 </span> : } -<span class="lineNum"> 146 </span> : -<span class="lineNum"> 147 </span><span class="lineCov"> 2 : Xapian::Query TextSearch::makeORQuery(const std::string& keywords) const</span> -<span class="lineNum"> 148 </span> : { -<span class="lineNum"> 149 </span><span class="lineCov"> 2 : wibble::Tokenizer tok(keywords, "[A-Za-z0-9_-]+", REG_EXTENDED);</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 4 : return makeORQuery(tok.begin(), tok.end());</span> -<span class="lineNum"> 151 </span> : } -<span class="lineNum"> 152 </span> : -<span class="lineNum"> 153 </span><span class="lineCov"> 1 : Xapian::Query TextSearch::makePartialORQuery(const std::string& keywords) const</span> -<span class="lineNum"> 154 </span> : { -<span class="lineNum"> 155 </span><span class="lineCov"> 1 : wibble::Tokenizer tok(keywords, "[A-Za-z0-9_-]+", REG_EXTENDED);</span> -<span class="lineNum"> 156 </span><span class="lineCov"> 1 : vector<string> tokens;</span> -<span class="lineNum"> 157 </span> : // FIXME: make the Tokenizer iterators properly iterable -<span class="lineNum"> 158 </span><span class="lineCov"> 2 : for (wibble::Tokenizer::const_iterator i = tok.begin();</span> -<span class="lineNum"> 159 </span> : i != tok.end(); ++i) -<span class="lineNum"> 160 </span><span class="lineCov"> 1 : tokens.push_back(*i);</span> -<span class="lineNum"> 161 </span> : // Add all the terms starting with 'last' -<span class="lineNum"> 162 </span><span class="lineCov"> 1 : if (!tokens.empty())</span> -<span class="lineNum"> 163 </span> : { -<span class="lineNum"> 164 </span><span class="lineCov"> 1 : string& last = *tokens.rbegin();</span> -<span class="lineNum"> 165 </span><span class="lineCov"> 1 : if (last.size() == 1)</span> -<span class="lineNum"> 166 </span> : // Ignore one-letter partial terms: they make the query uselessly -<span class="lineNum"> 167 </span> : // large and slow, and it's worth just to wait for more characters -<span class="lineNum"> 168 </span> : // to come -<span class="lineNum"> 169 </span><span class="lineNoCov"> 0 : tokens.resize(tokens.size() - 1);</span> -<span class="lineNum"> 170 </span> : else -<span class="lineNum"> 171 </span><span class="lineCov"> 1 : copy(m_db.allterms_begin(last), m_db.allterms_end(last), back_inserter(tokens));</span> -<span class="lineNum"> 172 </span> : /* -<span class="lineNum"> 173 </span> : for (Xapian::TermIterator t = m_db.allterms_begin(last); -<span class="lineNum"> 174 </span> : t != m_db.allterms_end(last); ++t) -<span class="lineNum"> 175 </span> : tokens.push_back(*t); -<span class="lineNum"> 176 </span> : */ -<span class="lineNum"> 177 </span> : } -<span class="lineNum"> 178 </span><span class="lineCov"> 1 : return makeORQuery(tokens.begin(), tokens.end());</span> -<span class="lineNum"> 179 </span> : } -<span class="lineNum"> 180 </span> : -<span class="lineNum"> 181 </span><span class="lineCov"> 10 : Xapian::docid TextSearch::docidByName(const std::string& pkgname) const</span> -<span class="lineNum"> 182 </span> : { -<span class="lineNum"> 183 </span><span class="lineCov"> 10 : Xapian::PostingIterator i = m_db.postlist_begin("XP"+pkgname);</span> -<span class="lineNum"> 184 </span><span class="lineCov"> 10 : if (i == m_db.postlist_end("XP"+pkgname))</span> -<span class="lineNum"> 185 </span><span class="lineCov"> 5 : return 0;</span> -<span class="lineNum"> 186 </span> : else -<span class="lineNum"> 187 </span><span class="lineCov"> 5 : return *i;</span> -<span class="lineNum"> 188 </span> : } -<span class="lineNum"> 189 </span> : -<span class="lineNum"> 190 </span> : struct TagFilter : public Xapian::ExpandDecider -<span class="lineNum"> 191 </span><span class="lineCov"> 4 : {</span> -<span class="lineNum"> 192 </span><span class="lineNoCov"> 0 : virtual bool operator()(const std::string &term) const { return term[0] == 'T'; }</span> -<span class="lineNum"> 193 </span> : }; -<span class="lineNum"> 194 </span> : -<span class="lineNum"> 195 </span><span class="lineCov"> 2 : static TagFilter tagFilter;</span> -<span class="lineNum"> 196 </span> : -<span class="lineNum"> 197 </span><span class="lineNoCov"> 0 : vector<string> TextSearch::expand(Xapian::Enquire& enq) const</span> -<span class="lineNum"> 198 </span> : { -<span class="lineNum"> 199 </span><span class="lineNoCov"> 0 : Xapian::RSet rset;</span> -<span class="lineNum"> 200 </span> : // Get the top 5 results as 'good ones' to compute the search expansion -<span class="lineNum"> 201 </span><span class="lineNoCov"> 0 : Xapian::MSet mset = enq.get_mset(0, 5);</span> -<span class="lineNum"> 202 </span><span class="lineNoCov"> 0 : for (Xapian::MSet::iterator i = mset.begin(); i != mset.end(); ++i)</span> -<span class="lineNum"> 203 </span><span class="lineNoCov"> 0 : rset.add_document(i);</span> -<span class="lineNum"> 204 </span> : // Get the expanded set, only expanding the query with tag names -<span class="lineNum"> 205 </span><span class="lineNoCov"> 0 : Xapian::ESet eset = enq.get_eset(5, rset, &tagFilter);</span> -<span class="lineNum"> 206 </span><span class="lineNoCov"> 0 : vector<string> res;</span> -<span class="lineNum"> 207 </span><span class="lineNoCov"> 0 : for (Xapian::ESetIterator i = eset.begin(); i != eset.end(); ++i)</span> -<span class="lineNum"> 208 </span><span class="lineNoCov"> 0 : res.push_back(*i);</span> -<span class="lineNum"> 209 </span><span class="lineNoCov"> 0 : return res;</span> -<span class="lineNum"> 210 </span> : } -<span class="lineNum"> 211 </span> : -<span class="lineNum"> 212 </span><span class="lineNoCov"> 0 : Xapian::Query TextSearch::makeRelatedQuery(const std::string& pkgname) const</span> -<span class="lineNum"> 213 </span> : { -<span class="lineNum"> 214 </span><span class="lineNoCov"> 0 : Xapian::Enquire enquire(db());</span> -<span class="lineNum"> 215 </span> : -<span class="lineNum"> 216 </span> : // Retrieve the document for the given package -<span class="lineNum"> 217 </span><span class="lineNoCov"> 0 : enquire.set_query(Xapian::Query("XP"+pkgname));</span> -<span class="lineNum"> 218 </span><span class="lineNoCov"> 0 : Xapian::MSet matches = enquire.get_mset(0, 1);</span> -<span class="lineNum"> 219 </span><span class="lineNoCov"> 0 : Xapian::MSetIterator mi = matches.begin();</span> -<span class="lineNum"> 220 </span><span class="lineNoCov"> 0 : if (mi == matches.end()) return Xapian::Query();</span> -<span class="lineNum"> 221 </span><span class="lineNoCov"> 0 : Xapian::Document doc = mi.get_document();</span> -<span class="lineNum"> 222 </span> : -<span class="lineNum"> 223 </span> : // Return the query to get the list of similar documents -<span class="lineNum"> 224 </span><span class="lineNoCov"> 0 : return Xapian::Query(Xapian::Query::OP_OR, doc.termlist_begin(), doc.termlist_end());</span> -<span class="lineNum"> 225 </span> : } -<span class="lineNum"> 226 </span> : -<span class="lineNum"> 227 </span><span class="lineCov"> 4 : double TextSearch::getDoubleValue(const std::string& pkgname, Xapian::valueno val_id) const</span> -<span class="lineNum"> 228 </span> : { -<span class="lineNum"> 229 </span><span class="lineCov"> 4 : Xapian::docid id = docidByName(pkgname);</span> -<span class="lineNum"> 230 </span><span class="lineCov"> 4 : if (id == 0)</span> -<span class="lineNum"> 231 </span><span class="lineCov"> 2 : return 0.0;</span> -<span class="lineNum"> 232 </span><span class="lineCov"> 2 : Xapian::Document doc = db().get_document(id);</span> -<span class="lineNum"> 233 </span><span class="lineCov"> 2 : string val = doc.get_value(val_id);</span> -<span class="lineNum"> 234 </span><span class="lineCov"> 2 : if (val.empty())</span> -<span class="lineNum"> 235 </span><span class="lineNoCov"> 0 : return 0.0;</span> -<span class="lineNum"> 236 </span> : else -<span class="lineNum"> 237 </span><span class="lineCov"> 2 : return Xapian::sortable_unserialise(val);</span> -<span class="lineNum"> 238 </span> : } -<span class="lineNum"> 239 </span> : -<span class="lineNum"> 240 </span><span class="lineCov"> 4 : int TextSearch::getIntValue(const std::string& pkgname, Xapian::valueno val_id) const</span> -<span class="lineNum"> 241 </span> : { -<span class="lineNum"> 242 </span><span class="lineCov"> 4 : Xapian::docid id = docidByName(pkgname);</span> -<span class="lineNum"> 243 </span><span class="lineCov"> 4 : if (id == 0)</span> -<span class="lineNum"> 244 </span><span class="lineCov"> 2 : return 0;</span> -<span class="lineNum"> 245 </span><span class="lineCov"> 2 : Xapian::Document doc = db().get_document(id);</span> -<span class="lineNum"> 246 </span><span class="lineCov"> 2 : string val = doc.get_value(val_id);</span> -<span class="lineNum"> 247 </span><span class="lineCov"> 2 : if (val.empty())</span> -<span class="lineNum"> 248 </span><span class="lineNoCov"> 0 : return 0;</span> -<span class="lineNum"> 249 </span> : else -<span class="lineNum"> 250 </span><span class="lineCov"> 2 : return (int)nearbyint(Xapian::sortable_unserialise(val));</span> -<span class="lineNum"> 251 </span> : } -<span class="lineNum"> 252 </span> : -<span class="lineNum"> 253 </span> : } -<span class="lineNum"> 254 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 255 </span> : -<span class="lineNum"> 256 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/textsearch.h.gcov.html b/rep/ept/textsearch/textsearch.h.gcov.html deleted file mode 100644 index d46dca8..0000000 --- a/rep/ept/textsearch/textsearch.h.gcov.html +++ /dev/null @@ -1,286 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/textsearch.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented 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> : #ifndef EPT_TEXTSEARCH_TEXTSEARCH_H -<span class="lineNum"> 2 </span> : #define EPT_TEXTSEARCH_TEXTSEARCH_H -<span class="lineNum"> 3 </span> : -<span class="lineNum"> 4 </span> : /** @file -<span class="lineNum"> 5 </span> : * @author Enrico Zini <enrico@enricozini.org> -<span class="lineNum"> 6 </span> : * Fast full-text search -<span class="lineNum"> 7 </span> : */ -<span class="lineNum"> 8 </span> : -<span class="lineNum"> 9 </span> : /* -<span class="lineNum"> 10 </span> : * Copyright (C) 2007 Enrico Zini <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 <xapian.h> -<span class="lineNum"> 28 </span> : #include <vector> -<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 apt { -<span class="lineNum"> 33 </span> : class Apt; -<span class="lineNum"> 34 </span> : class PackageRecord; -<span class="lineNum"> 35 </span> : } -<span class="lineNum"> 36 </span> : namespace debtags { -<span class="lineNum"> 37 </span> : class Debtags; -<span class="lineNum"> 38 </span> : } -<span class="lineNum"> 39 </span> : namespace textsearch { -<span class="lineNum"> 40 </span> : -<span class="lineNum"> 41 </span> : // Allocate value indexes for known values -<span class="lineNum"> 42 </span> : const Xapian::valueno VAL_APT_INSTALLED_SIZE = 1; -<span class="lineNum"> 43 </span> : const Xapian::valueno VAL_APT_PACKAGE_SIZE = 2; -<span class="lineNum"> 44 </span> : const Xapian::valueno VAL_POPCON = 10; -<span class="lineNum"> 45 </span> : const Xapian::valueno VAL_ITERATING_RATING = 20; -<span class="lineNum"> 46 </span> : const Xapian::valueno VAL_ITERATING_FUNCTIONALITY = 21; -<span class="lineNum"> 47 </span> : const Xapian::valueno VAL_ITERATING_USABILITY = 22; -<span class="lineNum"> 48 </span> : const Xapian::valueno VAL_ITERATING_SECURITY = 23; -<span class="lineNum"> 49 </span> : const Xapian::valueno VAL_ITERATING_PERFORMANCE = 24; -<span class="lineNum"> 50 </span> : const Xapian::valueno VAL_ITERATING_QUALITY = 25; -<span class="lineNum"> 51 </span> : const Xapian::valueno VAL_ITERATING_SUPPORT = 26; -<span class="lineNum"> 52 </span> : const Xapian::valueno VAL_ITERATING_ADOPTION = 27; -<span class="lineNum"> 53 </span> : // If you need to index a value and cannot edit this file, feel free to use any -<span class="lineNum"> 54 </span> : // value starting from 1000000 -<span class="lineNum"> 55 </span> : -<span class="lineNum"> 56 </span> : -<span class="lineNum"> 57 </span> : /* -<span class="lineNum"> 58 </span> : Fallback on apt scan searches when index is not present -<span class="lineNum"> 59 </span> : -<span class="lineNum"> 60 </span> : Explicitly decide at instantiation (or at any other time) if a rebuild should -<span class="lineNum"> 61 </span> : be performed. Just adding a 'rebuildIfNeeded' method would be enough. -<span class="lineNum"> 62 </span> : -<span class="lineNum"> 63 </span> : 17:14 #xapian < enrico> Hello. I'm finally in a position of writing a library to maintain -<span class="lineNum"> 64 </span> : a xapian index with Debian package descriptions in a Debian system -<span class="lineNum"> 65 </span> : 17:14 #xapian < enrico> I have a question, though -<span class="lineNum"> 66 </span> : 17:14 #xapian < enrico> The descriptions change regularly as people run 'apt-get update' -<span class="lineNum"> 67 </span> : 17:15 #xapian < enrico> I'd need to have a way to update the description index after -<span class="lineNum"> 68 </span> : apt-get update, without rebuilding it from scratch -<span class="lineNum"> 69 </span> : 17:15 #xapian < enrico> Is there some documentation on how to do that? I can't exactly -<span class="lineNum"> 70 </span> : tell Xapian "the new description for package foo is this" because -<span class="lineNum"> 71 </span> : I'd need the xapian id -<span class="lineNum"> 72 </span> : 19:11 #xapian < omega> you can add a unique term with a boolean prefix? -<span class="lineNum"> 73 </span> : 19:11 #xapian < omega> like Qpackage-name -<span class="lineNum"> 74 </span> : 19:11 #xapian < omega> then you search for it and replace_document -<span class="lineNum"> 75 </span> : 19:24 #xapian < richardb> Or indeed, you use the "replace_document()" form which takes a -<span class="lineNum"> 76 </span> : unique_id term. -<span class="lineNum"> 77 </span> : 19:25 #xapian < richardb> Xapian::docid replace_document(const std::string & -<span class="lineNum"> 78 </span> : unique_term, -<span class="lineNum"> 79 </span> : 19:25 #xapian < richardb> const Xapian::Document & -<span class="lineNum"> 80 </span> : document); -<span class="lineNum"> 81 </span> : 19:43 #xapian < enrico> unique term -<span class="lineNum"> 82 </span> : 19:43 #xapian < enrico> nice! -<span class="lineNum"> 83 </span> : 19:44 #xapian < enrico> can I use a non-alpha prefix, like :package-name ? -<span class="lineNum"> 84 </span> : 19:45 #xapian < enrico> or pkg:package-name -<span class="lineNum"> 85 </span> : 19:45 #xapian < enrico> I suppose I can -<span class="lineNum"> 86 </span> : */ -<span class="lineNum"> 87 </span> : -<span class="lineNum"> 88 </span> : /** -<span class="lineNum"> 89 </span> : * Maintains and accesses a Xapian index of package descriptions. -<span class="lineNum"> 90 </span> : * -<span class="lineNum"> 91 </span> : * Contrarily to Debtags and Popcon, TextSearch does not attempt to create the -<span class="lineNum"> 92 </span> : * index in the home directory if no system index is found and it is not -<span class="lineNum"> 93 </span> : * running as root: this is to avoid secretly building large indexes (>50Mb) -<span class="lineNum"> 94 </span> : * in the home directory of users. -<span class="lineNum"> 95 </span> : * -<span class="lineNum"> 96 </span> : * The idea then is to have root keep the index up to date, possibly running a -<span class="lineNum"> 97 </span> : * reindexing tool once a day, or after an apt-get update. -<span class="lineNum"> 98 </span> : * -<span class="lineNum"> 99 </span> : * This works because the full text search index is useful even if it is -<span class="lineNum"> 100 </span> : * slightly out of date. -<span class="lineNum"> 101 </span> : */ -<span class="lineNum"> 102 </span> : class TextSearch -<span class="lineNum"> 103 </span><span class="lineCov"> 11 : {</span> -<span class="lineNum"> 104 </span> : protected: -<span class="lineNum"> 105 </span> : time_t m_timestamp; -<span class="lineNum"> 106 </span> : Xapian::Database m_db; -<span class="lineNum"> 107 </span> : Xapian::Stem m_stem; -<span class="lineNum"> 108 </span> : -<span class="lineNum"> 109 </span> : /// Return a lowercased copy of the string -<span class="lineNum"> 110 </span> : static std::string toLower(const std::string& str); -<span class="lineNum"> 111 </span> : -<span class="lineNum"> 112 </span> : /** -<span class="lineNum"> 113 </span> : * Add normalised tokens computed from the string to the document doc. -<span class="lineNum"> 114 </span> : * -<span class="lineNum"> 115 </span> : * pos is used as a sequence generator for entering the token position in -<span class="lineNum"> 116 </span> : * the document. -<span class="lineNum"> 117 </span> : */ -<span class="lineNum"> 118 </span> : void normalize_and_add(Xapian::Document& doc, const std::string& term, int& pos) const; -<span class="lineNum"> 119 </span> : -<span class="lineNum"> 120 </span> : public: -<span class="lineNum"> 121 </span> : struct ExtraIndexer -<span class="lineNum"> 122 </span> : { -<span class="lineNum"> 123 </span><span class="lineNoCov"> 0 : virtual ~ExtraIndexer() {}</span> -<span class="lineNum"> 124 </span> : virtual void operator()(Xapian::Document& doc, const apt::PackageRecord& rec) const = 0; -<span class="lineNum"> 125 </span> : }; -<span class="lineNum"> 126 </span> : -<span class="lineNum"> 127 </span> : TextSearch(); -<span class="lineNum"> 128 </span> : -<span class="lineNum"> 129 </span> : /// Access the Xapian database -<span class="lineNum"> 130 </span><span class="lineCov"> 3 : Xapian::Database& db() { return m_db; }</span> -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span> : /// Access the Xapian database -<span class="lineNum"> 133 </span><span class="lineCov"> 4 : const Xapian::Database& db() const { return m_db; }</span> -<span class="lineNum"> 134 </span> : -<span class="lineNum"> 135 </span> : /// Timestamp of when the Xapian database was last updated -<span class="lineNum"> 136 </span><span class="lineCov"> 3 : time_t timestamp() const { return m_timestamp; }</span> -<span class="lineNum"> 137 </span> : -<span class="lineNum"> 138 </span> : /// Returns true if the index has data -<span class="lineNum"> 139 </span><span class="lineCov"> 3 : bool hasData() const { return m_timestamp > 0; }</span> -<span class="lineNum"> 140 </span> : -<span class="lineNum"> 141 </span> : /// Returns true if the index is older than the Apt database information -<span class="lineNum"> 142 </span> : bool needsRebuild(apt::Apt& apt); -<span class="lineNum"> 143 </span> : -<span class="lineNum"> 144 </span> : /** -<span class="lineNum"> 145 </span> : * Rebuild the index if needed. -<span class="lineNum"> 146 </span> : * -<span class="lineNum"> 147 </span> : * Allow to specify functors that contribute to the indexing. -<span class="lineNum"> 148 </span> : * -<span class="lineNum"> 149 </span> : * @note This requires write access to the index directory. -<span class="lineNum"> 150 </span> : * @note This is not the main way to update the index: it is provided here -<span class="lineNum"> 151 </span> : * only as a way to build a draft index for the library tests -<span class="lineNum"> 152 </span> : */ -<span class="lineNum"> 153 </span> : bool rebuildIfNeeded( -<span class="lineNum"> 154 </span> : apt::Apt& apt, -<span class="lineNum"> 155 </span> : const std::vector<const ExtraIndexer*>& extraIndexers = std::vector<const ExtraIndexer*>()); -<span class="lineNum"> 156 </span> : -<span class="lineNum"> 157 </span> : /** -<span class="lineNum"> 158 </span> : * Retrieve a Xapian docid by package name -<span class="lineNum"> 159 </span> : */ -<span class="lineNum"> 160 </span> : Xapian::docid docidByName(const std::string& pkgname) const; -<span class="lineNum"> 161 </span> : -<span class="lineNum"> 162 </span> : /** -<span class="lineNum"> 163 </span> : * Tokenize the string and build an OR query with the resulting keywords -<span class="lineNum"> 164 </span> : */ -<span class="lineNum"> 165 </span> : Xapian::Query makeORQuery(const std::string& keywords) const; -<span class="lineNum"> 166 </span> : -<span class="lineNum"> 167 </span> : /** -<span class="lineNum"> 168 </span> : * Tokenize the string and build an OR query with the resulting keywords. -<span class="lineNum"> 169 </span> : * -<span class="lineNum"> 170 </span> : * The last token in keywords is considered to be typed only partially, to -<span class="lineNum"> 171 </span> : * implement proper search-as-you-type. -<span class="lineNum"> 172 </span> : */ -<span class="lineNum"> 173 </span> : Xapian::Query makePartialORQuery(const std::string& keywords) const; -<span class="lineNum"> 174 </span> : -<span class="lineNum"> 175 </span> : /** -<span class="lineNum"> 176 </span> : * Build a query with the given keywords, specified as iterators of strings -<span class="lineNum"> 177 </span> : */ -<span class="lineNum"> 178 </span> : template<typename ITER> -<span class="lineNum"> 179 </span><span class="lineCov"> 3 : Xapian::Query makeORQuery(const ITER& begin, const ITER& end) const</span> -<span class="lineNum"> 180 </span> : { -<span class="lineNum"> 181 </span><span class="lineCov"> 3 : std::vector<std::string> terms;</span> -<span class="lineNum"> 182 </span> : // Insert both the lowercased and the stemmed lowercased query terms -<span class="lineNum"> 183 </span><span class="lineCov"> 10 : for (ITER i = begin; i != end; ++i)</span> -<span class="lineNum"> 184 </span> : { -<span class="lineNum"> 185 </span><span class="lineCov"> 7 : std::string t = toLower(*i);</span> -<span class="lineNum"> 186 </span><span class="lineCov"> 7 : std::string s = m_stem(t);</span> -<span class="lineNum"> 187 </span><span class="lineCov"> 7 : terms.push_back(t);</span> -<span class="lineNum"> 188 </span><span class="lineCov"> 7 : if (s != t)</span> -<span class="lineNum"> 189 </span><span class="lineNoCov"> 0 : terms.push_back("Z" + s);</span> -<span class="lineNum"> 190 </span> : } -<span class="lineNum"> 191 </span><span class="lineCov"> 3 : return Xapian::Query(Xapian::Query::OP_OR, terms.begin(), terms.end());</span> -<span class="lineNum"> 192 </span> : } -<span class="lineNum"> 193 </span> : -<span class="lineNum"> 194 </span> : /// Return a list of tag-based terms that can be used to expand an OR query -<span class="lineNum"> 195 </span> : std::vector<std::string> expand(Xapian::Enquire& enq) const; -<span class="lineNum"> 196 </span> : -<span class="lineNum"> 197 </span> : // std::vector<std::string> similar(const std::string& pkg); -<span class="lineNum"> 198 </span> : -<span class="lineNum"> 199 </span> : /** -<span class="lineNum"> 200 </span> : * Create a query to look for packages similar to the given one -<span class="lineNum"> 201 </span> : */ -<span class="lineNum"> 202 </span> : Xapian::Query makeRelatedQuery(const std::string& pkgname) const; -<span class="lineNum"> 203 </span> : -<span class="lineNum"> 204 </span> : /** -<span class="lineNum"> 205 </span> : * Get the integer value for -<span class="lineNum"> 206 </span> : */ -<span class="lineNum"> 207 </span> : double getDoubleValue(const std::string& pkgname, Xapian::valueno val_id) const; -<span class="lineNum"> 208 </span> : -<span class="lineNum"> 209 </span> : /** -<span class="lineNum"> 210 </span> : * Get the integer value for -<span class="lineNum"> 211 </span> : */ -<span class="lineNum"> 212 </span> : int getIntValue(const std::string& pkgname, Xapian::valueno val_id) const; -<span class="lineNum"> 213 </span> : }; -<span class="lineNum"> 214 </span> : -<span class="lineNum"> 215 </span> : } -<span class="lineNum"> 216 </span> : } -<span class="lineNum"> 217 </span> : -<span class="lineNum"> 218 </span> : // vim:set ts=4 sw=4: -<span class="lineNum"> 219 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/textsearch/textsearch.test.h.gcov.html b/rep/ept/textsearch/textsearch.test.h.gcov.html deleted file mode 100644 index 230103d..0000000 --- a/rep/ept/textsearch/textsearch.test.h.gcov.html +++ /dev/null @@ -1,233 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/textsearch/textsearch.test.h</title> - <link rel="stylesheet" type="text/css" href="../../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../../index.html">directory</a> - <a href="index.html">ept/textsearch</a> - textsearch.test.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">74</td> - </tr> - <tr> - <td class="headerItem" width="20%">Code covered:</td> - <td class="headerValue" width="20%">95.9 %</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Executed lines:</td> - <td class="headerValue" width="20%">71</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*- -<span class="lineNum"> 2 </span> : /* -<span class="lineNum"> 3 </span> : * popcon test -<span class="lineNum"> 4 </span> : * -<span class="lineNum"> 5 </span> : * Copyright (C) 2007 Enrico Zini <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/test.h> -<span class="lineNum"> 23 </span> : #include <ept/textsearch/textsearch.h> -<span class="lineNum"> 24 </span> : #include <ept/textsearch/maint/path.h> -<span class="lineNum"> 25 </span> : #include <ept/apt/apt.h> -<span class="lineNum"> 26 </span> : #include <wibble/sys/fs.h> -<span class="lineNum"> 27 </span> : #include <set> -<span class="lineNum"> 28 </span> : -<span class="lineNum"> 29 </span> : namespace ept { -<span class="lineNum"> 30 </span> : namespace textsearch { -<span class="lineNum"> 31 </span> : extern size_t max_index; -<span class="lineNum"> 32 </span> : } -<span class="lineNum"> 33 </span> : } -<span class="lineNum"> 34 </span> : -<span class="lineNum"> 35 </span> : using namespace std; -<span class="lineNum"> 36 </span> : using namespace ept; -<span class="lineNum"> 37 </span> : using namespace ept::textsearch; -<span class="lineNum"> 38 </span> : using namespace ept::apt; -<span class="lineNum"> 39 </span> : -<span class="lineNum"> 40 </span> : struct DirMaker -<span class="lineNum"> 41 </span> : { -<span class="lineNum"> 42 </span><span class="lineCov"> 6 : DirMaker(const std::string& name)</span> -<span class="lineNum"> 43 </span> : { -<span class="lineNum"> 44 </span><span class="lineCov"> 6 : wibble::sys::fs::mkdirIfMissing(name, 0755);</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 46 </span> : }; -<span class="lineNum"> 47 </span> : -<span class="lineNum"> 48 </span> : struct TestTextsearch : AptTestEnvironment -<span class="lineNum"> 49 </span><span class="lineCov"> 6 : {</span> -<span class="lineNum"> 50 </span> : DirMaker md; -<span class="lineNum"> 51 </span> : Path::OverrideIndexDir oid; -<span class="lineNum"> 52 </span> : Apt apt; -<span class="lineNum"> 53 </span> : TextSearch textsearch; -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span><span class="lineCov"> 6 : TestTextsearch()</span> -<span class="lineNum"> 56 </span><span class="lineCov"> 6 : : md( TEST_ENV_DIR "xapian"), oid( TEST_ENV_DIR "xapian")</span> -<span class="lineNum"> 57 </span> : { -<span class="lineNum"> 58 </span> : try { -<span class="lineNum"> 59 </span><span class="lineCov"> 6 : ept::textsearch::max_index = 1000;</span> -<span class="lineNum"> 60 </span><span class="lineCov"> 6 : textsearch.rebuildIfNeeded(apt);</span> -<span class="lineNum"> 61 </span><span class="lineNoCov"> 0 : } catch (Xapian::Error& e) {</span> -<span class="lineNum"> 62 </span><span class="lineNoCov"> 0 : cerr << e.get_type() << " " << e.get_msg() << " " << e.get_context() << endl;</span> -<span class="lineNum"> 63 </span><span class="lineNoCov"> 0 : throw;</span> -<span class="lineNum"> 64 </span> : } -<span class="lineNum"> 65 </span><span class="lineCov"> 6 : }</span> -<span class="lineNum"> 66 </span> : -<span class="lineNum"> 67 </span> : // Access an empty index -<span class="lineNum"> 68 </span><span class="lineCov"> 1 : Test empty()</span> -<span class="lineNum"> 69 </span> : { -<span class="lineNum"> 70 </span><span class="lineCov"> 1 : Path::OverrideIndexDir oid("./empty");</span> -<span class="lineNum"> 71 </span><span class="lineCov"> 1 : TextSearch empty;</span> -<span class="lineNum"> 72 </span><span class="lineCov"> 1 : assert_eq(empty.timestamp(), 0);</span> -<span class="lineNum"> 73 </span><span class="lineCov"> 2 : assert(!empty.hasData());</span> -<span class="lineNum"> 74 </span><span class="lineCov"> 2 : assert(empty.needsRebuild(apt));</span> -<span class="lineNum"> 75 </span> : /* -<span class="lineNum"> 76 </span> : Xapian::Enquire enq(empty.db()); -<span class="lineNum"> 77 </span> : empty.search(enq, "apt"); -<span class="lineNum"> 78 </span> : Xapian::MSet matches = enq.get_mset(0, 100); -<span class="lineNum"> 79 </span> : assert_eq(matches.size(), 0u); -<span class="lineNum"> 80 </span> : */ -<span class="lineNum"> 81 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 82 </span> : -<span class="lineNum"> 83 </span> : // Very basic access -<span class="lineNum"> 84 </span><span class="lineCov"> 1 : Test basicAccess()</span> -<span class="lineNum"> 85 </span> : { -<span class="lineNum"> 86 </span><span class="lineCov"> 1 : assert(textsearch.hasData());</span> -<span class="lineNum"> 87 </span><span class="lineCov"> 2 : assert(textsearch.timestamp() > 0);</span> -<span class="lineNum"> 88 </span><span class="lineCov"> 2 : assert(!textsearch.needsRebuild(apt));</span> -<span class="lineNum"> 89 </span> : -<span class="lineNum"> 90 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span> -<span class="lineNum"> 91 </span><span class="lineCov"> 2 : enq.set_query(textsearch.makeORQuery("sgml"));</span> -<span class="lineNum"> 92 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span> -<span class="lineNum"> 93 </span><span class="lineCov"> 1 : assert(matches.size() > 0);</span> -<span class="lineNum"> 94 </span> : -<span class="lineNum"> 95 </span> : // See if the apt package is among the results -<span class="lineNum"> 96 </span><span class="lineCov"> 1 : set<string> results;</span> -<span class="lineNum"> 97 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span> -<span class="lineNum"> 98 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span> -<span class="lineNum"> 99 </span><span class="lineCov"> 1 : assert(results.find("sp") != results.end());</span> -<span class="lineNum"> 100 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 101 </span> : -<span class="lineNum"> 102 </span> : // Alternate access using intermediate Xapian::Query objects -<span class="lineNum"> 103 </span><span class="lineCov"> 1 : Test queryAccess()</span> -<span class="lineNum"> 104 </span> : { -<span class="lineNum"> 105 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span> -<span class="lineNum"> 106 </span><span class="lineCov"> 1 : enq.set_query(textsearch.makeORQuery("sgml"));</span> -<span class="lineNum"> 107 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span> -<span class="lineNum"> 108 </span><span class="lineCov"> 1 : assert(matches.size() > 0);</span> -<span class="lineNum"> 109 </span> : -<span class="lineNum"> 110 </span> : // See if the apt package is among the results -<span class="lineNum"> 111 </span><span class="lineCov"> 1 : set<string> results;</span> -<span class="lineNum"> 112 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span> -<span class="lineNum"> 113 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span> -<span class="lineNum"> 114 </span><span class="lineCov"> 1 : assert(results.find("sp") != results.end());</span> -<span class="lineNum"> 115 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 116 </span> : -<span class="lineNum"> 117 </span> : // Try makePartialORQuery -<span class="lineNum"> 118 </span><span class="lineCov"> 1 : Test partialOrQuery()</span> -<span class="lineNum"> 119 </span> : { -<span class="lineNum"> 120 </span><span class="lineCov"> 1 : Xapian::Enquire enq(textsearch.db());</span> -<span class="lineNum"> 121 </span><span class="lineCov"> 1 : enq.set_query(textsearch.makePartialORQuery("sgml"));</span> -<span class="lineNum"> 122 </span><span class="lineCov"> 1 : Xapian::MSet matches = enq.get_mset(0, 100);</span> -<span class="lineNum"> 123 </span><span class="lineCov"> 1 : assert(matches.size() > 0);</span> -<span class="lineNum"> 124 </span> : -<span class="lineNum"> 125 </span> : // See if the apt package is among the results -<span class="lineNum"> 126 </span><span class="lineCov"> 1 : set<string> results;</span> -<span class="lineNum"> 127 </span><span class="lineCov"> 10 : for (Xapian::MSetIterator i = matches.begin(); i != matches.end(); ++i)</span> -<span class="lineNum"> 128 </span><span class="lineCov"> 10 : results.insert(i.get_document().get_data());</span> -<span class="lineNum"> 129 </span><span class="lineCov"> 1 : assert(results.find("sp") != results.end());</span> -<span class="lineNum"> 130 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 131 </span> : -<span class="lineNum"> 132 </span> : // Try docidByName -<span class="lineNum"> 133 </span><span class="lineCov"> 1 : Test docidByName()</span> -<span class="lineNum"> 134 </span> : { -<span class="lineNum"> 135 </span><span class="lineCov"> 1 : assert(textsearch.docidByName("sp") != 0);</span> -<span class="lineNum"> 136 </span><span class="lineCov"> 2 : assert_eq(textsearch.docidByName("thereisnopackagewiththisname"), 0u);</span> -<span class="lineNum"> 137 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 138 </span> : -<span class="lineNum"> 139 </span> : // Access values -<span class="lineNum"> 140 </span><span class="lineCov"> 1 : Test values()</span> -<span class="lineNum"> 141 </span> : { -<span class="lineNum"> 142 </span><span class="lineCov"> 1 : assert(textsearch.hasData());</span> -<span class="lineNum"> 143 </span><span class="lineCov"> 2 : assert(textsearch.timestamp() > 0);</span> -<span class="lineNum"> 144 </span><span class="lineCov"> 2 : assert(!textsearch.needsRebuild(apt));</span> -<span class="lineNum"> 145 </span> : -<span class="lineNum"> 146 </span> : double dval; -<span class="lineNum"> 147 </span><span class="lineCov"> 2 : dval = textsearch.getDoubleValue("autoconf", VAL_APT_INSTALLED_SIZE);</span> -<span class="lineNum"> 148 </span><span class="lineCov"> 2 : assert(dval == 2408);</span> -<span class="lineNum"> 149 </span><span class="lineCov"> 2 : dval = textsearch.getDoubleValue("autoconf", VAL_APT_PACKAGE_SIZE);</span> -<span class="lineNum"> 150 </span><span class="lineCov"> 2 : assert(dval == 741486);</span> -<span class="lineNum"> 151 </span><span class="lineCov"> 2 : assert_eq(textsearch.getDoubleValue("thereisnopackagewiththisname", VAL_APT_INSTALLED_SIZE), 0.0);</span> -<span class="lineNum"> 152 </span><span class="lineCov"> 2 : assert_eq(textsearch.getDoubleValue("thereisnopackagewiththisname", VAL_APT_PACKAGE_SIZE), 0.0);</span> -<span class="lineNum"> 153 </span> : -<span class="lineNum"> 154 </span> : int val; -<span class="lineNum"> 155 </span><span class="lineCov"> 2 : val = textsearch.getIntValue("autoconf", VAL_APT_INSTALLED_SIZE);</span> -<span class="lineNum"> 156 </span><span class="lineCov"> 2 : assert(val == 2408);</span> -<span class="lineNum"> 157 </span><span class="lineCov"> 2 : val = textsearch.getIntValue("autoconf", VAL_APT_PACKAGE_SIZE);</span> -<span class="lineNum"> 158 </span><span class="lineCov"> 2 : assert(val == 741486);</span> -<span class="lineNum"> 159 </span><span class="lineCov"> 1 : cout << val;</span> -<span class="lineNum"> 160 </span><span class="lineCov"> 2 : assert_eq(textsearch.getIntValue("thereisnopackagewiththisname", VAL_APT_INSTALLED_SIZE), 0);</span> -<span class="lineNum"> 161 </span><span class="lineCov"> 2 : assert_eq(textsearch.getIntValue("thereisnopackagewiththisname", VAL_APT_PACKAGE_SIZE), 0);</span> -<span class="lineNum"> 162 </span><span class="lineCov"> 1 : }</span> -<span class="lineNum"> 163 </span> : -<span class="lineNum"> 164 </span> : }; -<span class="lineNum"> 165 </span> : -<span class="lineNum"> 166 </span> : // vim:set ts=4 sw=4: -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> diff --git a/rep/ept/token.h.gcov.html b/rep/ept/token.h.gcov.html deleted file mode 100644 index 8a750ee..0000000 --- a/rep/ept/token.h.gcov.html +++ /dev/null @@ -1,122 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<html lang="en"> - -<head> - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> - <title>LCOV - lcov.info - ept/token.h</title> - <link rel="stylesheet" type="text/css" href="../gcov.css"> -</head> - -<body> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="title">LTP GCOV extension - code coverage report</td></tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - - <tr> - <td width="100%"> - <table cellpadding=1 border=0 width="100%"> - <tr> - <td class="headerItem" width="20%">Current view:</td> - <td class="headerValue" width="80%" colspan=4><a href="../index.html">directory</a> - <a href="index.html">ept</a> - token.h</td> - </tr> - <tr> - <td class="headerItem" width="20%">Test:</td> - <td class="headerValue" width="80%" colspan=4>lcov.info</td> - </tr> - <tr> - <td class="headerItem" width="20%">Date:</td> - <td class="headerValue" width="20%">2008-08-14</td> - <td width="20%"></td> - <td class="headerItem" width="20%">Instrumented lines:</td> - <td class="headerValue" width="20%">16</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%">13</td> - </tr> - </table> - </td> - </tr> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - </table> - - <table cellpadding=0 cellspacing=0 border=0> - <tr> - <td><br></td> - </tr> - <tr> - <td><pre class="source"> -<span class="lineNum"> 1 </span> : // -*- C++ -*- -<span class="lineNum"> 2 </span> : #include <wibble/mixin.h> -<span class="lineNum"> 3 </span> : #include <string> -<span class="lineNum"> 4 </span> : -<span class="lineNum"> 5 </span> : #ifndef EPT_TOKEN_H -<span class="lineNum"> 6 </span> : #define EPT_TOKEN_H -<span class="lineNum"> 7 </span> : -<span class="lineNum"> 8 </span> : namespace ept { -<span class="lineNum"> 9 </span> : -<span class="lineNum"> 10 </span><span class="lineCov"> 9994 : struct Token : wibble::mixin::Comparable< Token > {</span> -<span class="lineNum"> 11 </span> : std::string _id; // formatted as package[_version] -<span class="lineNum"> 12 </span><span class="lineNoCov"> 0 : std::string id() const { return _id; }</span> -<span class="lineNum"> 13 </span> : -<span class="lineNum"> 14 </span><span class="lineCov"> 9755 : Token() : _id( "" ) {}</span> -<span class="lineNum"> 15 </span><span class="lineCov"> 8 : Token( std::string s ) : _id( s ) {}</span> -<span class="lineNum"> 16 </span> : -<span class="lineNum"> 17 </span><span class="lineCov"> 1831 : std::string version() const {</span> -<span class="lineNum"> 18 </span> : return _id.find( '_' ) == std::string::npos ? "" : -<span class="lineNum"> 19 </span><span class="lineCov"> 1831 : std::string( _id, _id.find( '_' ) + 1, _id.size() );</span> -<span class="lineNum"> 20 </span> : } -<span class="lineNum"> 21 </span> : -<span class="lineNum"> 22 </span><span class="lineCov"> 7883 : std::string package() const {</span> -<span class="lineNum"> 23 </span> : return std::string( _id, 0, -<span class="lineNum"> 24 </span> : _id.find( '_' ) == std::string::npos ? -<span class="lineNum"> 25 </span><span class="lineCov"> 7883 : _id.size() : _id.find( '_' ) );</span> -<span class="lineNum"> 26 </span> : } -<span class="lineNum"> 27 </span> : -<span class="lineNum"> 28 </span> : bool isDesktop() const { -<span class="lineNum"> 29 </span> : return std::string( _id, 0, 8 ) == "desktop:"; -<span class="lineNum"> 30 </span> : } -<span class="lineNum"> 31 </span> : -<span class="lineNum"> 32 </span> : std::string desktop() const { -<span class="lineNum"> 33 </span> : return isDesktop() ? std::string( _id, 8, _id.size() ) : ""; -<span class="lineNum"> 34 </span> : } -<span class="lineNum"> 35 </span> : -<span class="lineNum"> 36 </span><span class="lineCov"> 17 : bool hasVersion() const {</span> -<span class="lineNum"> 37 </span><span class="lineCov"> 17 : return version() != "";</span> -<span class="lineNum"> 38 </span> : } -<span class="lineNum"> 39 </span> : -<span class="lineNum"> 40 </span><span class="lineCov"> 1 : bool valid() const {</span> -<span class="lineNum"> 41 </span><span class="lineCov"> 1 : return _id != "";</span> -<span class="lineNum"> 42 </span> : } -<span class="lineNum"> 43 </span> : -<span class="lineNum"> 44 </span><span class="lineCov"> 58 : bool operator<=( const Token &o ) const {</span> -<span class="lineNum"> 45 </span><span class="lineCov"> 58 : return _id <= o._id;</span> -<span class="lineNum"> 46 </span> : } -<span class="lineNum"> 47 </span> : }; -<span class="lineNum"> 48 </span> : -<span class="lineNum"> 49 </span> : } -<span class="lineNum"> 50 </span> : -<span class="lineNum"> 51 </span><span class="lineNoCov"> 0 : inline std::ostream &operator<<( std::ostream &o, const ept::Token &t ) {</span> -<span class="lineNum"> 52 </span><span class="lineNoCov"> 0 : return o << t.id();</span> -<span class="lineNum"> 53 </span> : } -<span class="lineNum"> 54 </span> : -<span class="lineNum"> 55 </span> : #endif -</pre> - </td> - </tr> - </table> - <br> - - <table width="100%" border=0 cellspacing=0 cellpadding=0> - <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr> - <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LTP GCOV extension version 1.6</a></td></tr> - </table> - <br> - -</body> -</html> |