extern crate alloc;
mod holes;
mod types;
pub use holes::*;
pub use types::*;
use alloc::string::String;
use alloc::vec::Vec;
pub struct Sparse;
impl Sparse {
pub fn is_sparse(dataset: &str, object_id: u64) -> Result<bool, SparseError> {
let info = get_sparse_info(dataset, object_id)?;
Ok(info.is_sparse)
}
pub fn info(dataset: &str, object_id: u64) -> Result<SparseInfo, SparseError> {
get_sparse_info(dataset, object_id)
}
pub fn holes(dataset: &str, object_id: u64) -> Result<Vec<HoleRegion>, SparseError> {
get_holes(dataset, object_id)
}
pub fn data_regions(dataset: &str, object_id: u64) -> Result<Vec<DataRegion>, SparseError> {
get_data_regions(dataset, object_id)
}
pub fn punch_hole(
dataset: &str,
object_id: u64,
offset: u64,
length: u64,
) -> Result<(), SparseError> {
punch_hole_impl(dataset, object_id, offset, length)
}
pub fn zero_range(
dataset: &str,
object_id: u64,
offset: u64,
length: u64,
) -> Result<(), SparseError> {
zero_range_impl(dataset, object_id, offset, length)
}
pub fn make_sparse(dataset: &str, object_id: u64) -> Result<SparsifyResult, SparseError> {
sparsify_file(dataset, object_id)
}
pub fn make_dense(dataset: &str, object_id: u64) -> Result<DensifyResult, SparseError> {
densify_file(dataset, object_id)
}
pub fn seek_data(dataset: &str, object_id: u64, offset: u64) -> Result<u64, SparseError> {
seek_data_impl(dataset, object_id, offset)
}
pub fn seek_hole(dataset: &str, object_id: u64, offset: u64) -> Result<u64, SparseError> {
seek_hole_impl(dataset, object_id, offset)
}
pub fn preallocate(
dataset: &str,
object_id: u64,
offset: u64,
length: u64,
) -> Result<(), SparseError> {
preallocate_impl(dataset, object_id, offset, length)
}
pub fn space_savings(dataset: &str, object_id: u64) -> Result<SpaceSavings, SparseError> {
calculate_space_savings(dataset, object_id)
}
pub fn copy_sparse(
src_dataset: &str,
src_id: u64,
dst_dataset: &str,
dst_path: &str,
) -> Result<u64, SparseError> {
copy_sparse_impl(src_dataset, src_id, dst_dataset, dst_path)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_sparse_api() {
}
}