Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagesmc
Path: blob/master/src/sage/sat/solvers/cryptominisat/cryptominisat_helper.h
8823 views
1
/**
2
* Cython does not properly handly const constructions, hence we use
3
* this rather ugly workaround to call get_sorted_learnts
4
*/
5
6
#include "memory.h"
7
8
uint32_t ** get_sorted_learnts_helper(CMSat::Solver* solver, uint32_t *num) {
9
const CMSat::vec<CMSat::Clause *>& learnt = solver->get_sorted_learnts();
10
*num = learnt.size();
11
uint32_t **ret = (uint32_t**)sage_malloc(sizeof(uint32_t*)* learnt.size());
12
for(size_t i=0; i<learnt.size(); i++) {
13
CMSat::Clause *clause = learnt[i];
14
ret[i] = (uint32_t*)sage_malloc(sizeof(uint32_t)*(clause->size()+1));
15
ret[i][0] = clause->size();
16
for(size_t j=0; j<clause->size(); j++) {
17
ret[i][j+1] = (*clause)[j].toInt();
18
}
19
}
20
return ret;
21
}
22
23
24
uint32_t * get_unitary_learnts_helper(CMSat::Solver* solver, uint32_t *num) {
25
const CMSat::vec<CMSat::Lit> learnt = solver->get_unitary_learnts();
26
*num = learnt.size();
27
uint32_t *ret = (uint32_t*)sage_malloc(sizeof(uint32_t) * learnt.size());
28
for(size_t i=0; i<learnt.size(); i++) {
29
ret[i] = learnt[i].toInt();
30
}
31
return ret;
32
}
33
34
35