#ifndef KSATINSTANCE_H
#define KSATINSTANCE_H

#include <vector>

namespace satlab
{
    
class KSATinstance
{
public:
    using LITERAL = int;
    using CLAUSE = std::vector<LITERAL>;
    using MODEL = std::vector<LITERAL>;
    
    KSATinstance() = default;
    ~KSATinstance() = default;
    
    KSATinstance(const KSATinstance& other) = default;
    KSATinstance(KSATinstance&& other) = default;
    
    KSATinstance& operator=(const KSATinstance& other) = default;
    KSATinstance& operator=(KSATinstance&& other) = default;
    
    void addClause(const CLAUSE& clause);
    void addClause(CLAUSE&& clause);
    
    const std::vector<CLAUSE>& getClauses() const;
private:
    
    std::vector<CLAUSE> clauses;
};

}

#endif // KSATINSTANCE_H
