use super::BooleanClippingProcessor;
use crate::diagnostics::{BoolFailure, BoolFailureReason, BoolOp};
impl BooleanClippingProcessor {
pub fn take_failures(&self) -> Vec<BoolFailure> {
std::mem::take(&mut *self.failures.borrow_mut())
}
pub(super) fn record_failure(&self, op: BoolOp, reason: BoolFailureReason) {
self.failures.borrow_mut().push(BoolFailure::new(op, reason));
}
pub(super) fn absorb_failures(&self, failures: Vec<BoolFailure>) {
self.failures.borrow_mut().extend(failures);
}
pub(super) fn failure_mark(&self) -> usize {
self.failures.borrow().len()
}
pub(super) fn rewind_to(&self, mark: usize) {
self.failures.borrow_mut().truncate(mark);
}
pub(super) fn defer_after(&self, mark: usize) -> crate::Result<Option<crate::Mesh>> {
self.rewind_to(mark);
Ok(None)
}
pub(super) fn record_empty_second_operand(&self, op: BoolOp, already_recorded: bool) {
if !already_recorded {
self.record_failure(op, BoolFailureReason::EmptyOperand);
}
}
}