From 32b3ed0a1362a4b0798ad71fac3450fb77cb7e41 Mon Sep 17 00:00:00 2001 From: Thomas Groman Date: Thu, 19 Sep 2019 00:41:48 -0700 Subject: merged from 0.6.7 codebase --- api/logic/minecraft/Library.h | 336 +++++++++++++++++++++--------------------- 1 file changed, 171 insertions(+), 165 deletions(-) (limited to 'api/logic/minecraft/Library.h') diff --git a/api/logic/minecraft/Library.h b/api/logic/minecraft/Library.h index 9577de33..014f6745 100644 --- a/api/logic/minecraft/Library.h +++ b/api/logic/minecraft/Library.h @@ -24,191 +24,197 @@ typedef std::shared_ptr LibraryPtr; class MULTIMC_LOGIC_EXPORT Library { - friend class OneSixVersionFormat; - friend class MojangVersionFormat; - friend class LibraryTest; + friend class OneSixVersionFormat; + friend class MojangVersionFormat; + friend class LibraryTest; public: - Library() - { - } - Library(const QString &name) - { - m_name = name; - } - /// limited copy without some data. TODO: why? - static LibraryPtr limitedCopy(LibraryPtr base) - { - auto newlib = std::make_shared(); - newlib->m_name = base->m_name; - newlib->m_repositoryURL = base->m_repositoryURL; - newlib->m_hint = base->m_hint; - newlib->m_absoluteURL = base->m_absoluteURL; - newlib->m_extractExcludes = base->m_extractExcludes; - newlib->m_nativeClassifiers = base->m_nativeClassifiers; - newlib->m_rules = base->m_rules; - newlib->m_storagePrefix = base->m_storagePrefix; - newlib->m_mojangDownloads = base->m_mojangDownloads; - newlib->m_filename = base->m_filename; - return newlib; - } + Library() + { + } + Library(const QString &name) + { + m_name = name; + } + /// limited copy without some data. TODO: why? + static LibraryPtr limitedCopy(LibraryPtr base) + { + auto newlib = std::make_shared(); + newlib->m_name = base->m_name; + newlib->m_repositoryURL = base->m_repositoryURL; + newlib->m_hint = base->m_hint; + newlib->m_absoluteURL = base->m_absoluteURL; + newlib->m_extractExcludes = base->m_extractExcludes; + newlib->m_nativeClassifiers = base->m_nativeClassifiers; + newlib->m_rules = base->m_rules; + newlib->m_storagePrefix = base->m_storagePrefix; + newlib->m_mojangDownloads = base->m_mojangDownloads; + newlib->m_filename = base->m_filename; + return newlib; + } public: /* methods */ - /// Returns the raw name field - const GradleSpecifier & rawName() const - { - return m_name; - } - - void setRawName(const GradleSpecifier & spec) - { - m_name = spec; - } - - void setClassifier(const QString & spec) - { - m_name.setClassifier(spec); - } - - /// returns the full group and artifact prefix - QString artifactPrefix() const - { - return m_name.artifactPrefix(); - } - - /// get the artifact ID - QString artifactId() const - { - return m_name.artifactId(); - } - - /// get the artifact version - QString version() const - { - return m_name.version(); - } - - /// Returns true if the library is native - bool isNative() const - { - return m_nativeClassifiers.size() != 0; - } - - void setStoragePrefix(QString prefix = QString()); - - /// Set the url base for downloads - void setRepositoryURL(const QString &base_url) - { - m_repositoryURL = base_url; - } - - void getApplicableFiles(OpSys system, QStringList & jar, QStringList & native, - QStringList & native32, QStringList & native64, const QString & overridePath) const; - - void setAbsoluteUrl(const QString &absolute_url) - { - m_absoluteURL = absolute_url; - } - - void setFilename(const QString &filename) - { - m_filename = filename; - } - - /// Get the file name of the library - QString filename(OpSys system) const; - - // DEPRECATED: set a display name, used by jar mods only - void setDisplayName(const QString & displayName) - { - m_displayname = displayName; - } - - /// Get the file name of the library - QString displayName(OpSys system) const; - - void setMojangDownloadInfo(MojangLibraryDownloadInfo::Ptr info) - { - m_mojangDownloads = info; - } - - void setHint(const QString &hint) - { - m_hint = hint; - } - - /// Set the load rules - void setRules(QList> rules) - { - m_rules = rules; - } - - /// Returns true if the library should be loaded (or extracted, in case of natives) - bool isActive() const; - - /// Returns true if the library is contained in an instance and false if it is shared - bool isLocal() const; - - // Get a list of downloads for this library - QList getDownloads(OpSys system, class HttpMetaCache * cache, - QStringList & failedFiles, const QString & overridePath) const; + /// Returns the raw name field + const GradleSpecifier & rawName() const + { + return m_name; + } + + void setRawName(const GradleSpecifier & spec) + { + m_name = spec; + } + + void setClassifier(const QString & spec) + { + m_name.setClassifier(spec); + } + + /// returns the full group and artifact prefix + QString artifactPrefix() const + { + return m_name.artifactPrefix(); + } + + /// get the artifact ID + QString artifactId() const + { + return m_name.artifactId(); + } + + /// get the artifact version + QString version() const + { + return m_name.version(); + } + + /// Returns true if the library is native + bool isNative() const + { + return m_nativeClassifiers.size() != 0; + } + + void setStoragePrefix(QString prefix = QString()); + + /// Set the url base for downloads + void setRepositoryURL(const QString &base_url) + { + m_repositoryURL = base_url; + } + + void getApplicableFiles(OpSys system, QStringList & jar, QStringList & native, + QStringList & native32, QStringList & native64, const QString & overridePath) const; + + void setAbsoluteUrl(const QString &absolute_url) + { + m_absoluteURL = absolute_url; + } + + void setFilename(const QString &filename) + { + m_filename = filename; + } + + /// Get the file name of the library + QString filename(OpSys system) const; + + // DEPRECATED: set a display name, used by jar mods only + void setDisplayName(const QString & displayName) + { + m_displayname = displayName; + } + + /// Get the file name of the library + QString displayName(OpSys system) const; + + void setMojangDownloadInfo(MojangLibraryDownloadInfo::Ptr info) + { + m_mojangDownloads = info; + } + + void setHint(const QString &hint) + { + m_hint = hint; + } + + /// Set the load rules + void setRules(QList> rules) + { + m_rules = rules; + } + + /// Returns true if the library should be loaded (or extracted, in case of natives) + bool isActive() const; + + /// Returns true if the library is contained in an instance and false if it is shared + bool isLocal() const; + + /// Returns true if the library is to always be checked for updates + bool isAlwaysStale() const; + + /// Return true if the library requires forge XZ hacks + bool isForge() const; + + // Get a list of downloads for this library + QList getDownloads(OpSys system, class HttpMetaCache * cache, + QStringList & failedLocalFiles, const QString & overridePath) const; private: /* methods */ - /// the default storage prefix used by MultiMC - static QString defaultStoragePrefix(); + /// the default storage prefix used by MultiMC + static QString defaultStoragePrefix(); - /// Get the prefix - root of the storage to be used - QString storagePrefix() const; + /// Get the prefix - root of the storage to be used + QString storagePrefix() const; - /// Get the relative file path where the library should be saved - QString storageSuffix(OpSys system) const; + /// Get the relative file path where the library should be saved + QString storageSuffix(OpSys system) const; - QString hint() const - { - return m_hint; - } + QString hint() const + { + return m_hint; + } protected: /* data */ - /// the basic gradle dependency specifier. - GradleSpecifier m_name; + /// the basic gradle dependency specifier. + GradleSpecifier m_name; - /// DEPRECATED URL prefix of the maven repo where the file can be downloaded - QString m_repositoryURL; + /// DEPRECATED URL prefix of the maven repo where the file can be downloaded + QString m_repositoryURL; - /// DEPRECATED: MultiMC-specific absolute URL. takes precedence over the implicit maven repo URL, if defined - QString m_absoluteURL; + /// DEPRECATED: MultiMC-specific absolute URL. takes precedence over the implicit maven repo URL, if defined + QString m_absoluteURL; - /// MultiMC extension - filename override - QString m_filename; + /// MultiMC extension - filename override + QString m_filename; - /// DEPRECATED MultiMC extension - display name - QString m_displayname; + /// DEPRECATED MultiMC extension - display name + QString m_displayname; - /** - * MultiMC-specific type hint - modifies how the library is treated - */ - QString m_hint; + /** + * MultiMC-specific type hint - modifies how the library is treated + */ + QString m_hint; - /** - * storage - by default the local libraries folder in multimc, but could be elsewhere - * MultiMC specific, because of FTB. - */ - QString m_storagePrefix; + /** + * storage - by default the local libraries folder in multimc, but could be elsewhere + * MultiMC specific, because of FTB. + */ + QString m_storagePrefix; - /// true if the library had an extract/excludes section (even empty) - bool m_hasExcludes = false; + /// true if the library had an extract/excludes section (even empty) + bool m_hasExcludes = false; - /// a list of files that shouldn't be extracted from the library - QStringList m_extractExcludes; + /// a list of files that shouldn't be extracted from the library + QStringList m_extractExcludes; - /// native suffixes per OS - QMap m_nativeClassifiers; + /// native suffixes per OS + QMap m_nativeClassifiers; - /// true if the library had a rules section (even empty) - bool applyRules = false; + /// true if the library had a rules section (even empty) + bool applyRules = false; - /// rules associated with the library - QList> m_rules; + /// rules associated with the library + QList> m_rules; - /// MOJANG: container with Mojang style download info - MojangLibraryDownloadInfo::Ptr m_mojangDownloads; + /// MOJANG: container with Mojang style download info + MojangLibraryDownloadInfo::Ptr m_mojangDownloads; }; -- cgit v1.2.3