4 #include "ComponentDefinition.hpp"
11 #include <unordered_map>
16 SHOWCASE_API QString libraryExtension();
20 struct SHOWCASE_API Version
22 Version(
int majorVersion=0,
int minorVersion=0,
int patchVersion=0)
23 : m_version(std::make_tuple(majorVersion, minorVersion, patchVersion)) {}
26 int majorVersion()
const {
return std::get<0>(m_version); }
27 int minorVersion()
const {
return std::get<1>(m_version); }
28 int patchVersion()
const {
return std::get<2>(m_version); }
30 bool operator<(
const Version& v)
const {
return m_version < v.m_version; }
31 static Version fromString(
const QString& str);
34 std::tuple<int, int, int> m_version;
84 Package(
const QFileInfo& jsonFile);
87 const QByteArray &name()
const;
89 bool operator<(
const Package& other)
const;
95 void preparePackage();
100 ComponentDefinitionPtr component(
const QString& componentName);
103 bool canBeUsed()
const;
105 static std::shared_ptr<Package> fromJson(
const QFileInfo& packageDefinition);
106 static bool isPackageManifest(
const QFileInfo& fi);
107 static QString packageExtension();
110 void parseDefinition();
113 void parseLibs(
const QVariant& variant,
const QString& path);
114 void parseComponents(
const QVariant& variant,
const QString& path);
116 QString searchPathName(
const QFileInfo & jsonFile)
const;
118 QFileInfo m_packageFile;
121 std::vector<QLibrary*> m_loadedLibs;
124 std::vector<QString> m_libraries;
125 Version m_requiredVersion;
126 Version m_packageVersion;
128 std::unordered_map<QByteArray, ComponentDefinitionPtr> m_components;
130 typedef std::shared_ptr<Package> PackagePtr;