/usr/include/kdevplatform/vcs/vcsrevision.h is in kdevelop-dev 4:5.2.1-1ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | /* This file is part of KDevelop
*
* Copyright 2007 Andreas Pakulat <apaku@gmx.de>
* Copyright 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#ifndef KDEVPLATFORM_VCSREVISION_H
#define KDEVPLATFORM_VCSREVISION_H
#include "vcsexport.h"
#include <QVariant>
class QStringList;
class QString;
namespace KDevelop
{
/**
* Encapsulates a vcs revision number, date or range of revisions.
*
* The type of the QVariant value depends on the type of the revision,
* the following table lists the standard types and the according datatype
* in the QVariant:
*
* <table>
* <tr><th>Revision type</th><th>QVariant type</th></tr>
* <tr><td>GlobalNumber</td><td>qlonglong/QString</td></tr>
* <tr><td>FileNumber</td><td>qlonglong/QString</td></tr>
* <tr><td>Date</td><td>QDateTime</td></tr>
* <tr><td>Special</td><td>KDevelop::VcsRevision::RevisionSpecialType or int, see explanation below</td></tr>
* </table>
*
* The vcs plugins need to register the Revision and RevisionSpecialType with
* qRegisterMetaType.
*
* Also Users of this class should set RevisionSpecialType QVariant values via
* <code>
* setRevisionValue( qVariantFromValue<KDevelop::VcsRevision::RevisionSpecialType>( val ), KDevelop::VcsRevision::Special);
* </code>
* instead of
* <code>
* setRevisionValue( qVariantFromValue( val ), KDevelop::VcsRevision::Special);
* </code>
*
* If the latter method is used the QVariant will be an Integer, which might not
* be handled by the vcs plugin and is possibly ambiguous with the qlonglong
* parameters.
*
*/
class KDEVPLATFORMVCS_EXPORT VcsRevision
{
public:
/**
* @note Not all VCS's support both FileNumber and GlobalNumber. For those
* that don't, asking for one may give you the other, therefore you should
* check which is returned. For example, CVS does not support GlobalNumber,
* and Subversion does not support FileNumber, while Perforce supports both.
*/
enum RevisionType
{
Special = 0 /**< One of the special versions in RevisionSpecialType. */,
GlobalNumber = 1 /**< Global repository version when item was last changed. */,
FileNumber = 2 /**< Item's independent version number. */,
Date = 3, /**< The date of the revision to check out */
Invalid = 4 /**< The type is not set, this is an invalid revision. */,
UserType = 1000 /**< This should be used by subclasses as base for their own types. */
};
enum RevisionSpecialType
{
Head = 0 /**< Latest revision in the repository. */,
Working = 1 /**< The local copy (including any changes made). */,
Base = 2 /**< The repository source of the local copy. */,
Previous = 3 /**< The version prior the other one (only valid in functions that take two revisions). */,
Start = 4, /**< The first commit in a repository. */
UserSpecialType = 1000 /**< This should be used by subclasses as base for their own special types. */
};
VcsRevision();
virtual ~VcsRevision();
VcsRevision( const VcsRevision& );
VcsRevision& operator=( const VcsRevision& );
/**
* Set the value of this revision
*/
void setRevisionValue( const QVariant& rev, RevisionType type );
/**
* returns the type of the revision
*/
RevisionType revisionType() const;
RevisionSpecialType specialType() const;
/**
* Return the value of this revision.
*
* See the class documentation for the different QVariant types
*/
QVariant revisionValue() const;
/**
* This returns the value of the revision, suitable for displaying to the
* user. For numbers it just returns the number converted to a string, for
* the special types it returns the literal value of the special type and
* for a datetime value it returns a localized string of the datetime value.
*/
QString prettyValue() const;
bool operator==( const KDevelop::VcsRevision&) const;
/**
* Helper function to create a vcs revision for one of the special types
*/
static VcsRevision createSpecialRevision( KDevelop::VcsRevision::RevisionSpecialType type );
protected:
/**
* Get the keys that make up the internal data of this revision instance
*/
QStringList keys() const;
/**
* get the value for a given key, this retrieves internal data and is
* meant to be used by subclasses
*/
QVariant getValue( const QString& key ) const;
/**
* change the value of the given internal data
*/
void setValue( const QString& key, const QVariant& value );
/**
* write methods for subclasses to easily set the type and value
*/
void setType( RevisionType t);
void setSpecialType( RevisionSpecialType t);
void setValue( const QVariant& );
private:
const QScopedPointer<class VcsRevisionPrivate> d;
};
KDEVPLATFORMVCS_EXPORT uint qHash( const KDevelop::VcsRevision& rev);
}
Q_DECLARE_METATYPE(KDevelop::VcsRevision)
Q_DECLARE_METATYPE(KDevelop::VcsRevision::RevisionSpecialType)
#endif
|