#ifndef MINISATSTATS_H
#define MINISATSTATS_H

#include <stdint.h>

namespace satlab
{
    
class MinisatStats
{
public:
    MinisatStats() = default;
    virtual ~MinisatStats() = default;
    
    MinisatStats(const MinisatStats& other) = default;
    MinisatStats(MinisatStats&& other) = default;
    
    MinisatStats& operator=(const MinisatStats& other) = default;
    MinisatStats& operator=(MinisatStats&& other) = default;
    
    
    void setSolves(uint64_t value);
    void setStarts(uint64_t value);
    void setDecisions(uint64_t value);
    void setRndDecisions(uint64_t value);
    void setPropagations(uint64_t value);
    void setConflicts(uint64_t value);
    void setDecVars(uint64_t value);
    void setClausesLiterals(uint64_t value);
    void setLearntsLiterals(uint64_t value);
    void setMaxLiterals(uint64_t value);
    void setTotLiterals(uint64_t value);
    
    uint64_t getSolves() const;
    uint64_t getStarts() const;
    uint64_t getDecisions() const;
    uint64_t getRndDecisions() const;
    uint64_t getPropagations() const;
    uint64_t getConflicts() const;
    uint64_t getDecVars() const;
    uint64_t getClausesLiterals() const;
    uint64_t getLearntsLiterals() const;
    uint64_t getMaxLiterals() const;
    uint64_t getTotLiterals() const;
    
private:
    uint64_t solves;
    uint64_t starts;
    uint64_t decisions;
    uint64_t rndDecisions;
    uint64_t propagations;
    uint64_t conflicts;
    uint64_t decVars;
    uint64_t clausesLiterals;
    uint64_t learntsLiterals;
    uint64_t maxLiterals;
    uint64_t totLiterals;
};

}

#endif // MINISATSTATS_H
