#ifndef MINISATRESULT_H
#define MINISATRESULT_H

#include "util/ksatinstance.h"
#include "util/minisatstats.h"

namespace satlab
{
    
class MinisatResult
{
public:
    MinisatResult() = default;
    virtual ~MinisatResult() = default;
    
    MinisatResult(const MinisatResult& other) = default;
    MinisatResult(MinisatResult&& other) = default;
    
    MinisatResult& operator= (const MinisatResult& other) = default;
    MinisatResult& operator= (MinisatResult&& other) = default;
    
    void setModel(const KSATinstance::MODEL& model);
    const KSATinstance::MODEL& getModel() const;
    
    void addLiteralToModel(KSATinstance::LITERAL lit);
    
    void setStats(MinisatStats&& stats);
    const MinisatStats& getStats() const;
    
    void setSatisfiable(bool value);
    bool getSatisfiable() const;
    
private:
    bool satisfiable;
    KSATinstance::MODEL model;
    MinisatStats stats;
};

}

#endif // MINISATRESULT_H
