MCPcopy Create free account
hub / github.com/ElyPrismLauncher/Launcher / composeRequirement

Function composeRequirement

launcher/minecraft/ComponentUpdateTask.cpp:263–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

261} // namespace
262
263static RequireCompositionResult composeRequirement(const RequireEx& a, const RequireEx& b)
264{
265 assert(a.uid == b.uid);
266 RequireEx out;
267 out.uid = a.uid;
268 out.indexOfFirstDependee = std::min(a.indexOfFirstDependee, b.indexOfFirstDependee);
269 if (a.equalsVersion.isEmpty()) {
270 out.equalsVersion = b.equalsVersion;
271 } else if (b.equalsVersion.isEmpty()) {
272 out.equalsVersion = a.equalsVersion;
273 } else if (a.equalsVersion == b.equalsVersion) {
274 out.equalsVersion = a.equalsVersion;
275 } else {
276 // FIXME: mark error as explicit version conflict
277 return { false, out };
278 }
279
280 if (a.suggests.isEmpty()) {
281 out.suggests = b.suggests;
282 } else if (b.suggests.isEmpty()) {
283 out.suggests = a.suggests;
284 } else {
285 Version aVer(a.suggests);
286 Version bVer(b.suggests);
287 out.suggests = (aVer < bVer ? b.suggests : a.suggests);
288 }
289 return { true, out };
290}
291
292// gather the requirements from all components, finding any obvious conflicts
293static bool gatherRequirementsFromComponents(const ComponentContainer& input, RequireExSet& output)

Callers 1

Calls 1

isEmptyMethod · 0.45

Tested by

no test coverage detected