]>
Commit | Line | Data |
---|---|---|
b9179170 MV |
1 | #ifndef APT_PRIVATE_OUTPUT_H |
2 | #define APT_PRIVATE_OUTPUT_H | |
3 | ||
a0c19a21 | 4 | #include <apt-pkg/configuration.h> |
453b82a3 | 5 | #include <apt-pkg/pkgcache.h> |
63ff4208 | 6 | #include <apt-pkg/macros.h> |
b9179170 | 7 | |
a0c19a21 | 8 | #include <functional> |
b9179170 MV |
9 | #include <fstream> |
10 | #include <string> | |
d9e518c6 | 11 | #include <iostream> |
b9179170 | 12 | |
b9179170 MV |
13 | // forward declaration |
14 | class pkgCacheFile; | |
15 | class CacheFile; | |
b9179170 MV |
16 | class pkgDepCache; |
17 | class pkgRecords; | |
18 | ||
19 | ||
63ff4208 DK |
20 | APT_PUBLIC extern std::ostream c0out; |
21 | APT_PUBLIC extern std::ostream c1out; | |
22 | APT_PUBLIC extern std::ostream c2out; | |
23 | APT_PUBLIC extern std::ofstream devnull; | |
24 | APT_PUBLIC extern unsigned int ScreenWidth; | |
b9179170 | 25 | |
d9e518c6 | 26 | APT_PUBLIC bool InitOutput(std::basic_streambuf<char> * const out = std::cout.rdbuf()); |
63ff4208 DK |
27 | |
28 | void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, | |
1a68655d DK |
29 | pkgCache::VerIterator const &V, std::ostream &out, |
30 | std::string const &format); | |
b9179170 MV |
31 | |
32 | ||
0c8b6001 | 33 | // helper to describe global state |
d39d7f88 DK |
34 | APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now); |
35 | APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now); | |
63ff4208 | 36 | |
f6777222 | 37 | template<class Container, class PredicateC, class DisplayP, class DisplayV> bool ShowList(std::ostream &out, std::string const &Title, |
a0c19a21 | 38 | Container const &cont, |
9112f777 DK |
39 | PredicateC Predicate, |
40 | DisplayP PkgDisplay, | |
41 | DisplayV VerboseDisplay) | |
a0c19a21 DK |
42 | { |
43 | size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0; | |
44 | int ScreenUsed = 0; | |
45 | bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false); | |
46 | bool printedTitle = false; | |
47 | ||
48 | for (auto const &Pkg: cont) | |
49 | { | |
50 | if (Predicate(Pkg) == false) | |
51 | continue; | |
52 | ||
53 | if (printedTitle == false) | |
54 | { | |
55 | out << Title; | |
56 | printedTitle = true; | |
57 | } | |
58 | ||
59 | if (ShowVersions == true) | |
60 | { | |
61 | out << std::endl << " " << PkgDisplay(Pkg); | |
62 | std::string const verbose = VerboseDisplay(Pkg); | |
63 | if (verbose.empty() == false) | |
64 | out << " (" << verbose << ")"; | |
65 | } | |
66 | else | |
67 | { | |
68 | std::string const PkgName = PkgDisplay(Pkg); | |
69 | if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth) | |
70 | { | |
71 | out << std::endl << " "; | |
72 | ScreenUsed = 0; | |
73 | } | |
74 | else if (ScreenUsed != 0) | |
75 | { | |
76 | out << " "; | |
77 | ++ScreenUsed; | |
78 | } | |
79 | out << PkgName; | |
80 | ScreenUsed += PkgName.length(); | |
81 | } | |
82 | } | |
83 | ||
84 | if (printedTitle == true) | |
85 | { | |
86 | out << std::endl; | |
87 | return false; | |
88 | } | |
89 | return true; | |
90 | } | |
a0c19a21 | 91 | |
b9179170 MV |
92 | void ShowNew(std::ostream &out,CacheFile &Cache); |
93 | void ShowDel(std::ostream &out,CacheFile &Cache); | |
94 | void ShowKept(std::ostream &out,CacheFile &Cache); | |
95 | void ShowUpgraded(std::ostream &out,CacheFile &Cache); | |
96 | bool ShowDowngraded(std::ostream &out,CacheFile &Cache); | |
97 | bool ShowHold(std::ostream &out,CacheFile &Cache); | |
98 | ||
99 | bool ShowEssential(std::ostream &out,CacheFile &Cache); | |
100 | ||
101 | void Stats(std::ostream &out, pkgDepCache &Dep); | |
102 | ||
103 | // prompting | |
fd789740 DK |
104 | bool YnPrompt(char const * const Question, bool Default=true); |
105 | bool AnalPrompt(std::string const &Question, const char *Text); | |
b9179170 | 106 | |
9112f777 DK |
107 | std::string PrettyFullName(pkgCache::PkgIterator const &Pkg); |
108 | std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); | |
109 | std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache); | |
110 | std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); | |
111 | std::function<std::string(pkgCache::PkgIterator const &)> CurrentToCandidateVersion(pkgCacheFile * const Cache); | |
112 | std::string EmptyString(pkgCache::PkgIterator const &); | |
113 | bool AlwaysTrue(pkgCache::PkgIterator const &); | |
a0c19a21 | 114 | |
b9179170 | 115 | #endif |