- initial import of revision 374 from cnc
[apt.git] / apt-pkg / versionmatch.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: versionmatch.h,v 1.1 2002/07/23 17:54:51 niemeyer Exp $
4 /* ######################################################################
5
6    Version Matching 
7    
8    This module takes a matching string and a type and locates the version
9    record that satisfies the constraint described by the matching string.
10
11      Version: 1.2*
12      Release: o=Debian,v=2.1*,c=main
13      Release: v=2.1*
14      Release: *
15      Origin: ftp.debian.org
16    
17    Release may be a complex type that can specify matches for any of:
18       Version (v= with prefix)
19       Origin (o=)
20       Archive (a=)
21       Label (l=)
22       Component (c=)
23    If there are no equals signs in the string then it is scanned in short
24    form - if it starts with a number it is Version otherwise it is an 
25    Archive.
26    
27    Release may be a '*' to match all releases.
28    
29    ##################################################################### */
30                                                                         /*}}}*/
31 #ifndef PKGLIB_VERSIONMATCH_H
32 #define PKGLIB_VERSIONMATCH_H
33
34 #ifdef __GNUG__
35 #pragma interface "apt-pkg/versionmatch.h"
36 #endif
37
38 #include <string>
39 #include <apt-pkg/pkgcache.h>
40
41 using std::string;
42
43 class pkgVersionMatch
44 {   
45    // Version Matching
46    string VerStr;
47    bool VerPrefixMatch;
48    // CNC:2003-11-05
49    int VerOp;
50
51    // Release Matching
52    string RelVerStr;
53    bool RelVerPrefixMatch;
54    string RelOrigin;
55    string RelArchive;
56    string RelLabel;
57    string RelComponent;
58    bool MatchAll;
59    
60    // Origin Matching
61    string OrSite;
62    
63    public:
64    
65    enum MatchType {None = 0,Version,Release,Origin} Type;
66    
67    bool MatchVer(const char *A,string B,bool Prefix);
68    bool FileMatch(pkgCache::PkgFileIterator File);
69    pkgCache::VerIterator Find(pkgCache::PkgIterator Pkg);
70                                
71    // CNC:2003-11-05
72    pkgVersionMatch(string Data,MatchType Type,int Op=pkgCache::Dep::Equals);
73 };
74
75 #endif