diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-18 02:49:50 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-18 02:49:50 +0000 |
commit | 9835e2ae736235810b4ea1c162ca5e65c547e770 (patch) | |
tree | 3fcebf40ed70e581d776a8a4c65923e8ec20e026 /vendor/varisat-checker/src/context.rs | |
parent | Releasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff) | |
download | rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip |
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/varisat-checker/src/context.rs')
-rw-r--r-- | vendor/varisat-checker/src/context.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/vendor/varisat-checker/src/context.rs b/vendor/varisat-checker/src/context.rs new file mode 100644 index 000000000..5cd7e807b --- /dev/null +++ b/vendor/varisat-checker/src/context.rs @@ -0,0 +1,46 @@ +//! Central checker data structure. +use partial_ref::{part, PartialRefTarget}; + +use crate::{ + clauses::Clauses, hash::ClauseHasher, processing::Processing, rup::RupCheck, + state::CheckerState, tmp::TmpData, variables::Variables, +}; + +/// Part declarations for the [`Context`] struct. +pub mod parts { + use super::*; + + part!(pub CheckerStateP: CheckerState); + part!(pub ClauseHasherP: ClauseHasher); + part!(pub ClausesP: Clauses); + part!(pub ProcessingP<'a>: Processing<'a>); + part!(pub RupCheckP: RupCheck); + part!(pub TmpDataP: TmpData); + part!(pub VariablesP: Variables); +} + +use parts::*; + +/// Central checker data structure. +/// +/// This struct contains all data kept by the checker. Most functions operating on multiple fields +/// of the context use partial references provided by the `partial_ref` crate. This documents the +/// data dependencies and makes the borrow checker happy without the overhead of passing individual +/// references. +#[derive(PartialRefTarget, Default)] +pub struct Context<'a> { + #[part(CheckerStateP)] + pub checker_state: CheckerState, + #[part(ClauseHasherP)] + pub clause_hasher: ClauseHasher, + #[part(ClausesP)] + pub clauses: Clauses, + #[part(ProcessingP<'a>)] + pub processing: Processing<'a>, + #[part(RupCheckP)] + pub rup_check: RupCheck, + #[part(TmpDataP)] + pub tmp_data: TmpData, + #[part(VariablesP)] + pub variables: Variables, +} |