#ifndef BSON2KSAT_CONVERTER_H #define BSON2KSAT_CONVERTER_H #include "bsoncxx/document/view.hpp" #include "bsoncxx/array/view.hpp" #include "bsoncxx/types.hpp" #include "util/convert.h" #include "util/ksatinstance.h" #include "util/bson2ksatClauseConverter.h" namespace satlab { namespace types { template KSATinstance convert(const bsoncxx::document::view& docView) { using CLAUSE = KSATinstance::CLAUSE; using CLAUSE_DOC = const bsoncxx::array::element&; KSATinstance ksat; bsoncxx::array::view clauses = docView["clauses"].get_array(); for(auto clause : clauses) { ksat.addClause(convert(clause)); } return ksat; } } /* using BSON2KSAT_CONVERTER = Converter; template<> class Converter { public: KSATinstance convert(const bsoncxx::document::view& docView); private: BSON2KSATCLAUSE_CONVERTER clauseConverter; }; KSATinstance BSON2KSAT_CONVERTER::convert(const bsoncxx::document::view& docView) { KSATinstance ksat; bsoncxx::array::view clauses = docView["clauses"].get_array(); for(auto clause : clauses) { ksat.addClause(clauseConverter.convert(clause)); } return ksat; } */ } #endif // BSON2KSAT_CONVERTER_H