// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: version.h,v 1.6 2001/02/20 07:03:17 jgg Exp $
+// $Id: version.h,v 1.8 2001/05/27 05:55:27 jgg Exp $
/* ######################################################################
Version - Versioning system..
#ifndef PKGLIB_VERSION_H
#define PKGLIB_VERSION_H
-#ifdef __GNUG__
-#pragma interface "apt-pkg/version.h"
-#endif
-
+#include <apt-pkg/strutl.h>
#include <string>
+#ifndef APT_8_CLEANER_HEADERS
+using std::string;
+#endif
+
class pkgVersioningSystem
{
public:
// Global list of VS's
static pkgVersioningSystem **GlobalList;
static unsigned long GlobalListLen;
- static pkgVersioningSystem *GetVS(const char *Label);
+ static pkgVersioningSystem *GetVS(const char *Label) APT_PURE;
const char *Label;
// Compare versions..
virtual int DoCmpVersion(const char *A,const char *Aend,
const char *B,const char *Bend) = 0;
+
virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) = 0;
virtual int DoCmpReleaseVer(const char *A,const char *Aend,
const char *B,const char *Bend) = 0;
- virtual string UpstreamVersion(const char *A) = 0;
+ virtual std::string UpstreamVersion(const char *A) = 0;
// See if the given VS is compatible with this one..
virtual bool TestCompatibility(pkgVersioningSystem const &Against)
{return this == &Against;};
// Shortcuts
- inline int CmpVersion(const char *A, const char *B)
- {
- return DoCmpVersion(A,A+strlen(A),B,B+strlen(B));
- };
- inline int CmpVersion(string A,string B)
- {
- return DoCmpVersion(A.begin(),A.end(),B.begin(),B.end());
- };
- inline int CmpReleaseVer(const char *A, const char *B)
- {
- return DoCmpReleaseVer(A,A+strlen(A),B,B+strlen(B));
- };
- inline int CmpReleaseVer(string A,string B)
- {
- return DoCmpReleaseVer(A.begin(),A.end(),B.begin(),B.end());
- };
+ APT_MKSTRCMP(CmpVersion,DoCmpVersion);
+ APT_MKSTRCMP(CmpReleaseVer,DoCmpReleaseVer);
pkgVersioningSystem();
- virtual ~pkgVersioningSystem() {};
+ virtual ~pkgVersioningSystem();
};
-#ifdef APT_COMPATIBILITY
-#include <apt-pkg/debversion.h>
-#endif
-
#endif