1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
|
<!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 - /usr/include/apt-pkg/algorithms.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">usr/include/apt-pkg</a> - algorithms.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%">66.7 %</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> : // -*- mode: cpp; mode: fold -*-
<span class="lineNum"> 2 </span> : // Description /*{{{*/
<span class="lineNum"> 3 </span> : // $Id: algorithms.h,v 1.10 2001/05/22 04:17:41 jgg Exp $
<span class="lineNum"> 4 </span> : /* ######################################################################
<span class="lineNum"> 5 </span> :
<span class="lineNum"> 6 </span> : Algorithms - A set of misc algorithms
<span class="lineNum"> 7 </span> :
<span class="lineNum"> 8 </span> : This simulate class displays what the ordering code has done and
<span class="lineNum"> 9 </span> : analyses it with a fresh new dependency cache. In this way we can
<span class="lineNum"> 10 </span> : see all of the effects of an upgrade run.
<span class="lineNum"> 11 </span> :
<span class="lineNum"> 12 </span> : pkgDistUpgrade computes an upgrade that causes as many packages as
<span class="lineNum"> 13 </span> : possible to move to the newest verison.
<span class="lineNum"> 14 </span> :
<span class="lineNum"> 15 </span> : pkgApplyStatus sets the target state based on the content of the status
<span class="lineNum"> 16 </span> : field in the status file. It is important to get proper crash recovery.
<span class="lineNum"> 17 </span> :
<span class="lineNum"> 18 </span> : pkgFixBroken corrects a broken system so that it is in a sane state.
<span class="lineNum"> 19 </span> :
<span class="lineNum"> 20 </span> : pkgAllUpgrade attempts to upgade as many packages as possible but
<span class="lineNum"> 21 </span> : without installing new packages.
<span class="lineNum"> 22 </span> :
<span class="lineNum"> 23 </span> : The problem resolver class contains a number of complex algorithms
<span class="lineNum"> 24 </span> : to try to best-guess an upgrade state. It solves the problem of
<span class="lineNum"> 25 </span> : maximizing the number of install state packages while having no broken
<span class="lineNum"> 26 </span> : packages.
<span class="lineNum"> 27 </span> :
<span class="lineNum"> 28 </span> : ##################################################################### */
<span class="lineNum"> 29 </span> : /*}}}*/
<span class="lineNum"> 30 </span> : #ifndef PKGLIB_ALGORITHMS_H
<span class="lineNum"> 31 </span> : #define PKGLIB_ALGORITHMS_H
<span class="lineNum"> 32 </span> :
<span class="lineNum"> 33 </span> :
<span class="lineNum"> 34 </span> : #include <apt-pkg/packagemanager.h>
<span class="lineNum"> 35 </span> : #include <apt-pkg/depcache.h>
<span class="lineNum"> 36 </span> : #include <apt-pkg/acquire.h>
<span class="lineNum"> 37 </span> :
<span class="lineNum"> 38 </span> : #include <iostream>
<span class="lineNum"> 39 </span> :
<span class="lineNum"> 40 </span> : using std::ostream;
<span class="lineNum"> 41 </span> :
<span class="lineNum"> 42 </span> : class pkgSimulate : public pkgPackageManager
<span class="lineNum"> 43 </span> : {
<span class="lineNum"> 44 </span> : protected:
<span class="lineNum"> 45 </span> :
<span class="lineNum"> 46 </span> : class Policy : public pkgDepCache::Policy
<span class="lineNum"> 47 </span> : {
<span class="lineNum"> 48 </span> : pkgDepCache *Cache;
<span class="lineNum"> 49 </span> : public:
<span class="lineNum"> 50 </span> :
<span class="lineNum"> 51 </span> : virtual VerIterator GetCandidateVer(PkgIterator Pkg)
<span class="lineNum"> 52 </span> : {
<span class="lineNum"> 53 </span> : return (*Cache)[Pkg].CandidateVerIter(*Cache);
<span class="lineNum"> 54 </span> : }
<span class="lineNum"> 55 </span> :
<span class="lineNum"> 56 </span> : Policy(pkgDepCache *Cache) : Cache(Cache) {};
<span class="lineNum"> 57 </span> : };
<span class="lineNum"> 58 </span> :
<span class="lineNum"> 59 </span> : unsigned char *Flags;
<span class="lineNum"> 60 </span> :
<span class="lineNum"> 61 </span> : Policy iPolicy;
<span class="lineNum"> 62 </span> : pkgDepCache Sim;
<span class="lineNum"> 63 </span> :
<span class="lineNum"> 64 </span> : // The Actuall installation implementation
<span class="lineNum"> 65 </span> : virtual bool Install(PkgIterator Pkg,string File);
<span class="lineNum"> 66 </span> : virtual bool Configure(PkgIterator Pkg);
<span class="lineNum"> 67 </span> : virtual bool Remove(PkgIterator Pkg,bool Purge);
<span class="lineNum"> 68 </span> :
<span class="lineNum"> 69 </span> : private:
<span class="lineNum"> 70 </span> : void ShortBreaks();
<span class="lineNum"> 71 </span> : void Describe(PkgIterator iPkg,ostream &out,bool Current,bool Candidate);
<span class="lineNum"> 72 </span> :
<span class="lineNum"> 73 </span> : public:
<span class="lineNum"> 74 </span> :
<span class="lineNum"> 75 </span> : pkgSimulate(pkgDepCache *Cache);
<span class="lineNum"> 76 </span> : };
<span class="lineNum"> 77 </span> :
<span class="lineNum"> 78 </span> : class pkgProblemResolver
<span class="lineNum"> 79 </span> : {
<span class="lineNum"> 80 </span> : pkgDepCache &Cache;
<span class="lineNum"> 81 </span> : typedef pkgCache::PkgIterator PkgIterator;
<span class="lineNum"> 82 </span> : typedef pkgCache::VerIterator VerIterator;
<span class="lineNum"> 83 </span> : typedef pkgCache::DepIterator DepIterator;
<span class="lineNum"> 84 </span> : typedef pkgCache::PrvIterator PrvIterator;
<span class="lineNum"> 85 </span> : typedef pkgCache::Version Version;
<span class="lineNum"> 86 </span> : typedef pkgCache::Package Package;
<span class="lineNum"> 87 </span> :
<span class="lineNum"> 88 </span> : enum Flags {Protected = (1 << 0), PreInstalled = (1 << 1),
<span class="lineNum"> 89 </span> : Upgradable = (1 << 2), ReInstateTried = (1 << 3),
<span class="lineNum"> 90 </span> : ToRemove = (1 << 4)};
<span class="lineNum"> 91 </span> : signed short *Scores;
<span class="lineNum"> 92 </span> : unsigned char *Flags;
<span class="lineNum"> 93 </span> : bool Debug;
<span class="lineNum"> 94 </span> :
<span class="lineNum"> 95 </span> : // Sort stuff
<span class="lineNum"> 96 </span> : static pkgProblemResolver *This;
<span class="lineNum"> 97 </span> : static int ScoreSort(const void *a,const void *b);
<span class="lineNum"> 98 </span> :
<span class="lineNum"> 99 </span> : struct PackageKill
<span class="lineNum"> 100 </span> : {
<span class="lineNum"> 101 </span> : PkgIterator Pkg;
<span class="lineNum"> 102 </span> : DepIterator Dep;
<span class="lineNum"> 103 </span> : };
<span class="lineNum"> 104 </span> :
<span class="lineNum"> 105 </span> : void MakeScores();
<span class="lineNum"> 106 </span> : bool DoUpgrade(pkgCache::PkgIterator Pkg);
<span class="lineNum"> 107 </span> :
<span class="lineNum"> 108 </span> : public:
<span class="lineNum"> 109 </span> :
<span class="lineNum"> 110 </span><span class="lineCov"> 4 : inline void Protect(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= Protected;};</span>
<span class="lineNum"> 111 </span><span class="lineNoCov"> 0 : inline void Remove(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] |= ToRemove;};</span>
<span class="lineNum"> 112 </span><span class="lineCov"> 4 : inline void Clear(pkgCache::PkgIterator Pkg) {Flags[Pkg->ID] &= ~(Protected | ToRemove);};</span>
<span class="lineNum"> 113 </span> :
<span class="lineNum"> 114 </span> : // Try to intelligently resolve problems by installing and removing packages
<span class="lineNum"> 115 </span> : bool Resolve(bool BrokenFix = false);
<span class="lineNum"> 116 </span> :
<span class="lineNum"> 117 </span> : // Try to resolve problems only by using keep
<span class="lineNum"> 118 </span> : bool ResolveByKeep();
<span class="lineNum"> 119 </span> :
<span class="lineNum"> 120 </span> : // Install all protected packages
<span class="lineNum"> 121 </span> : void InstallProtect();
<span class="lineNum"> 122 </span> :
<span class="lineNum"> 123 </span> : pkgProblemResolver(pkgDepCache *Cache);
<span class="lineNum"> 124 </span> : ~pkgProblemResolver();
<span class="lineNum"> 125 </span> : };
<span class="lineNum"> 126 </span> :
<span class="lineNum"> 127 </span> : bool pkgDistUpgrade(pkgDepCache &Cache);
<span class="lineNum"> 128 </span> : bool pkgApplyStatus(pkgDepCache &Cache);
<span class="lineNum"> 129 </span> : bool pkgFixBroken(pkgDepCache &Cache);
<span class="lineNum"> 130 </span> : bool pkgAllUpgrade(pkgDepCache &Cache);
<span class="lineNum"> 131 </span> : bool pkgMinimizeUpgrade(pkgDepCache &Cache);
<span class="lineNum"> 132 </span> :
<span class="lineNum"> 133 </span> : void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List);
<span class="lineNum"> 134 </span> :
<span class="lineNum"> 135 </span> : bool ListUpdate(pkgAcquireStatus &progress, pkgSourceList &List, int PulseInterval=0);
<span class="lineNum"> 136 </span> :
<span class="lineNum"> 137 </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>
|