//#
//# Copyright (C) 2018-2019 QuasarApp.
//# Distributed under the lgplv3 software license, see the accompanying
//# Everyone is permitted to copy and distribute verbatim copies
//# of this license document, but changing it is not allowed.
//#

#ifndef LIBINFO_H
#define LIBINFO_H
#include "deploycore.h"


class DEPLOYSHARED_EXPORT LibInfo {
private:
    QSet<LibInfo> allDep;

    Platform platform = Platform::UnknownPlatform;
    QString name;
    QString path;
    QSet<QString> dependncies;
    QString qtPath;
    LibPriority priority = NotFile;

public:

    friend bool operator == (const LibInfo& left ,const LibInfo& right);
    friend bool operator > (const LibInfo& left, const LibInfo& right);
    friend bool operator < (const LibInfo& left, const LibInfo& right);
    friend bool operator >= (const LibInfo& left, const LibInfo& right);
    friend bool operator <= (const LibInfo& left, const LibInfo& right);

    QString fullPath() const;

    void clear();

    bool isValid() const;

    friend class DependenciesScanner;
    const QSet<LibInfo>& getAllDep() const;
    Platform getPlatform() const;
    void setPlatform(const Platform &value);
    QString getName() const;
    void setName(const QString &value);
    QString getPath() const;
    void setPath(const QString &value);
    QSet<QString> getDependncies() const;
    void setDependncies(const QSet<QString> &value);
    void addDependncies(const QString &value);
    void removeDependncies(const QString &value);

    LibPriority getPriority() const;
    void setPriority(const LibPriority &value);
    QString getQtPath() const;
    void setQtPath(const QString &value);
};

uint qHash(const LibInfo& info);
#endif // LIBINFO_H