umya-spreadsheet 2.3.3

umya-spreadsheet is a library written in pure Rust to read and write xlsx file.
Documentation
use crate::helper::coordinate::*;
use crate::traits::AdjustmentValue;

#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub struct ColumnReference {
    num: u32,
    is_lock: bool,
}

impl Default for ColumnReference {
    #[inline]
    fn default() -> Self {
        Self {
            num: 1,
            is_lock: false,
        }
    }
}

impl ColumnReference {
    #[inline]
    pub fn get_num(&self) -> &u32 {
        &self.num
    }

    #[inline]
    pub fn set_num(&mut self, value: u32) -> &mut Self {
        self.num = value;
        self
    }

    #[inline]
    pub(crate) fn offset_num(&mut self, value: i32) -> &mut Self {
        if value > 0 {
            self.plus_num(value as u32);
        }
        if value < 0 {
            self.minus_num(-value as u32);
        }
        self
    }

    #[inline]
    pub(crate) fn plus_num(&mut self, value: u32) -> &mut Self {
        self.num += value;
        self
    }

    #[inline]
    pub(crate) fn minus_num(&mut self, value: u32) -> &mut Self {
        self.num -= value;
        self
    }

    #[inline]
    pub fn get_is_lock(&self) -> &bool {
        &self.is_lock
    }

    #[inline]
    pub fn set_is_lock(&mut self, value: bool) -> &mut Self {
        self.is_lock = value;
        self
    }

    #[inline]
    pub fn set_is_lock_usize(&mut self, value: u32) -> &mut Self {
        self.is_lock = value == 1;
        self
    }

    #[inline]
    pub(crate) fn get_coordinate(&self) -> String {
        format!(
            "{}{}",
            if self.is_lock { "$" } else { "" },
            string_from_column_index(&self.num),
        )
    }
}
impl AdjustmentValue for ColumnReference {
    #[inline]
    fn adjustment_insert_value(&mut self, root_num: &u32, offset_num: &u32) {
        self.num = adjustment_insert_coordinate(&self.num, root_num, offset_num);
    }

    #[inline]
    fn adjustment_remove_value(&mut self, root_num: &u32, offset_num: &u32) {
        self.num = adjustment_remove_coordinate(&self.num, root_num, offset_num);
    }

    #[inline]
    fn is_remove_value(&self, root_num: &u32, offset_num: &u32) -> bool {
        is_remove_coordinate(&self.num, root_num, offset_num)
    }
}