/* ====================================================================
* Copyright (c) 2003-2006, Martin Hauner
* http://subcommander.tigris.org
*
* Subcommander is licensed as described in the file doc/COPYING, which
* you should have received as part of this distribution.
* ====================================================================
*/
#ifndef _SVN_REVISION_H
#define _SVN_REVISION_H
// sc
#include "svn.h"
#include "util/String.h"
// boost
#include <boost/shared_ptr.hpp>
// svn
#include "svn_opt.h"
namespace svn
{
// opt/svn_opt_revision_kind
enum RevisionKind
{
Revision_Unspecified = svn_opt_revision_unspecified,
Revision_Number = svn_opt_revision_number,
Revision_Date = svn_opt_revision_date,
Revision_Committed = svn_opt_revision_committed,
Revision_Previous = svn_opt_revision_previous,
Revision_Base = svn_opt_revision_base,
Revision_Working = svn_opt_revision_working,
Revision_Head = svn_opt_revision_head
};
// opt/svn_opt_revision_t
class Revision
{
public:
Revision( RevisionKind kind ) : _kind(kind)
{
}
virtual ~Revision()
{
}
public:
RevisionKind getKind() const;
bool isLocal() const;
virtual bool equals( const Revision* ) const;
virtual const Revision* dup() const;
virtual sc::String toString() const;
protected:
RevisionKind _kind;
};
class RevisionDate : public Revision
{
public:
RevisionDate( const Date& d ) : Revision(Revision_Date), _date(d)
{
}
const Date& getDate() const
{
return _date;
}
bool equals( const Revision* ) const;
const Revision* dup() const;
sc::String toString() const;
private:
Date _date;
};
class RevisionNumber : public Revision
{
public:
RevisionNumber( const Revnumber& r ) : Revision(Revision_Number), _rev(r)
{
}
const Revnumber& getNumber() const
{
return _rev;
}
bool equals( const Revision* ) const;
const Revision* dup() const;
sc::String toString() const;
private:
Revnumber _rev;
};
const Revision RevUnspecified = Revision(Revision_Unspecified);
const Revision RevCommited = Revision(Revision_Committed);
const Revision RevPrevious = Revision(Revision_Previous);
const Revision RevBase = Revision(Revision_Base);
const Revision RevWorking = Revision(Revision_Working);
const Revision RevHead = Revision(Revision_Head);
typedef boost::shared_ptr<Revision> RevisionPtr;
} // namespace
#endif // _SVN_REVISION_H
syntax highlighted by Code2HTML, v. 0.9.1