Path: blob/master/src/sage/sat/solvers/cryptominisat/cryptominisat_helper.h
8823 views
/**1* Cython does not properly handly const constructions, hence we use2* this rather ugly workaround to call get_sorted_learnts3*/45#include "memory.h"67uint32_t ** get_sorted_learnts_helper(CMSat::Solver* solver, uint32_t *num) {8const CMSat::vec<CMSat::Clause *>& learnt = solver->get_sorted_learnts();9*num = learnt.size();10uint32_t **ret = (uint32_t**)sage_malloc(sizeof(uint32_t*)* learnt.size());11for(size_t i=0; i<learnt.size(); i++) {12CMSat::Clause *clause = learnt[i];13ret[i] = (uint32_t*)sage_malloc(sizeof(uint32_t)*(clause->size()+1));14ret[i][0] = clause->size();15for(size_t j=0; j<clause->size(); j++) {16ret[i][j+1] = (*clause)[j].toInt();17}18}19return ret;20}212223uint32_t * get_unitary_learnts_helper(CMSat::Solver* solver, uint32_t *num) {24const CMSat::vec<CMSat::Lit> learnt = solver->get_unitary_learnts();25*num = learnt.size();26uint32_t *ret = (uint32_t*)sage_malloc(sizeof(uint32_t) * learnt.size());27for(size_t i=0; i<learnt.size(); i++) {28ret[i] = learnt[i].toInt();29}30return ret;31}32333435