use crate::hl::plist::file_access::FileAccess;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LinkAccess {
max_link_traversals: usize,
external_link_prefix: Option<String>,
external_link_access: FileAccess,
external_link_acc_flags: u32,
external_link_callback: bool,
external_link_file_cache_size: usize,
}
impl Default for LinkAccess {
fn default() -> Self {
Self {
max_link_traversals: 40,
external_link_prefix: None,
external_link_access: FileAccess::default(),
external_link_acc_flags: 0,
external_link_callback: false,
external_link_file_cache_size: 0,
}
}
}
impl LinkAccess {
pub fn new() -> Self {
Self::default()
}
pub fn nlinks(&self) -> usize {
self.max_link_traversals
}
pub fn set_nlinks(&mut self, nlinks: usize) {
self.max_link_traversals = nlinks;
}
pub fn elink_prefix(&self) -> Option<&str> {
self.external_link_prefix.as_deref()
}
pub fn set_elink_prefix<S: Into<String>>(&mut self, prefix: Option<S>) {
self.external_link_prefix = prefix.map(Into::into);
}
pub fn elink_fapl(&self) -> &FileAccess {
&self.external_link_access
}
pub fn set_elink_fapl(&mut self, fapl: FileAccess) {
self.external_link_access = fapl;
}
pub fn elink_acc_flags(&self) -> u32 {
self.external_link_acc_flags
}
pub fn set_elink_acc_flags(&mut self, flags: u32) {
self.external_link_acc_flags = flags;
}
pub fn elink_cb(&self) -> Option<()> {
self.external_link_callback.then_some(())
}
pub fn set_elink_cb(&mut self, installed: bool) {
self.external_link_callback = installed;
}
pub fn elink_file_cache_size(&self) -> usize {
self.external_link_file_cache_size
}
pub fn set_elink_file_cache_size(&mut self, size: usize) {
self.external_link_file_cache_size = size;
}
}