pkgcachegen.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // -*- mode: cpp; mode: fold -*-
  2. // Description /*{{{*/
  3. // $Id: pkgcachegen.h,v 1.4 1998/07/07 04:17:05 jgg Exp $
  4. /* ######################################################################
  5. Package Cache Generator - Generator for the cache structure.
  6. This builds the cache structure from the abstract package list parser.
  7. ##################################################################### */
  8. /*}}}*/
  9. // Header section: pkglib
  10. #ifndef PKGLIB_PKGCACHEGEN_H
  11. #define PKGLIB_PKGCACHEGEN_H
  12. #ifdef __GNUG__
  13. #pragma interface "pkglib/pkgcachegen.h"
  14. #endif
  15. #include <pkglib/pkgcache.h>
  16. class pkgCacheGenerator
  17. {
  18. public:
  19. class ListParser;
  20. protected:
  21. DynamicMMap &Map;
  22. pkgCache Cache;
  23. string PkgFileName;
  24. pkgCache::PackageFile *CurrentFile;
  25. bool NewPackage(pkgCache::PkgIterator &Pkg,string Pkg);
  26. bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List);
  27. unsigned long NewVersion(pkgCache::VerIterator &Ver,string VerStr,unsigned long Next);
  28. unsigned long WriteUniqString(const char *S,unsigned int Size);
  29. inline unsigned long WriteUniqString(string S) {return WriteUniqString(S);};
  30. public:
  31. // This is the abstract package list parser class.
  32. class ListParser
  33. {
  34. pkgCacheGenerator *Owner;
  35. friend pkgCacheGenerator;
  36. protected:
  37. inline unsigned long WriteUniqString(string S) {return Owner->WriteUniqString(S);};
  38. inline unsigned long WriteUniqString(const char *S,unsigned int Size) {return Owner->WriteUniqString(S,Size);};
  39. inline unsigned long WriteString(string S) {return Owner->Map.WriteString(S);};
  40. inline unsigned long WriteString(const char *S,unsigned int Size) {return Owner->Map.WriteString(S,Size);};
  41. bool NewDepends(pkgCache::VerIterator Ver,string Package,
  42. string Version,unsigned int Op,
  43. unsigned int Type);
  44. bool NewProvides(pkgCache::VerIterator Ver,string Package,string Version);
  45. public:
  46. // These all operate against the current section
  47. virtual string Package() = 0;
  48. virtual string Version() = 0;
  49. virtual bool NewVersion(pkgCache::VerIterator Ver) = 0;
  50. virtual bool UsePackage(pkgCache::PkgIterator Pkg,
  51. pkgCache::VerIterator Ver) = 0;
  52. virtual unsigned long Offset() = 0;
  53. virtual unsigned long Size() = 0;
  54. virtual bool Step() = 0;
  55. virtual ~ListParser() {};
  56. };
  57. friend ListParser;
  58. bool SelectFile(string File,unsigned long Flags = 0);
  59. bool MergeList(ListParser &List);
  60. pkgCacheGenerator(DynamicMMap &Map);
  61. ~pkgCacheGenerator();
  62. };
  63. #endif