use std::collections::VecDeque;
use gix_object::bstr::{BStr, BString};
pub trait Visit {
fn pop_back_tracked_path_and_set_current(&mut self);
fn pop_front_tracked_path_and_set_current(&mut self);
fn push_back_tracked_path_component(&mut self, component: &BStr);
fn push_path_component(&mut self, component: &BStr);
fn pop_path_component(&mut self);
fn visit_tree(&mut self, entry: &gix_object::tree::EntryRef<'_>) -> visit::Action;
fn visit_nontree(&mut self, entry: &gix_object::tree::EntryRef<'_>) -> visit::Action;
}
#[derive(Clone, Debug)]
pub struct Recorder {
path_deque: VecDeque<BString>,
path: BString,
location: Option<recorder::Location>,
pub records: Vec<recorder::Entry>,
}
pub mod visit {
pub type Action = std::ops::ControlFlow<(), bool>;
}
pub mod recorder;
pub mod breadthfirst;
pub use breadthfirst::function::breadthfirst;
pub mod depthfirst;
pub use depthfirst::function::depthfirst;