macro_rules! setters {
($t:ident $(<$lt:lifetime>)? { $($body:tt)* }) => {
impl$(<$lt>)? $t$(<$lt>)? {
setters!(@items $t; $($body)*);
}
};
(@items $t:ident; ) => {};
(@items $t:ident; $set:ident : $field:ident ? $fty:ty, $($rest:tt)*) => {
#[doc = concat!("Sets [`", stringify!($field), "`](", stringify!($t), "::", stringify!($field), ").")]
#[must_use]
pub fn $set(mut self, value: $fty) -> Self {
self.$field = Some(value);
self
}
setters!(@items $t; $($rest)*);
};
(@items $t:ident; $set:ident : $field:ident : $fty:ty, $($rest:tt)*) => {
#[doc = concat!("Sets [`", stringify!($field), "`](", stringify!($t), "::", stringify!($field), ").")]
#[must_use]
pub fn $set(mut self, value: $fty) -> Self {
self.$field = value;
self
}
setters!(@items $t; $($rest)*);
};
}
#[cfg(feature = "check")]
pub mod check;
pub mod engine;
#[cfg(feature = "eqsat")]
pub mod eqsat;
mod error;
mod expr;
pub mod ext;
mod facts;
pub mod fp;
mod hash;
mod invert;
pub mod lift;
#[cfg(feature = "mba")]
pub mod mba;
pub mod memory;
mod ops;
#[cfg(feature = "prove")]
pub mod prove;
pub mod rules;
#[cfg(feature = "smtlib")]
pub mod smtlib;
#[cfg(feature = "prove")]
pub mod synth;
#[cfg(test)]
mod testutil;
#[cfg(feature = "prove")]
pub mod transform;
#[cfg(doctest)]
mod book {
#[doc = include_str!("../../README.md")]
struct Readme;
#[doc = include_str!("../../book/src/getting-started.md")]
struct GettingStarted;
#[doc = include_str!("../../book/src/semantics.md")]
struct Semantics;
#[doc = include_str!("../../book/src/floating-point.md")]
struct FloatingPoint;
#[doc = include_str!("../../book/src/facts.md")]
struct Facts;
#[doc = include_str!("../../book/src/constraints.md")]
struct Constraints;
#[doc = include_str!("../../book/src/extensions.md")]
struct Extensions;
#[doc = include_str!("../../book/src/memory.md")]
struct MemoryChapter;
#[cfg(feature = "mba")]
#[doc = include_str!("../../book/src/lifting.md")]
struct Lifting;
#[doc = include_str!("../../book/src/simplifying.md")]
struct Simplifying;
#[cfg(feature = "check")]
#[doc = include_str!("../../book/src/rules.md")]
struct Rules;
#[cfg(feature = "check")]
#[doc = include_str!("../../book/src/checking.md")]
struct Checking;
#[cfg(feature = "prove")]
#[doc = include_str!("../../book/src/transformations.md")]
struct Transformations;
#[cfg(feature = "mba")]
#[doc = include_str!("../../book/src/deobfuscation.md")]
struct Deobfuscation;
#[doc = include_str!("../../book/src/invertibility.md")]
struct Invertibility;
#[cfg(feature = "eqsat")]
#[doc = include_str!("../../book/src/eqsat.md")]
struct Eqsat;
#[cfg(feature = "smtlib")]
#[doc = include_str!("../../book/src/smtlib.md")]
struct Smtlib;
#[cfg(all(feature = "check", feature = "mba", feature = "smtlib"))]
#[doc = include_str!("../../book/src/examples.md")]
struct Examples;
#[doc = include_str!("../../book/src/stability.md")]
struct Stability;
}
pub mod text;
mod value;
pub use error::{Error, ParseError, ValueError, WidthError};
pub use expr::traps;
pub use expr::{
ArenaCounters, Bounded, Context, ContextConfig, Env, Expr, ExprMap, ExprSet, FnEnv, Mark,
Substitution, SymbolId, SymbolKey, View,
};
pub use facts::{
Assumptions, ConstraintId, Facts, KnownBits, Proof, Query, Reliance, SRange, Truth, URange,
};
pub use fp::{FpFormat, RoundingMode};
pub use ops::{BinOp, CmpOp, CmpOpExt, UnOp};
pub use text::{ParseOptions, PrintOptions};
pub use value::{BitVec, Width};