Crate cudd_sys[][src]

Expand description

This crate provides unsafe Rust bindings for the University of Colorado decision diagram package (CUDD), including the DDDMP serialisation library. It uses version 3.0.0 of CUDD available from the unofficial Github mirror and compiles on Linux and MacOS (you should be also able to build CUDD on Windows using cygwin, but the project is not set-up to do it automatically).

On Linux and macOS, you should ideally have autoconf, automake and libtool installed to build CUDD. And of course, some C/C++ compiler (clang, gcc, etc.).

In the root module, you will find declarations of the C structs and types used throughout CUDD. The main API of the CUDD package is then exported in ::cudd. However, CUDD also includes other “public” functionality (multiway-branching trees, extended double precision numbers, serialisation, …) which can be found in the remaining modules.

In some cases, there are macro and constant definitions which cannot be directly exported to Rust. These have been re-implemented and should have their own documentation. For the functions which are re-exported without change, please refer to the original CUDD doxygen and manual. The documentation of the DDDMP library is available here.

Completeness: The main CUDD API should be fully reproduced here (except for one small issue with f128 numbers). The remaining modules may still be incomplete: if you need a function that isn’t exported yet, let us know in the issues.

Correctness: Unfortunately, CUDD cannot be processed using bindgen, so the API was reproduced using a semi-automated method with a manual validation step (bunch of regexes that a human makes sure didn’t break anything ;)). As such, it is possible that there are some minor problems that need to be sorted out. Please file an issue if you see any unexpected behaviour or segfaults.

Modules

Contains the declarations present in cudd.h (main CUDD API).

Declarations from dddmp.h (serialisation of decision diagrams).

Contains the declarations present in epd.h (extended double precision numbers).

Contains the declarations present in mtr.h (multiway-branching trees).

Structs

An opaque C struct used to represent the CUDD generator.

An opaque C struct used to represent the CUDD manager.

An opaque C struct used to represent the decision diagram node.

An opaque C struct used to represent the result of the computation of two-literal clauses.

An opaque C struct representing an extended double precision floating point number.

An opaque C struct representing a multi-way branch tree node.

Type Definitions

The type of an arbitrary precision “digit”.

The type of an arbitrary precision integer, corresponding to an array of digits.

A const-qualified version of DdApaNumber.