71e33254c42328f6f64301a09e1bfd8b60a0972e
[apt.git] / apt-pkg / rpm / rpmrecords.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: rpmrecords.h,v 1.3 2002/08/08 20:07:33 niemeyer Exp $
4 /* ######################################################################
5    
6    RPM Package Records - Parser for RPM hdlist/rpmdb files
7    
8    This provides display-type parsing for the Packages file. This is 
9    different than the the list parser which provides cache generation
10    services. There should be no overlap between these two.
11    
12    ##################################################################### */
13                                                                         /*}}}*/
14 // Header section: pkglib
15 #ifndef PKGLIB_RPMRECORDS_H
16 #define PKGLIB_RPMRECORDS_H
17
18 #ifdef __GNUG__
19 #pragma interface "apt-pkg/rpmrecords.h"
20 #endif 
21
22 #include <apt-pkg/pkgrecords.h>
23 #include <apt-pkg/fileutl.h>
24 #include <rpm/rpmlib.h>
25
26   
27 class RPMHandler;
28
29 class rpmRecordParser : public pkgRecords::Parser
30 {
31    RPMHandler *Handler;
32    bool IsDatabase;
33
34    Header HeaderP;
35
36    char *Buffer;
37    unsigned BufSize;
38    unsigned BufUsed;
39
40    void BufCat(const char *text);
41    void BufCat(const char *begin, const char *end);
42    void BufCatTag(const char *tag, const char *value);
43    void BufCatDep(const char *pkg, const char *version, int flags);
44    void BufCatDescr(const char *descr);
45
46    protected:
47    
48    virtual bool Jump(pkgCache::VerFileIterator const &Ver);
49    
50    public:
51
52    // These refer to the archive file for the Version
53    virtual string FileName();
54    virtual string MD5Hash();
55    virtual string SourcePkg();
56    
57    // These are some general stats about the package
58    virtual string Maintainer();
59    virtual string ShortDesc();
60    virtual string LongDesc();
61    virtual string Name();
62    
63    inline Header GetRecord() { return HeaderP; };
64
65    // The record in raw text, in standard Debian format
66    virtual void GetRec(const char *&Start,const char *&Stop);
67
68    virtual bool HasFile(const char *File);
69
70    rpmRecordParser(string File,pkgCache &Cache);
71    ~rpmRecordParser();
72 };
73
74
75 #endif