summaryrefslogtreecommitdiffstats
path: root/vendor/varisat-checker/src/context.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /vendor/varisat-checker/src/context.rs
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-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.rs46
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,
+}