#![doc = document_features::document_features!()]
#![deny(unsafe_op_in_unsafe_fn)]
#![allow(clippy::upper_case_acronyms)]
#![warn(missing_docs)]
#[cfg(not(any(feature = "manager-index", feature = "manager-pointer")))]
std::compile_error!(
"Either feature `manager-index` or `manager-pointer` must be enabled for this crate"
);
pub use oxidd_core::error;
pub use oxidd_core::function::{
BooleanFunction, BooleanFunctionQuant, BooleanOperator, BooleanVecSet, Function, FunctionSubst,
NumberBase, PseudoBooleanFunction, TVLFunction,
};
pub use oxidd_core::util::{Subst, Substitution};
pub use oxidd_core::{
Edge, HasLevel, HasWorkers, InnerNode, LevelNo, Manager, ManagerRef, Node, NodeID, VarNo,
WorkerPool,
};
pub mod util;
#[cfg(feature = "bcdd")]
pub mod bcdd;
#[cfg(feature = "bdd")]
pub mod bdd;
#[cfg(feature = "mtbdd")]
pub mod mtbdd;
#[cfg(feature = "tdd")]
pub mod tdd;
#[cfg(feature = "zbdd")]
pub mod zbdd;
#[doc(hidden)]
pub trait RawFunction {
fn into_raw(self) -> (*const std::ffi::c_void, usize);
unsafe fn from_raw(ptr: *const std::ffi::c_void, index: usize) -> Self;
}
#[doc(hidden)]
pub trait RawManagerRef {
fn into_raw(self) -> *const std::ffi::c_void;
unsafe fn from_raw(raw: *const std::ffi::c_void) -> Self;
}
#[cfg(all(feature = "manager-pointer", not(miri)))]
const PAGE_SIZE: usize = 2 * 1024 * 1024;
#[cfg(all(feature = "manager-pointer", miri))]
const PAGE_SIZE: usize = 4 * 1024;