]>
git.saurik.com Git - apt.git/blob - apt-pkg/pkgcachegen.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: pkgcachegen.h,v 1.19 2002/07/08 03:13:30 jgg Exp $
4 /* ######################################################################
6 Package Cache Generator - Generator for the cache structure.
8 This builds the cache structure from the abstract package list parser.
9 Each archive source has it's own list parser that is instantiated by
10 the caller to provide data for the generator.
12 Parts of the cache are created by this generator class while other
13 parts are created by the list parser. The list parser is responsible
14 for creating version, depends and provides structures, and some of
17 ##################################################################### */
19 #ifndef PKGLIB_PKGCACHEGEN_H
20 #define PKGLIB_PKGCACHEGEN_H
23 #pragma interface "apt-pkg/pkgcachegen.h"
26 #include <apt-pkg/pkgcache.h>
27 #include <apt-pkg/md5.h>
34 class pkgCacheGenerator
38 pkgCache::StringItem
*UniqHash
[26];
43 friend class ListParser
;
52 pkgCache::PackageFile
*CurrentFile
;
54 // Flag file dependencies
57 bool NewPackage(pkgCache::PkgIterator
&Pkg
,const string
&Pkg
);
58 bool NewFileVer(pkgCache::VerIterator
&Ver
,ListParser
&List
);
59 bool NewFileDesc(pkgCache::DescIterator
&Desc
,ListParser
&List
);
60 unsigned long NewVersion(pkgCache::VerIterator
&Ver
,const string
&VerStr
,unsigned long Next
);
61 map_ptrloc
NewDescription(pkgCache::DescIterator
&Desc
,const string
&Lang
,const MD5SumValue
&md5sum
,map_ptrloc Next
);
65 unsigned long WriteUniqString(const char *S
,unsigned int Size
);
66 inline unsigned long WriteUniqString(const string
&S
) {return WriteUniqString(S
.c_str(),S
.length());};
68 void DropProgress() {Progress
= 0;};
69 bool SelectFile(const string
&File
,const string
&Site
,pkgIndexFile
const &Index
,
70 unsigned long Flags
= 0);
71 bool MergeList(ListParser
&List
,pkgCache::VerIterator
*Ver
= 0);
72 inline pkgCache
&GetCache() {return Cache
;};
73 inline pkgCache::PkgFileIterator
GetCurFile()
74 {return pkgCache::PkgFileIterator(Cache
,CurrentFile
);};
76 bool HasFileDeps() {return FoundFileDeps
;};
77 bool MergeFileProvides(ListParser
&List
);
79 pkgCacheGenerator(DynamicMMap
*Map
,OpProgress
*Progress
);
83 // This is the abstract package list parser class.
84 class pkgCacheGenerator::ListParser
86 pkgCacheGenerator
*Owner
;
87 friend class pkgCacheGenerator
;
90 pkgCache::VerIterator OldDepVer
;
91 map_ptrloc
*OldDepLast
;
93 // Flag file dependencies
98 inline unsigned long WriteUniqString(string S
) {return Owner
->WriteUniqString(S
);};
99 inline unsigned long WriteUniqString(const char *S
,unsigned int Size
) {return Owner
->WriteUniqString(S
,Size
);};
100 inline unsigned long WriteString(const string
&S
) {return Owner
->Map
.WriteString(S
);};
101 inline unsigned long WriteString(const char *S
,unsigned int Size
) {return Owner
->Map
.WriteString(S
,Size
);};
102 bool NewDepends(pkgCache::VerIterator Ver
,const string
&Package
,
103 const string
&Version
,unsigned int Op
,
105 bool NewProvides(pkgCache::VerIterator Ver
,const string
&Package
,
106 const string
&Version
);
110 // These all operate against the current section
111 virtual string
Package() = 0;
112 virtual string
Version() = 0;
113 virtual bool NewVersion(pkgCache::VerIterator Ver
) = 0;
114 virtual string
Description() = 0;
115 virtual string
DescriptionLanguage() = 0;
116 virtual MD5SumValue
Description_md5() = 0;
117 virtual unsigned short VersionHash() = 0;
118 virtual bool UsePackage(pkgCache::PkgIterator Pkg
,
119 pkgCache::VerIterator Ver
) = 0;
120 virtual unsigned long Offset() = 0;
121 virtual unsigned long Size() = 0;
123 virtual bool Step() = 0;
125 inline bool HasFileDeps() {return FoundFileDeps
;};
126 virtual bool CollectFileProvides(pkgCache
&Cache
,
127 pkgCache::VerIterator Ver
) {return true;};
129 ListParser() : FoundFileDeps(false) {};
130 virtual ~ListParser() {};
133 bool pkgMakeStatusCache(pkgSourceList
&List
,OpProgress
&Progress
,
134 MMap
**OutMap
= 0,bool AllowMem
= false);
135 bool pkgMakeOnlyStatusCache(OpProgress
&Progress
,DynamicMMap
**OutMap
);
137 #ifdef APT_COMPATIBILITY
138 #if APT_COMPATIBILITY != 986
139 #warning "Using APT_COMPATIBILITY"
141 MMap
*pkgMakeStatusCacheMem(pkgSourceList
&List
,OpProgress
&Progress
)
144 if (pkgMakeStatusCache(List
,Progress
,&Map
,true) == false)