X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/bedb5293c16d105966d9bf48951483af0fbaff2a..e07f3d5a9ed2870a0e2909cc1e5e55e826086c53:/apt-pkg/pkgrecords.cc?ds=sidebyside

diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc
index b22f3e73f..ef4c17cd2 100644
--- a/apt-pkg/pkgrecords.cc
+++ b/apt-pkg/pkgrecords.cc
@@ -9,39 +9,40 @@
    ##################################################################### */
 									/*}}}*/
 // Include Files							/*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/pkgrecords.h"
-#endif
+#include<config.h>
+
 #include <apt-pkg/pkgrecords.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/error.h>
-#include <apt-pkg/configuration.h>
-    
-#include <apti18n.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 &Cache) : Cache(Cache), Files(0)
+pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache),
+  Files(Cache.HeaderP->PackageFileCount)
 {
-   Files = new Parser *[Cache.HeaderP->PackageFileCount];
-   memset(Files,0,sizeof(*Files)*Cache.HeaderP->PackageFileCount);
-   
-   for (pkgCache::PkgFileIterator I = Cache.FileBegin(); 
-	I.end() == false; I++)
+   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;
+         _error->Error(_("Index file type '%s' is not supported"),I.IndexType());
+         return;
       }
 
       Files[I->ID] = Type->CreatePkgParser(I);
       if (Files[I->ID] == 0)
-	 return;
-   }   
+         return;
+   }
 }
 									/*}}}*/
 // Records::~pkgRecords - Destructor					/*{{{*/
@@ -49,9 +50,12 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
 /* */
 pkgRecords::~pkgRecords()
 {
-   for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++)
-      delete Files[I];
-   delete [] Files;
+   for ( std::vector<Parser*>::iterator it = Files.begin();
+     it != Files.end();
+     ++it)
+   {
+      delete *it;
+   }
 }
 									/*}}}*/
 // Records::Lookup - Get a parser for the package version file		/*{{{*/
@@ -72,3 +76,6 @@ pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc)
    return *Files[Desc.File()->ID];
 }
 									/*}}}*/
+
+pkgRecords::Parser::Parser() : d(NULL) {}
+pkgRecords::Parser::~Parser() {}