[package] name = "oxidd" version = "0.9.0" edition = "2021" description = "A safe, concurrent, modular, and performant decision diagram framework." readme = "../../README.md" keywords = ["decision-diagrams", "bdd", "zbdd", "zdd"] categories = ["data-structures", "mathematics", "science"] authors.workspace = true license.workspace = true homepage.workspace = true repository.workspace = true [dependencies] oxidd-core.workspace = true oxidd-manager-index = { workspace = true, optional = true } oxidd-manager-pointer = { workspace = true, optional = true } oxidd-cache = { workspace = true, features = ["hugealloc"], optional = true } oxidd-derive.workspace = true oxidd-dump.workspace = true oxidd-reorder.workspace = true oxidd-rules-bdd = { workspace = true, optional = true } oxidd-rules-mtbdd = { workspace = true, optional = true } oxidd-rules-tdd = { workspace = true, optional = true } oxidd-rules-zbdd = { workspace = true, optional = true } # fast hash function # # Note that there is a performance regression with 2.0, see # https://github.com/rust-lang/rustc-hash/issues/45 rustc-hash = "1.1" cfg-if = "1.0" # document feature flags document-features = "0.2" [features] default = [ "manager-index", "bdd", "bcdd", "mtbdd", "zbdd", "multi-threading", "apply-cache-direct-mapped", ] ## Enable the simple BDD implementation bdd = ["dep:oxidd-rules-bdd", "oxidd-rules-bdd/simple"] ## Enable the complement edge BDD implementation bcdd = ["dep:oxidd-rules-bdd", "oxidd-rules-bdd/complement-edge"] ## Enable the MTBDD implementation mtbdd = ["dep:oxidd-rules-mtbdd"] ## Enable the TDD implementation tdd = ["dep:oxidd-rules-tdd"] ## Enable the ZBDD implementation zbdd = ["dep:oxidd-rules-zbdd"] ## Use multi-threaded implementations of the apply algorithm multi-threading = [ "oxidd-rules-bdd?/multi-threading", "oxidd-rules-mtbdd?/multi-threading", "oxidd-rules-tdd?/multi-threading", "oxidd-rules-zbdd?/multi-threading", ] ## Use the index-based manager implementation ## ## This implementation is generally faster than the pointer-based ## implementation, but is more restricted: There is no possibility to reserve ## space for more nodes after the initial allocation and the total number of ## nodes is limited to 2³² nodes for BDDs/ZBDDs, or 2³¹ nodes for BCDDs. manager-index = ["dep:oxidd-manager-index"] ## Use the pointer-based manager implementation (suitable for BDDs/ZBDDs with ## more than 2³² nodes, or BCDDs with more than 2³¹ nodes) ## ## If both `manager-index` and `manager-pointer` are specified, the ## pointer-based implementation will be used. manager-pointer = ["dep:oxidd-manager-pointer"] ## Enable the direct mapped apply cache apply-cache-direct-mapped = ["dep:oxidd-cache", "oxidd-cache/direct"] ## Enable statistics (will harm performance) statistics = [ "oxidd-rules-bdd?/statistics", "oxidd-rules-mtbdd?/statistics", "oxidd-rules-tdd?/statistics", "oxidd-rules-zbdd?/statistics", "oxidd-manager-index?/statistics", ] [[example]] name = "tdd" required-features = ["tdd"] [[example]] name = "mtbdd" required-features = ["mtbdd"] [[example]] name = "zbdd" required-features = ["zbdd"]