This file is indexed.

/usr/include/cupt/cache/relation.hpp is in libcupt3-dev 2.6.4.

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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
/**************************************************************************
*   Copyright (C) 2010 by Eugene V. Lyubimkin                             *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License                  *
*   (version 3 or above) as published by the Free Software Foundation.    *
*                                                                         *
*   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 GPL                        *
*   along with this program; if not, write to the                         *
*   Free Software Foundation, Inc.,                                       *
*   51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA               *
**************************************************************************/
#ifndef CUPT_CACHE_RELATION_SEEN
#define CUPT_CACHE_RELATION_SEEN

/// @file

#include <cupt/common.hpp>

namespace cupt {
namespace cache {

/// %relation against certain binary package
struct CUPT_API Relation
{
 private:
	CUPT_LOCAL bool __parse_versioned_info(const char*, const char*);
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// %relation type
	struct Types
	{
		/// type
		enum Type { Less, Equal, More, LessOrEqual, MoreOrEqual, LiteralyEqual, None };
		/// string values of corresponding types
		static const string strings[];
	};
	string packageName; ///< package name
	Types::Type relationType; ///< relation type
	string versionString; ///< version string

	/// constructor
	/**
	 * Parses @a input and constructs Relation from it.
	 * @param input pair of begin iterator and end iterator of stringified relation
	 */
	explicit Relation(pair< const char*, const char* > input);
	Relation(Relation&&) = default;
	Relation(const Relation&) = default;
	Relation& operator=(Relation&&) = default;
	Relation& operator=(const Relation&) = default;
	/// destructor
	virtual ~Relation();
	/// gets the string reprentation
	string toString() const;
	/// is relation satisfied by @a otherVersionString
	/**
	 * This method checks @ref relationType and @ref versionString against @a
	 * otherVersionString.
	 *
	 * @param otherVersionString version string to compare
	 * @return @c true if satisfied, @c false if not
	 */
	bool isSatisfiedBy(const string& otherVersionString) const;
	/// operator ==
	/**
	 * @param other relation to compare with
	 * @return @c true if this relation is equal to @a other, @c false otherwise
	 */
	bool operator==(const Relation& other) const;
};

/// relation with optional architecture filters
struct CUPT_API ArchitecturedRelation: public Relation
{
 private:
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// architecture filters
	vector< string > architectureFilters;

	/// constructor
	/**
	 * Parses @a input and constructs ArchitecturedRelation from it.
	 * @param input pair of begin iterator and end iterator of stringified
	 * architectured relation
	 */
	explicit ArchitecturedRelation(pair< const char*, const char* > input);
	ArchitecturedRelation(ArchitecturedRelation&&) = default;
	ArchitecturedRelation(const ArchitecturedRelation&) = default;
	ArchitecturedRelation& operator=(ArchitecturedRelation&&) = default;
	ArchitecturedRelation& operator=(const ArchitecturedRelation&) = default;
	string toString() const;
};

/// group of alternative relations
struct CUPT_API RelationExpression: public vector< Relation >
{
 private:
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// gets the string representation
	string toString() const;
	/// fast function to get unique, not human-readable identifier
	string getHashString() const;
	/// default constructor
	/**
	 * Builds RelationExpression containing no relations.
	 */
	RelationExpression();
	/// constructor
	/**
	 * @param input string representation
	 */
	explicit RelationExpression(const string& input);
	/// constructor
	/**
	 * @param input pair of begin iterator and end iterator of string
	 * representation
	 */
	explicit RelationExpression(pair< const char*, const char* > input);
	RelationExpression(RelationExpression&&) = default;
	RelationExpression(const RelationExpression&) = default;
	RelationExpression& operator=(RelationExpression&&) = default;
	RelationExpression& operator=(const RelationExpression&) = default;
	/// destructor
	virtual ~RelationExpression();
};

/// group of alternative architectured relation expressions
struct CUPT_API ArchitecturedRelationExpression: public vector< ArchitecturedRelation >
{
 private:
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// gets the string representation
	string toString() const;
	/// default constructor
	/**
	 * Builds ArchitecturedRelationExpression containing no relations.
	 */
	ArchitecturedRelationExpression();
	/// constructor
	/**
	 * @param input string representation
	 */
	explicit ArchitecturedRelationExpression(const string& input);
	/// constructor
	/**
	 * @param input pair of begin iterator and end iterator of string
	 * representation
	 */
	explicit ArchitecturedRelationExpression(pair< const char*, const char* > input);
	ArchitecturedRelationExpression(ArchitecturedRelationExpression&&) = default;
	ArchitecturedRelationExpression(const ArchitecturedRelationExpression&) = default;
	ArchitecturedRelationExpression& operator=(ArchitecturedRelationExpression&&) = default;
	ArchitecturedRelationExpression& operator=(const ArchitecturedRelationExpression&) = default;
	/// destructor
	virtual ~ArchitecturedRelationExpression();
};

/// array of relation expressions
struct CUPT_API RelationLine: public vector< RelationExpression >
{
 private:
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// gets the string representation
	string toString() const;
	/// default constructor
	/**
	 * Builds RelationLine containing no relation expressions.
	 */
	RelationLine();
	/// constructor
	/**
	 * @param input string representation
	 */
	explicit RelationLine(const string& input);
	/// constructor
	/**
	 * @param input pair of begin iterator and end iterator of string
	 * representation
	 */
	explicit RelationLine(pair< const char*, const char* > input);
	RelationLine(RelationLine&&) = default;
	RelationLine(const RelationLine&) = default;
	RelationLine& operator=(RelationLine&&);
	RelationLine& operator=(const RelationLine&) = default;
	/// destructor
	virtual ~RelationLine();
};

/// array of architectured relation expressions
struct CUPT_API ArchitecturedRelationLine: public vector< ArchitecturedRelationExpression >
{
 private:
	CUPT_LOCAL void __init(const char*, const char*);
 public:
	/// gets the string representation
	string toString() const;
	/// default constructor
	/**
	 * Builds RelationLine containing no architectured relation expressions.
	 */
	ArchitecturedRelationLine();
	/// constructor
	/**
	 * @param input string representation
	 */
	explicit ArchitecturedRelationLine(const string& input);
	/// constructor
	/**
	 * @param input pair of begin iterator and end iterator of string
	 * representation
	 */
	explicit ArchitecturedRelationLine(pair< const char*, const char* > input);
	ArchitecturedRelationLine(ArchitecturedRelationLine&&) = default;
	ArchitecturedRelationLine(const ArchitecturedRelationLine&) = default;
	ArchitecturedRelationLine& operator=(ArchitecturedRelationLine&&);
	ArchitecturedRelationLine& operator=(const ArchitecturedRelationLine&) = default;
	/// converts to RelationLine given system architecture
	/**
	 * Filters ArchitecturedRelationLine using binary system architecture.
	 * Throws out architectured relation expressions, where @ref
	 * ArchitecturedRelation::architectureFilters do not match system architecture. Matching
	 * architectured relation expressions are converted to relation
	 * expressions.
	 * @param currentArchitecture system binary architetecture
	 * @return relation line
	 */
	RelationLine toRelationLine(const string& currentArchitecture) const;
	/// destructor
	virtual ~ArchitecturedRelationLine();
};

}
}

#endif