20 #ifndef PKGLIB_TAGFILE_H
21 #define PKGLIB_TAGFILE_H
27 #ifndef APT_8_CLEANER_HEADERS
28 #include <apt-pkg/fileutl.h>
37 unsigned int Indexes[256];
38 unsigned int AlphaIndexes[0x100];
39 unsigned int TagCount;
45 inline static unsigned long AlphaHash(
const char *Text,
const char *End = 0)
47 unsigned long Res = 0;
48 for (; Text != End && *Text !=
':' && *Text != 0; Text++)
49 Res = ((
unsigned long)(*Text) & 0xDF) ^ (Res << 1);
58 inline bool operator ==(
const pkgTagSection &rhs) {
return Section == rhs.Section;};
59 inline bool operator !=(
const pkgTagSection &rhs) {
return Section != rhs.Section;};
61 bool Find(
const char *Tag,
const char *&Start,
const char *&End)
const;
62 bool Find(
const char *Tag,
unsigned int &Pos)
const;
63 std::string FindS(
const char *Tag)
const;
64 signed int FindI(
const char *Tag,
signed long Default = 0)
const ;
65 unsigned long long FindULL(
const char *Tag,
unsigned long long const &Default = 0)
const;
66 bool FindFlag(
const char *Tag,
unsigned long &Flags,
67 unsigned long Flag)
const;
68 bool static const FindFlag(
unsigned long &Flags,
unsigned long Flag,
69 const char* Start,
const char* Stop);
70 bool Scan(
const char *Start,
unsigned long MaxLength);
71 inline unsigned long size()
const {
return Stop - Section;};
73 virtual void TrimRecord(
bool BeforeRecord,
const char* &End);
75 inline unsigned int Count()
const {
return TagCount;};
76 bool Exists(
const char*
const Tag);
78 inline void Get(
const char *&Start,
const char *&Stop,
unsigned int I)
const
79 {Start = Section + Indexes[I]; Stop = Section + Indexes[I+1];}
81 inline void GetSection(
const char *&Start,
const char *&Stop)
const
98 bool Resize(
unsigned long long const newSize);
103 unsigned long Offset();
120 extern const char **TFRewritePackageOrder;
121 extern const char **TFRewriteSourceOrder;
123 bool TFRewrite(FILE *Output,
pkgTagSection const &Tags,
const char *Order[],
Definition: tagfile.cc:30
Definition: tagfile.h:114