18 #ifndef CUPT_CACHE_RELATION_SEEN
19 #define CUPT_CACHE_RELATION_SEEN
29 struct CUPT_API Relation
32 CUPT_LOCAL
const char* p_parseVersionPart(
const char*,
const char*);
33 CUPT_LOCAL
const char* p_parseRelationSymbols(
const char*,
const char*);
34 CUPT_LOCAL
const char* p_parsePackagePart(
const char*,
const char*);
35 CUPT_LOCAL
const char* __init(
const char*,
const char*);
37 Relation(pair<const char*, const char*> input,
char const* * end);
43 enum Type { Less, Equal, More, LessOrEqual, MoreOrEqual, LiteralyEqual, None };
45 static const string strings[];
49 Types::Type relationType;
57 explicit Relation(pair< const char*, const char* > input);
58 Relation(Relation&&) =
default;
59 Relation(
const Relation&) =
default;
60 Relation& operator=(Relation&&) =
default;
61 Relation& operator=(
const Relation&) =
default;
65 string toString()
const;
74 bool isSatisfiedBy(
const string& otherVersionString)
const;
80 bool operator==(
const Relation& other)
const;
84 struct CUPT_API ArchitecturedRelation:
public Relation
87 CUPT_LOCAL
const char* p_parseArchitectures(
const char*,
const char*);
88 CUPT_LOCAL
const char* p_parseProfiles(
const char*,
const char*);
89 CUPT_LOCAL
void __init(
const char*,
const char*,
const char*);
91 vector<string> architectureFilters;
92 vector<vector<string>> buildProfiles;
100 explicit ArchitecturedRelation(pair< const char*, const char* > input);
101 ArchitecturedRelation(ArchitecturedRelation&&) =
default;
102 ArchitecturedRelation(
const ArchitecturedRelation&) =
default;
103 ArchitecturedRelation& operator=(ArchitecturedRelation&&) =
default;
104 ArchitecturedRelation& operator=(
const ArchitecturedRelation&) =
default;
105 string toString()
const;
109 struct CUPT_API RelationExpression:
public vector< Relation >
112 CUPT_LOCAL
void __init(
const char*,
const char*);
115 string toString()
const;
117 string getHashString()
const;
122 RelationExpression();
127 explicit RelationExpression(
const string& input);
133 explicit RelationExpression(pair< const char*, const char* > input);
134 RelationExpression(RelationExpression&&) =
default;
135 RelationExpression(
const RelationExpression&) =
default;
136 RelationExpression& operator=(RelationExpression&&) =
default;
137 RelationExpression& operator=(
const RelationExpression&) =
default;
139 virtual ~RelationExpression();
143 struct CUPT_API ArchitecturedRelationExpression:
public vector< ArchitecturedRelation >
146 CUPT_LOCAL
void __init(
const char*,
const char*);
149 string toString()
const;
154 ArchitecturedRelationExpression();
159 explicit ArchitecturedRelationExpression(
const string& input);
165 explicit ArchitecturedRelationExpression(pair< const char*, const char* > input);
166 ArchitecturedRelationExpression(ArchitecturedRelationExpression&&) =
default;
167 ArchitecturedRelationExpression(
const ArchitecturedRelationExpression&) =
default;
168 ArchitecturedRelationExpression& operator=(ArchitecturedRelationExpression&&) =
default;
169 ArchitecturedRelationExpression& operator=(
const ArchitecturedRelationExpression&) =
default;
171 virtual ~ArchitecturedRelationExpression();
175 struct CUPT_API RelationLine:
public vector< RelationExpression >
178 CUPT_LOCAL
void __init(
const char*,
const char*);
181 string toString()
const;
191 explicit RelationLine(
const string& input);
197 explicit RelationLine(pair< const char*, const char* > input);
198 RelationLine(RelationLine&&) =
default;
199 RelationLine(
const RelationLine&) =
default;
200 RelationLine& operator=(RelationLine&&);
201 RelationLine& operator=(
const RelationLine&) =
default;
203 virtual ~RelationLine();
207 struct CUPT_API ArchitecturedRelationLine:
public vector< ArchitecturedRelationExpression >
210 CUPT_LOCAL
void __init(
const char*,
const char*);
213 string toString()
const;
218 ArchitecturedRelationLine();
223 explicit ArchitecturedRelationLine(
const string& input);
229 explicit ArchitecturedRelationLine(pair< const char*, const char* > input);
230 ArchitecturedRelationLine(ArchitecturedRelationLine&&) =
default;
231 ArchitecturedRelationLine(
const ArchitecturedRelationLine&) =
default;
232 ArchitecturedRelationLine& operator=(ArchitecturedRelationLine&&);
233 ArchitecturedRelationLine& operator=(
const ArchitecturedRelationLine&) =
default;
244 RelationLine toRelationLine(
const string& currentArchitecture)
const;
246 virtual ~ArchitecturedRelationLine();