12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // -*- mode: cpp; mode: fold -*-
- // Description /*{{{*/
- // $Id: pkgrecords.cc,v 1.8 2003/09/02 04:52:16 mdz Exp $
- /* ######################################################################
-
- Package Records - Allows access to complete package description records
- directly from the file.
-
- ##################################################################### */
- /*}}}*/
- // Include Files /*{{{*/
- #include<config.h>
- #include <apt-pkg/pkgrecords.h>
- #include <apt-pkg/indexfile.h>
- #include <apt-pkg/error.h>
- #include <apt-pkg/pkgcache.h>
- #include <apt-pkg/cacheiterators.h>
- #include <stddef.h>
- #include <vector>
- #include <apti18n.h>
- /*}}}*/
- // Records::pkgRecords - Constructor /*{{{*/
- // ---------------------------------------------------------------------
- /* This will create the necessary structures to access the status files */
- pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache),
- Files(Cache.HeaderP->PackageFileCount)
- {
- for (pkgCache::PkgFileIterator I = Cache.FileBegin();
- I.end() == false; ++I)
- {
- const pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(I.IndexType());
- if (Type == 0)
- {
- _error->Error(_("Index file type '%s' is not supported"),I.IndexType());
- return;
- }
- Files[I->ID] = Type->CreatePkgParser(I);
- if (Files[I->ID] == 0)
- return;
- }
- }
- /*}}}*/
- // Records::~pkgRecords - Destructor /*{{{*/
- // ---------------------------------------------------------------------
- /* */
- pkgRecords::~pkgRecords()
- {
- for ( std::vector<Parser*>::iterator it = Files.begin();
- it != Files.end();
- ++it)
- {
- delete *it;
- }
- }
- /*}}}*/
- // Records::Lookup - Get a parser for the package version file /*{{{*/
- // ---------------------------------------------------------------------
- /* */
- pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator const &Ver)
- {
- Files[Ver.File()->ID]->Jump(Ver);
- return *Files[Ver.File()->ID];
- }
- /*}}}*/
- // Records::Lookup - Get a parser for the package description file /*{{{*/
- // ---------------------------------------------------------------------
- /* */
- pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc)
- {
- Files[Desc.File()->ID]->Jump(Desc);
- return *Files[Desc.File()->ID];
- }
- /*}}}*/
- pkgRecords::Parser::Parser() : d(NULL) {}
- pkgRecords::Parser::~Parser() {}
|