deblistparser.cc
[ntk/apt.git] / apt-pkg / version.h
CommitLineData
578bfd0a
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
851a45a8 3// $Id: version.h,v 1.7 2001/05/14 05:58:33 jgg Exp $
578bfd0a
AL
4/* ######################################################################
5
b2e465d6
AL
6 Version - Versioning system..
7
8 The versioning system represents how versions are compared, represented
9 and how dependencies are evaluated. As a general rule versioning
10 systems are not compatible unless specifically allowed by the
11 TestCompatibility query.
578bfd0a 12
b2e465d6
AL
13 The versions are stored in a global list of versions, but that is just
14 so that they can be queried when someone does 'apt-get -v'.
15 pkgSystem provides the proper means to access the VS for the active
16 system.
578bfd0a
AL
17
18 ##################################################################### */
19 /*}}}*/
578bfd0a
AL
20#ifndef PKGLIB_VERSION_H
21#define PKGLIB_VERSION_H
22
6c139d6e 23#ifdef __GNUG__
094a497d 24#pragma interface "apt-pkg/version.h"
6c139d6e
AL
25#endif
26
578bfd0a
AL
27#include <string>
28
851a45a8
AL
29using std::string;
30
b2e465d6
AL
31class pkgVersioningSystem
32{
33 public:
34 // Global list of VS's
35 static pkgVersioningSystem **GlobalList;
36 static unsigned long GlobalListLen;
37 static pkgVersioningSystem *GetVS(const char *Label);
38
39 const char *Label;
40
41 // Compare versions..
42 virtual int DoCmpVersion(const char *A,const char *Aend,
43 const char *B,const char *Bend) = 0;
851a45a8 44
b2e465d6
AL
45 virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) = 0;
46 virtual int DoCmpReleaseVer(const char *A,const char *Aend,
47 const char *B,const char *Bend) = 0;
48 virtual string UpstreamVersion(const char *A) = 0;
49
50 // See if the given VS is compatible with this one..
51 virtual bool TestCompatibility(pkgVersioningSystem const &Against)
52 {return this == &Against;};
53
54 // Shortcuts
55 inline int CmpVersion(const char *A, const char *B)
56 {
57 return DoCmpVersion(A,A+strlen(A),B,B+strlen(B));
58 };
59 inline int CmpVersion(string A,string B)
60 {
851a45a8 61 return DoCmpVersion(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());
b2e465d6
AL
62 };
63 inline int CmpReleaseVer(const char *A, const char *B)
64 {
65 return DoCmpReleaseVer(A,A+strlen(A),B,B+strlen(B));
66 };
67 inline int CmpReleaseVer(string A,string B)
68 {
851a45a8 69 return DoCmpReleaseVer(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());
b2e465d6
AL
70 };
71
72 pkgVersioningSystem();
73 virtual ~pkgVersioningSystem() {};
74};
75
76#ifdef APT_COMPATIBILITY
77#include <apt-pkg/debversion.h>
78#endif
578bfd0a
AL
79
80#endif