pblib-rs 0.1.0

Rust safe bindings for pblib
Documentation
#ifndef __CPBLIB_H
#define __CPBLIB_H

#include <stdint.h>
#include <vector>

#include "pblib/pb2cnf.h"

#ifdef __cplusplus
extern "C"
{
#endif

    typedef struct CPB2CNF CPB2CNF;

    CPB2CNF* newPB2CNF();

    int32_t* encodeLeq(
        CPB2CNF* cpb2cnf,
        int64_t* weights,
        int32_t weights_len,
        int32_t* literals,
        int32_t literals_len,
        int64_t leq,
        int32_t firstAuxiliaryVariable
    );

    int32_t* encodeGeq(
        CPB2CNF* cpb2cnf,
        int64_t* weights,
        int32_t weights_len,
        int32_t* literals,
        int32_t literals_len,
        int64_t geq,
        int32_t firstAuxiliaryVariable
    );

    int32_t* encodeBoth(
        CPB2CNF* cpb2cnf,
        int64_t* weights,
        int32_t weights_len,
        int32_t* literals,
        int32_t literals_len,
        int64_t leq,
        int64_t geq,
        int32_t firstAuxiliaryVariable
    );

    int32_t* encodeAtMostK(
        CPB2CNF* cpb2cnf,
        int32_t* literals,
        int32_t literals_len,
        int64_t k,
        int32_t firstAuxiliaryVariable
    );

    int32_t* encodeAtLeastK(
        CPB2CNF* cpb2cnf,
        int32_t* literals,
        int32_t literals_len,
        int64_t k,
        int32_t firstAuxiliaryVariable
    );

    void deletePB2CNF(CPB2CNF* cpb2cnf);

    void freePtr(int32_t* ptr);

#ifdef __cplusplus
}
#endif
#endif