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
andlibtool
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.