This file is indexed.

/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