CAL 3.0.0
Switch from outdated GNU build system files to CMake.
C
Bug Fixes / Clean Up
- Fix Segmentation Fault on
Cal_BddManagerQuit()
. In short, the code was set up to allocate withmalloc
orvalloc
. Yet, only thevalloc
version was maintained. Hence, themalloc
version has been removed entirely. Yet,valloc
is deprecated and hence has been replaced with the C11aligned_alloc
. - The value
LG_PAGE_SIZE
is now derived as part of the pre-processor. That is, you only have to parsePAGE_SIZE
as part of the compilation, not also compute its logarithm. - Removed the
dynamicReorderingEnableFlag
value to simplify logic for running reordering; the prior version seems to be asking for bugs to be introduced.
Features
- Implements
Cal_BddNull()
. This was mentioned in the documentation but not implemented. All null creation in the code base has also been replaced with this one to improve code clarity.
C++
Features
-
Adds a C++ header-only (and hence zero-overhead) wrapper for CAL in
<calObj.hh>
similar to the one of CUDD.- Provides the
Cal
object to provide single ownership semantics of theCal_BddManager
. - Provides the
BDD
class to hide reference counting with RAII.
Both classes also provide access to the BDD operations (
Cal
with prefix-notation andBDD
with infix-notation). Operations that depend on theCal_BddManager
's state, i.e.Exists
andRelProd
, are only provided byCal
. - Provides the
Documentation
The documentation of the public API has been moved from the many implementation file directly into the C and C++ API header files. This way, you have the documentation available directly in your editor. Furthermore, the entire documentation has been replaced with one generated by Doxygen.