16 #ifndef PKGLIB_ORDERLIST_H
17 #define PKGLIB_ORDERLIST_H
21 #include <apt-pkg/macros.h>
41 std::string *FileList;
42 DepIterator Loops[20];
45 unsigned short *Flags;
49 __deprecated
bool VisitNode(
PkgIterator Pkg) {
return VisitNode(Pkg,
"UNKNOWN"); };
54 bool VisitProvides(DepIterator Pkg,
bool Critical);
57 bool DepUnPackCrit(DepIterator D);
58 bool DepUnPackPreD(DepIterator D);
59 bool DepUnPackPre(DepIterator D);
60 bool DepUnPackDep(DepIterator D);
61 bool DepConfigure(DepIterator D);
62 bool DepRemove(DepIterator D);
65 bool AddLoop(DepIterator D);
66 bool CheckDep(DepIterator D);
71 static int OrderCompareA(
const void *a,
const void *b);
72 static int OrderCompareB(
const void *a,
const void *b);
85 enum Flags {Added = (1 << 0), AddPending = (1 << 1),
86 Immediate = (1 << 2), Loop = (1 << 3),
87 UnPacked = (1 << 4), Configured = (1 << 5),
91 States = (UnPacked | Configured | Removed)};
94 inline bool IsFlag(
PkgIterator Pkg,
unsigned long F) {
return (Flags[Pkg->ID] & F) == F;};
95 inline bool IsFlag(
Package *Pkg,
unsigned long F) {
return (Flags[Pkg->
ID] & F) == F;};
96 void Flag(
PkgIterator Pkg,
unsigned long State,
unsigned long F) {Flags[Pkg->ID] = (Flags[Pkg->ID] & (~F)) | State;};
97 inline void Flag(
PkgIterator Pkg,
unsigned long F) {Flags[Pkg->ID] |= F;};
98 inline void Flag(
Package *Pkg,
unsigned long F) {Flags[Pkg->
ID] |= F;};
100 inline void RmFlag(
Package *Pkg,
unsigned long F) {Flags[Pkg->
ID] &= ~F;};
102 inline bool IsNow(
PkgIterator Pkg) {
return (Flags[Pkg->ID] & (States & (~Removed))) == 0;};
104 void WipeFlags(
unsigned long F);
105 void SetFileList(std::string *FileList) {this->FileList = FileList;};
108 inline iterator begin() {
return List;};
109 inline iterator end() {
return End;};
110 inline void push_back(
Package *Pkg) {*(End++) = Pkg;};
111 inline void push_back(
PkgIterator Pkg) {*(End++) = Pkg;};
112 inline void pop_back() {End--;};
113 inline bool empty() {
return End == List;};
114 inline unsigned int size() {
return End - List;};
117 bool OrderCritical();
118 bool OrderUnpack(std::string *FileList = 0);
119 bool OrderConfigure();