summaryrefslogtreecommitdiffstats
path: root/api/logic/meta/JsonFormat.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-03-24 02:26:06 +0100
committerPetr Mrázek <peterix@gmail.com>2017-04-07 00:20:02 +0200
commitda4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c (patch)
treec6db08bd02bd991c2370ca62f43249afaf3fe156 /api/logic/meta/JsonFormat.cpp
parent77f27a628f33a591f7562ca05c206ac604212443 (diff)
downloadMultiMC-da4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c.tar
MultiMC-da4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c.tar.gz
MultiMC-da4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c.tar.lz
MultiMC-da4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c.tar.xz
MultiMC-da4ae1bc1ec74cdb4e75f4ebac30886ba4a1909c.zip
NOISSUE reimplement package dependencies
It is now stored as a hashmap There is also a parentUid to limit depsolving by encapsulating by version
Diffstat (limited to 'api/logic/meta/JsonFormat.cpp')
-rw-r--r--api/logic/meta/JsonFormat.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/api/logic/meta/JsonFormat.cpp b/api/logic/meta/JsonFormat.cpp
index 4e43b715..8a063f48 100644
--- a/api/logic/meta/JsonFormat.cpp
+++ b/api/logic/meta/JsonFormat.cpp
@@ -48,20 +48,22 @@ static BaseEntity::Ptr parseIndexInternal(const QJsonObject &obj)
// Version
static VersionPtr parseCommonVersion(const QString &uid, const QJsonObject &obj)
{
- const QVector<QJsonObject> requiresRaw = obj.contains("requires") ? requireIsArrayOf<QJsonObject>(obj, "requires") : QVector<QJsonObject>();
- QVector<Reference> requires;
- requires.reserve(requiresRaw.size());
- std::transform(requiresRaw.begin(), requiresRaw.end(), std::back_inserter(requires), [](const QJsonObject &rObj)
- {
- Reference ref(requireString(rObj, "uid"));
- ref.setVersion(ensureString(rObj, "version", QString()));
- return ref;
- });
-
VersionPtr version = std::make_shared<Version>(uid, requireString(obj, "version"));
version->setTime(QDateTime::fromString(requireString(obj, "releaseTime"), Qt::ISODate).toMSecsSinceEpoch() / 1000);
version->setType(ensureString(obj, "type", QString()));
- version->setRequires(requires);
+ version->setParentUid(ensureString(obj, "parentUid", QString()));
+ if(obj.contains("requires"))
+ {
+ QHash<QString, QString> requires;
+ auto reqobj = requireObject(obj, "requires");
+ auto iter = reqobj.begin();
+ while(iter != reqobj.end())
+ {
+ requires[iter.key()] = requireString(iter.value());
+ iter++;
+ }
+ version->setRequires(requires);
+ }
return version;
}
@@ -90,6 +92,7 @@ static BaseEntity::Ptr parseVersionListInternal(const QJsonObject &obj)
VersionListPtr list = std::make_shared<VersionList>(uid);
list->setName(ensureString(obj, "name", QString()));
+ list->setParentUid(ensureString(obj, "parentUid", QString()));
list->setVersions(versions);
return list;
}