]> git.saurik.com Git - apt.git/blame - apt-pkg/pkgrecords.cc
merged from lp:~donkult/apt/sid
[apt.git] / apt-pkg / pkgrecords.cc
CommitLineData
f55ece0e
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
f50d1cfa 3// $Id: pkgrecords.cc,v 1.8 2003/09/02 04:52:16 mdz Exp $
f55ece0e
AL
4/* ######################################################################
5
6 Package Records - Allows access to complete package description records
7 directly from the file.
8
9 ##################################################################### */
10 /*}}}*/
11// Include Files /*{{{*/
f55ece0e 12#include <apt-pkg/pkgrecords.h>
b2e465d6 13#include <apt-pkg/indexfile.h>
f55ece0e 14#include <apt-pkg/error.h>
3164dff9 15#include <apt-pkg/configuration.h>
b2e465d6
AL
16
17#include <apti18n.h>
f55ece0e
AL
18 /*}}}*/
19
20// Records::pkgRecords - Constructor /*{{{*/
21// ---------------------------------------------------------------------
22/* This will create the necessary structures to access the status files */
30257943
MV
23pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache),
24 Files(Cache.HeaderP->PackageFileCount)
f55ece0e 25{
30257943 26 for (pkgCache::PkgFileIterator I = Cache.FileBegin();
f7f0d6c7 27 I.end() == false; ++I)
f55ece0e 28 {
b2e465d6
AL
29 const pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(I.IndexType());
30 if (Type == 0)
3164dff9 31 {
30257943
MV
32 _error->Error(_("Index file type '%s' is not supported"),I.IndexType());
33 return;
3164dff9 34 }
b2e465d6
AL
35
36 Files[I->ID] = Type->CreatePkgParser(I);
37 if (Files[I->ID] == 0)
30257943
MV
38 return;
39 }
f55ece0e
AL
40}
41 /*}}}*/
42// Records::~pkgRecords - Destructor /*{{{*/
43// ---------------------------------------------------------------------
44/* */
45pkgRecords::~pkgRecords()
46{
30257943
MV
47 for ( vector<Parser*>::iterator it = Files.begin();
48 it != Files.end();
49 ++it)
50 {
51 delete *it;
52 }
f55ece0e
AL
53}
54 /*}}}*/
55// Records::Lookup - Get a parser for the package version file /*{{{*/
56// ---------------------------------------------------------------------
57/* */
03e39e59
AL
58pkgRecords::Parser &pkgRecords::Lookup(pkgCache::VerFileIterator const &Ver)
59{
b2e465d6
AL
60 Files[Ver.File()->ID]->Jump(Ver);
61 return *Files[Ver.File()->ID];
f55ece0e
AL
62}
63 /*}}}*/
a52f938b
OS
64// Records::Lookup - Get a parser for the package description file /*{{{*/
65// ---------------------------------------------------------------------
66/* */
67pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc)
68{
69 Files[Desc.File()->ID]->Jump(Desc);
70 return *Files[Desc.File()->ID];
71}
72 /*}}}*/